From 1d42fb12154fa13f5eec83bbe9fda3a868a0c2ad Mon Sep 17 00:00:00 2001 From: Liang Ding Date: Thu, 16 May 2019 09:47:09 +0800 Subject: [PATCH] =?UTF-8?q?:heavy=5Fminus=5Fsign:=20=E5=8E=BB=E6=8E=89=20v?= =?UTF-8?q?endor?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- vendor/github.com/b3log/wide/Dockerfile | 13 - vendor/github.com/b3log/wide/LICENSE | 201 - vendor/github.com/b3log/wide/README.md | 180 - vendor/github.com/b3log/wide/TERMS.md | 4 - vendor/github.com/b3log/wide/coverage.sh | 24 - vendor/github.com/b3log/wide/gulpfile.js | 135 - vendor/github.com/b3log/wide/header.exe | Bin 3235840 -> 0 bytes vendor/github.com/b3log/wide/main.go | 483 - vendor/github.com/b3log/wide/package.json | 33 - vendor/github.com/b3log/wide/pkg.sh | 80 - vendor/github.com/b3log/wide/yarn.lock | 1341 - vendor/github.com/bradfitz/goimports/LICENSE | 27 - vendor/github.com/bradfitz/goimports/README | 17 - .../bradfitz/goimports/goimports.go | 195 - .../github.com/go-fsnotify/fsnotify/AUTHORS | 34 - .../go-fsnotify/fsnotify/CHANGELOG.md | 263 - .../go-fsnotify/fsnotify/CONTRIBUTING.md | 77 - .../github.com/go-fsnotify/fsnotify/LICENSE | 28 - .../go-fsnotify/fsnotify/NotUsed.xcworkspace | 0 .../github.com/go-fsnotify/fsnotify/README.md | 64 - .../go-fsnotify/fsnotify/circle.yml | 26 - .../go-fsnotify/fsnotify/fsnotify.go | 62 - .../go-fsnotify/fsnotify/inotify.go | 306 - .../go-fsnotify/fsnotify/inotify_poller.go | 186 - .../github.com/go-fsnotify/fsnotify/kqueue.go | 463 - .../go-fsnotify/fsnotify/open_mode_bsd.go | 11 - .../go-fsnotify/fsnotify/open_mode_darwin.go | 12 - .../go-fsnotify/fsnotify/windows.go | 561 - vendor/github.com/gorilla/context/LICENSE | 27 - vendor/github.com/gorilla/context/README.md | 7 - vendor/github.com/gorilla/context/context.go | 143 - vendor/github.com/gorilla/context/doc.go | 82 - .../github.com/gorilla/securecookie/LICENSE | 27 - .../github.com/gorilla/securecookie/README.md | 3 - vendor/github.com/gorilla/securecookie/doc.go | 61 - .../gorilla/securecookie/securecookie.go | 429 - vendor/github.com/gorilla/sessions/LICENSE | 27 - vendor/github.com/gorilla/sessions/README.md | 20 - vendor/github.com/gorilla/sessions/doc.go | 168 - .../github.com/gorilla/sessions/sessions.go | 234 - vendor/github.com/gorilla/sessions/store.go | 236 - vendor/github.com/gorilla/websocket/AUTHORS | 8 - vendor/github.com/gorilla/websocket/LICENSE | 22 - vendor/github.com/gorilla/websocket/README.md | 59 - vendor/github.com/gorilla/websocket/client.go | 269 - vendor/github.com/gorilla/websocket/conn.go | 825 - vendor/github.com/gorilla/websocket/doc.go | 148 - vendor/github.com/gorilla/websocket/json.go | 57 - vendor/github.com/gorilla/websocket/server.go | 247 - vendor/github.com/gorilla/websocket/util.go | 44 - vendor/github.com/kr/pty/License | 23 - vendor/github.com/kr/pty/README.md | 36 - vendor/github.com/kr/pty/doc.go | 16 - vendor/github.com/kr/pty/ioctl.go | 13 - vendor/github.com/kr/pty/ioctl_bsd.go | 39 - vendor/github.com/kr/pty/mktypes.bash | 19 - vendor/github.com/kr/pty/pty_darwin.go | 60 - vendor/github.com/kr/pty/pty_dragonfly.go | 76 - vendor/github.com/kr/pty/pty_freebsd.go | 73 - vendor/github.com/kr/pty/pty_linux.go | 46 - vendor/github.com/kr/pty/pty_unsupported.go | 11 - vendor/github.com/kr/pty/run.go | 34 - vendor/github.com/kr/pty/util.go | 37 - vendor/github.com/kr/pty/ztypes_386.go | 9 - vendor/github.com/kr/pty/ztypes_amd64.go | 9 - vendor/github.com/kr/pty/ztypes_arm.go | 9 - vendor/github.com/kr/pty/ztypes_arm64.go | 11 - .../kr/pty/ztypes_dragonfly_amd64.go | 14 - .../github.com/kr/pty/ztypes_freebsd_386.go | 13 - .../github.com/kr/pty/ztypes_freebsd_amd64.go | 14 - .../github.com/kr/pty/ztypes_freebsd_arm.go | 13 - vendor/github.com/kr/pty/ztypes_mipsx.go | 12 - vendor/github.com/kr/pty/ztypes_ppc64.go | 11 - vendor/github.com/kr/pty/ztypes_ppc64le.go | 11 - vendor/github.com/kr/pty/ztypes_s390x.go | 11 - vendor/github.com/nsf/gocode/LICENSE | 19 - vendor/github.com/nsf/gocode/README.md | 211 - .../nsf/gocode/autocompletecontext.go | 808 - .../github.com/nsf/gocode/autocompletefile.go | 420 - vendor/github.com/nsf/gocode/client.go | 188 - vendor/github.com/nsf/gocode/config.go | 240 - vendor/github.com/nsf/gocode/cursorcontext.go | 582 - vendor/github.com/nsf/gocode/decl.go | 1472 - vendor/github.com/nsf/gocode/declcache.go | 532 - vendor/github.com/nsf/gocode/formatters.go | 186 - vendor/github.com/nsf/gocode/gocode.go | 74 - vendor/github.com/nsf/gocode/os_posix.go | 48 - vendor/github.com/nsf/gocode/os_windows.go | 56 - vendor/github.com/nsf/gocode/package.go | 254 - vendor/github.com/nsf/gocode/package_bin.go | 829 - vendor/github.com/nsf/gocode/package_text.go | 678 - vendor/github.com/nsf/gocode/pre_go17.go | 7 - vendor/github.com/nsf/gocode/ripper.go | 141 - vendor/github.com/nsf/gocode/rpc.go | 162 - vendor/github.com/nsf/gocode/scope.go | 77 - vendor/github.com/nsf/gocode/server.go | 247 - .../nsf/gocode/type_alias_build_hack_18.go | 18 - .../nsf/gocode/type_alias_build_hack_19.go | 19 - vendor/github.com/nsf/gocode/utils.go | 296 - vendor/github.com/pmezard/go-difflib/LICENSE | 27 - .../pmezard/go-difflib/difflib/difflib.go | 772 - vendor/github.com/visualfc/gotools/LICENSE | 28 - vendor/github.com/visualfc/gotools/README.md | 28 - .../visualfc/gotools/astview/astdoc.go | 700 - .../visualfc/gotools/astview/astview.go | 408 - .../visualfc/gotools/command/command.go | 346 - .../visualfc/gotools/command/version.go | 33 - vendor/github.com/visualfc/gotools/doc.go | 8 - .../visualfc/gotools/docview/dirtrees.go | 352 - .../visualfc/gotools/docview/docview.go | 407 - .../visualfc/gotools/docview/docx.go | 668 - .../visualfc/gotools/docview/filesystem.go | 70 - .../visualfc/gotools/finddecl/finddecl.go | 135 - .../visualfc/gotools/finddoc/finddoc.go | 608 - .../visualfc/gotools/goapi/goapi.go | 3774 - .../visualfc/gotools/godiff/godiff.go | 64 - .../visualfc/gotools/gofmt/gofmt.go | 198 - .../visualfc/gotools/gopresent/gopresent.go | 383 - .../visualfc/gotools/gotest/gotest.go | 99 - .../visualfc/gotools/jsonfmt/jsonfmt.go | 206 - vendor/github.com/visualfc/gotools/main.go | 47 - .../visualfc/gotools/oracle/oracle.go | 103 - .../visualfc/gotools/oracle/oracle/TODO | 83 - .../visualfc/gotools/oracle/oracle/callees.go | 260 - .../visualfc/gotools/oracle/oracle/callers.go | 115 - .../gotools/oracle/oracle/callstack.go | 126 - .../gotools/oracle/oracle/definition.go | 78 - .../gotools/oracle/oracle/describe.go | 775 - .../gotools/oracle/oracle/describe15.go | 786 - .../gotools/oracle/oracle/freevars.go | 224 - .../gotools/oracle/oracle/implements.go | 354 - .../visualfc/gotools/oracle/oracle/oracle.go | 381 - .../visualfc/gotools/oracle/oracle/peers.go | 254 - .../gotools/oracle/oracle/pointsto.go | 293 - .../visualfc/gotools/oracle/oracle/pos.go | 143 - .../gotools/oracle/oracle/referrers.go | 243 - .../gotools/oracle/oracle/serial/serial.go | 258 - .../visualfc/gotools/oracle/oracle/what.go | 210 - .../gotools/oracle/oracle/whicherrs.go | 328 - .../github.com/visualfc/gotools/pkgs/pkgs.go | 379 - .../visualfc/gotools/pkgutil/pkgutil.go | 233 - .../visualfc/gotools/runcmd/runcmd.go | 87 - .../visualfc/gotools/stdlib/go13.go | 19 - .../visualfc/gotools/stdlib/go14.go | 19 - .../visualfc/gotools/stdlib/mkpkglist.go | 173 - .../visualfc/gotools/stdlib/mkstdlib.go | 99 - .../visualfc/gotools/stdlib/pkglist.go | 49 - .../visualfc/gotools/stdlib/zstdlib.go | 9442 --- .../visualfc/gotools/terminal/command.go | 33 - .../gotools/terminal/command_windows.go | 34 - .../visualfc/gotools/terminal/terminal.go | 39 - .../visualfc/gotools/types/types.go | 1279 - vendor/golang.org/x/text/LICENSE | 27 - vendor/golang.org/x/text/PATENTS | 22 - vendor/golang.org/x/text/encoding/encoding.go | 179 - .../text/encoding/internal/identifier/gen.go | 137 - .../internal/identifier/identifier.go | 80 - .../text/encoding/internal/identifier/mib.go | 1621 - .../x/text/encoding/internal/internal.go | 60 - .../x/text/encoding/simplifiedchinese/all.go | 12 - .../x/text/encoding/simplifiedchinese/gbk.go | 280 - .../encoding/simplifiedchinese/hzgb2312.go | 228 - .../encoding/simplifiedchinese/maketables.go | 161 - .../text/encoding/simplifiedchinese/tables.go | 43999 ----------- .../golang.org/x/text/transform/transform.go | 616 - vendor/golang.org/x/tools/.gitattributes | 10 - vendor/golang.org/x/tools/.gitignore | 2 - vendor/golang.org/x/tools/AUTHORS | 3 - vendor/golang.org/x/tools/CONTRIBUTING.md | 31 - vendor/golang.org/x/tools/CONTRIBUTORS | 3 - vendor/golang.org/x/tools/LICENSE | 27 - vendor/golang.org/x/tools/PATENTS | 22 - vendor/golang.org/x/tools/README.md | 27 - .../x/tools/benchmark/parse/parse.go | 131 - .../x/tools/benchmark/parse/parse_test.go | 154 - vendor/golang.org/x/tools/blog/atom/atom.go | 61 - vendor/golang.org/x/tools/blog/blog.go | 437 - .../x/tools/cmd/benchcmp/benchcmp.go | 184 - .../x/tools/cmd/benchcmp/benchcmp_test.go | 59 - .../x/tools/cmd/benchcmp/compare.go | 156 - .../x/tools/cmd/benchcmp/compare_test.go | 133 - vendor/golang.org/x/tools/cmd/benchcmp/doc.go | 37 - .../golang.org/x/tools/cmd/bundle/.gitignore | 1 - vendor/golang.org/x/tools/cmd/bundle/main.go | 468 - .../x/tools/cmd/bundle/main_test.go | 74 - .../x/tools/cmd/bundle/testdata/out.golden | 62 - .../testdata/src/domain.name/importdecl/p.go | 3 - .../cmd/bundle/testdata/src/initial/a.go | 27 - .../cmd/bundle/testdata/src/initial/b.go | 23 - .../cmd/bundle/testdata/src/initial/c.go | 12 - .../golang.org/x/tools/cmd/callgraph/main.go | 361 - .../x/tools/cmd/callgraph/main_test.go | 81 - .../cmd/callgraph/testdata/src/pkg/pkg.go | 25 - .../callgraph/testdata/src/pkg/pkg_test.go | 7 - .../x/tools/cmd/compilebench/main.go | 360 - vendor/golang.org/x/tools/cmd/cover/README | 2 - vendor/golang.org/x/tools/cmd/cover/cover.go | 722 - .../x/tools/cmd/cover/cover_test.go | 94 - vendor/golang.org/x/tools/cmd/cover/doc.go | 27 - vendor/golang.org/x/tools/cmd/cover/func.go | 166 - vendor/golang.org/x/tools/cmd/cover/html.go | 284 - .../x/tools/cmd/cover/testdata/main.go | 112 - .../x/tools/cmd/cover/testdata/test.go | 218 - .../golang.org/x/tools/cmd/digraph/digraph.go | 540 - .../x/tools/cmd/digraph/digraph_test.go | 121 - vendor/golang.org/x/tools/cmd/eg/eg.go | 150 - .../golang.org/x/tools/cmd/fiximports/main.go | 511 - .../x/tools/cmd/fiximports/main_test.go | 243 - .../testdata/src/fruit.io/banana/banana.go | 7 - .../testdata/src/fruit.io/orange/orange.go | 3 - .../testdata/src/fruit.io/pear/pear.go | 3 - .../testdata/src/new.com/one/one.go | 1 - .../testdata/src/old.com/bad/bad.go | 2 - .../testdata/src/old.com/one/one.go | 1 - .../testdata/src/titanic.biz/bar/bar.go | 2 - .../testdata/src/titanic.biz/foo/foo.go | 2 - .../x/tools/cmd/getgo/.dockerignore | 5 - .../golang.org/x/tools/cmd/getgo/.gitignore | 3 - .../golang.org/x/tools/cmd/getgo/Dockerfile | 20 - vendor/golang.org/x/tools/cmd/getgo/LICENSE | 27 - vendor/golang.org/x/tools/cmd/getgo/README.md | 71 - .../golang.org/x/tools/cmd/getgo/download.go | 184 - .../x/tools/cmd/getgo/download_test.go | 36 - vendor/golang.org/x/tools/cmd/getgo/main.go | 117 - .../golang.org/x/tools/cmd/getgo/main_test.go | 173 - vendor/golang.org/x/tools/cmd/getgo/make.bash | 13 - vendor/golang.org/x/tools/cmd/getgo/path.go | 155 - .../golang.org/x/tools/cmd/getgo/path_test.go | 58 - .../x/tools/cmd/getgo/server/README.md | 7 - .../x/tools/cmd/getgo/server/app.yaml | 7 - .../x/tools/cmd/getgo/server/main.go | 61 - vendor/golang.org/x/tools/cmd/getgo/steps.go | 133 - vendor/golang.org/x/tools/cmd/getgo/system.go | 38 - .../x/tools/cmd/getgo/system_unix.go | 55 - .../x/tools/cmd/getgo/system_windows.go | 86 - .../golang.org/x/tools/cmd/getgo/upload.bash | 19 - .../x/tools/cmd/go-contrib-init/contrib.go | 289 - .../tools/cmd/go-contrib-init/contrib_test.go | 35 - vendor/golang.org/x/tools/cmd/godex/doc.go | 69 - vendor/golang.org/x/tools/cmd/godex/gc.go | 13 - vendor/golang.org/x/tools/cmd/godex/gccgo.go | 34 - vendor/golang.org/x/tools/cmd/godex/godex.go | 211 - .../golang.org/x/tools/cmd/godex/isAlias18.go | 13 - .../golang.org/x/tools/cmd/godex/isAlias19.go | 13 - vendor/golang.org/x/tools/cmd/godex/print.go | 373 - vendor/golang.org/x/tools/cmd/godex/source.go | 19 - .../golang.org/x/tools/cmd/godex/writetype.go | 242 - .../x/tools/cmd/godoc/README.godoc-app | 56 - .../golang.org/x/tools/cmd/godoc/appinit.go | 82 - .../golang.org/x/tools/cmd/godoc/autocert.go | 77 - vendor/golang.org/x/tools/cmd/godoc/blog.go | 81 - .../golang.org/x/tools/cmd/godoc/codewalk.go | 523 - vendor/golang.org/x/tools/cmd/godoc/dl.go | 16 - vendor/golang.org/x/tools/cmd/godoc/doc.go | 153 - .../x/tools/cmd/godoc/godoc19_test.go | 9 - .../x/tools/cmd/godoc/godoc_test.go | 489 - .../golang.org/x/tools/cmd/godoc/handlers.go | 148 - vendor/golang.org/x/tools/cmd/godoc/index.go | 11 - vendor/golang.org/x/tools/cmd/godoc/main.go | 357 - vendor/golang.org/x/tools/cmd/godoc/play.go | 11 - .../x/tools/cmd/godoc/remotesearch.go | 72 - .../x/tools/cmd/godoc/setup-godoc-app.bash | 134 - vendor/golang.org/x/tools/cmd/godoc/x.go | 92 - .../golang.org/x/tools/cmd/goimports/doc.go | 45 - .../x/tools/cmd/goimports/goimports.go | 369 - .../x/tools/cmd/goimports/goimports_gc.go | 26 - .../x/tools/cmd/goimports/goimports_not_gc.go | 11 - vendor/golang.org/x/tools/cmd/gomvpkg/main.go | 94 - .../x/tools/cmd/gorename/cgo_test.go | 11 - .../x/tools/cmd/gorename/gorename_test.go | 380 - .../golang.org/x/tools/cmd/gorename/main.go | 55 - .../golang.org/x/tools/cmd/gotype/gotype.go | 341 - .../x/tools/cmd/gotype/sizesFor18.go | 40 - .../x/tools/cmd/gotype/sizesFor19.go | 15 - vendor/golang.org/x/tools/cmd/goyacc/doc.go | 70 - .../x/tools/cmd/goyacc/testdata/expr/README | 20 - .../x/tools/cmd/goyacc/testdata/expr/expr.y | 202 - .../x/tools/cmd/goyacc/testdata/expr/main.go | 14 - vendor/golang.org/x/tools/cmd/goyacc/yacc.go | 3591 - vendor/golang.org/x/tools/cmd/guru/callees.go | 257 - vendor/golang.org/x/tools/cmd/guru/callers.go | 195 - .../golang.org/x/tools/cmd/guru/callstack.go | 141 - .../golang.org/x/tools/cmd/guru/definition.go | 205 - .../golang.org/x/tools/cmd/guru/describe.go | 899 - .../golang.org/x/tools/cmd/guru/freevars.go | 223 - vendor/golang.org/x/tools/cmd/guru/guru.go | 401 - .../golang.org/x/tools/cmd/guru/guru_test.go | 329 - .../golang.org/x/tools/cmd/guru/implements.go | 364 - .../golang.org/x/tools/cmd/guru/isAlias18.go | 15 - .../golang.org/x/tools/cmd/guru/isAlias19.go | 15 - vendor/golang.org/x/tools/cmd/guru/main.go | 215 - vendor/golang.org/x/tools/cmd/guru/peers.go | 252 - .../golang.org/x/tools/cmd/guru/pointsto.go | 290 - vendor/golang.org/x/tools/cmd/guru/pos.go | 142 - .../golang.org/x/tools/cmd/guru/referrers.go | 522 - .../x/tools/cmd/guru/serial/serial.go | 259 - .../x/tools/cmd/guru/testdata/src/README.txt | 2 - .../cmd/guru/testdata/src/alias/alias.go | 23 - .../cmd/guru/testdata/src/alias/alias.golden | 47 - .../cmd/guru/testdata/src/calls-json/main.go | 16 - .../guru/testdata/src/calls-json/main.golden | 28 - .../tools/cmd/guru/testdata/src/calls/main.go | 129 - .../cmd/guru/testdata/src/calls/main.golden | 125 - .../guru/testdata/src/definition-json/main.go | 66 - .../testdata/src/definition-json/main.golden | 90 - .../testdata/src/definition-json/main19.go | 5 - .../src/definition-json/main19.golden | 5 - .../guru/testdata/src/definition-json/type.go | 3 - .../guru/testdata/src/describe-json/main.go | 29 - .../testdata/src/describe-json/main.golden | 96 - .../cmd/guru/testdata/src/describe/main.go | 102 - .../guru/testdata/src/describe/main.golden | 212 - .../cmd/guru/testdata/src/describe/main19.go | 13 - .../guru/testdata/src/describe/main19.golden | 6 - .../cmd/guru/testdata/src/freevars/main.go | 40 - .../guru/testdata/src/freevars/main.golden | 25 - .../guru/testdata/src/implements-json/main.go | 27 - .../testdata/src/implements-json/main.golden | 135 - .../src/implements-methods-json/main.go | 37 - .../src/implements-methods-json/main.golden | 266 - .../testdata/src/implements-methods/main.go | 37 - .../src/implements-methods/main.golden | 37 - .../cmd/guru/testdata/src/implements/main.go | 44 - .../guru/testdata/src/implements/main.golden | 50 - .../cmd/guru/testdata/src/imports/main.go | 29 - .../cmd/guru/testdata/src/imports/main.golden | 56 - .../x/tools/cmd/guru/testdata/src/lib/lib.go | 37 - .../guru/testdata/src/lib/sublib/sublib.go | 3 - .../tools/cmd/guru/testdata/src/main/multi.go | 13 - .../cmd/guru/testdata/src/peers-json/main.go | 13 - .../guru/testdata/src/peers-json/main.golden | 12 - .../tools/cmd/guru/testdata/src/peers/main.go | 52 - .../cmd/guru/testdata/src/peers/main.golden | 100 - .../guru/testdata/src/pointsto-json/main.go | 27 - .../testdata/src/pointsto-json/main.golden | 29 - .../cmd/guru/testdata/src/pointsto/main.go | 75 - .../guru/testdata/src/pointsto/main.golden | 96 - .../guru/testdata/src/referrers-json/main.go | 24 - .../testdata/src/referrers-json/main.golden | 234 - .../guru/testdata/src/referrers/ext_test.go | 12 - .../guru/testdata/src/referrers/int_test.go | 8 - .../cmd/guru/testdata/src/referrers/main.go | 34 - .../guru/testdata/src/referrers/main.golden | 60 - .../cmd/guru/testdata/src/reflection/main.go | 30 - .../guru/testdata/src/reflection/main.golden | 34 - .../cmd/guru/testdata/src/softerrs/main.go | 15 - .../guru/testdata/src/softerrs/main.golden | 8 - .../cmd/guru/testdata/src/what-json/main.go | 14 - .../guru/testdata/src/what-json/main.golden | 95 - .../tools/cmd/guru/testdata/src/what/main.go | 11 - .../cmd/guru/testdata/src/what/main.golden | 41 - .../cmd/guru/testdata/src/whicherrs/main.go | 32 - .../guru/testdata/src/whicherrs/main.golden | 11 - .../golang.org/x/tools/cmd/guru/unit_test.go | 105 - vendor/golang.org/x/tools/cmd/guru/what.go | 282 - .../golang.org/x/tools/cmd/guru/whicherrs.go | 327 - .../x/tools/cmd/heapview/client/.clang-format | 1 - .../x/tools/cmd/heapview/client/.gitignore | 1 - .../x/tools/cmd/heapview/client/README.md | 45 - .../x/tools/cmd/heapview/client/main.ts | 195 - .../x/tools/cmd/heapview/client/main_test.ts | 29 - .../x/tools/cmd/heapview/client/package.json | 35 - .../cmd/heapview/client/testing/karma.conf.js | 22 - .../cmd/heapview/client/testing/test_main.js | 32 - .../x/tools/cmd/heapview/client/tsconfig.json | 16 - .../x/tools/cmd/heapview/client/tslint.json | 40 - .../cmd/heapview/internal/core/mmapfile.go | 145 - .../heapview/internal/core/mmapfile_other.go | 14 - .../x/tools/cmd/heapview/internal/core/raw.go | 308 - .../golang.org/x/tools/cmd/heapview/main.go | 83 - .../x/tools/cmd/html2article/conv.go | 331 - .../x/tools/cmd/present/appengine.go | 22 - vendor/golang.org/x/tools/cmd/present/dir.go | 214 - vendor/golang.org/x/tools/cmd/present/doc.go | 57 - .../golang.org/x/tools/cmd/present/local.go | 133 - vendor/golang.org/x/tools/cmd/present/play.go | 43 - .../x/tools/cmd/present/play_http.go | 23 - .../x/tools/cmd/present/play_socket.go | 36 - .../x/tools/cmd/present/static/article.css | 161 - .../x/tools/cmd/present/static/dir.css | 186 - .../x/tools/cmd/present/static/dir.js | 41 - .../x/tools/cmd/present/static/favicon.ico | Bin 785 -> 0 bytes .../x/tools/cmd/present/static/jquery-ui.js | 6 - .../x/tools/cmd/present/static/notes.css | 32 - .../x/tools/cmd/present/static/notes.js | 161 - .../x/tools/cmd/present/static/slides.js | 612 - .../x/tools/cmd/present/static/styles.css | 534 - .../x/tools/cmd/present/templates/action.tmpl | 62 - .../tools/cmd/present/templates/article.tmpl | 98 - .../x/tools/cmd/present/templates/dir.tmpl | 108 - .../x/tools/cmd/present/templates/slides.tmpl | 106 - vendor/golang.org/x/tools/cmd/ssadump/main.go | 180 - .../golang.org/x/tools/cmd/stress/stress.go | 133 - .../x/tools/cmd/stringer/endtoend_test.go | 111 - .../x/tools/cmd/stringer/golden_test.go | 319 - .../x/tools/cmd/stringer/importer18.go | 16 - .../x/tools/cmd/stringer/importer19.go | 16 - .../x/tools/cmd/stringer/stringer.go | 655 - .../x/tools/cmd/stringer/testdata/cgo.go | 32 - .../x/tools/cmd/stringer/testdata/day.go | 39 - .../x/tools/cmd/stringer/testdata/gap.go | 44 - .../x/tools/cmd/stringer/testdata/num.go | 35 - .../x/tools/cmd/stringer/testdata/number.go | 34 - .../x/tools/cmd/stringer/testdata/prime.go | 56 - .../x/tools/cmd/stringer/testdata/unum.go | 38 - .../x/tools/cmd/stringer/testdata/unum2.go | 31 - .../x/tools/cmd/stringer/util_test.go | 77 - vendor/golang.org/x/tools/cmd/tip/Dockerfile | 143 - vendor/golang.org/x/tools/cmd/tip/Makefile | 25 - vendor/golang.org/x/tools/cmd/tip/README | 32 - vendor/golang.org/x/tools/cmd/tip/cert.go | 63 - vendor/golang.org/x/tools/cmd/tip/godoc.go | 73 - vendor/golang.org/x/tools/cmd/tip/godoc.yaml | 17 - vendor/golang.org/x/tools/cmd/tip/talks.go | 73 - vendor/golang.org/x/tools/cmd/tip/talks.yaml | 12 - vendor/golang.org/x/tools/cmd/tip/tip-rc.yaml | 40 - .../x/tools/cmd/tip/tip-service.yaml | 16 - vendor/golang.org/x/tools/cmd/tip/tip.go | 414 - vendor/golang.org/x/tools/cmd/tip/tip_test.go | 25 - .../golang.org/x/tools/cmd/toolstash/buildall | 68 - .../golang.org/x/tools/cmd/toolstash/cmp.go | 157 - .../golang.org/x/tools/cmd/toolstash/main.go | 637 - vendor/golang.org/x/tools/codereview.cfg | 1 - .../x/tools/container/intsets/popcnt_amd64.go | 20 - .../x/tools/container/intsets/popcnt_amd64.s | 30 - .../x/tools/container/intsets/popcnt_gccgo.go | 9 - .../tools/container/intsets/popcnt_gccgo_c.c | 19 - .../tools/container/intsets/popcnt_generic.go | 33 - .../x/tools/container/intsets/sparse.go | 1091 - .../x/tools/container/intsets/sparse_test.go | 710 - .../x/tools/container/intsets/util.go | 84 - .../x/tools/container/intsets/util_test.go | 58 - vendor/golang.org/x/tools/cover/profile.go | 213 - .../x/tools/go/ast/astutil/enclosing.go | 627 - .../x/tools/go/ast/astutil/enclosing_test.go | 195 - .../x/tools/go/ast/astutil/imports.go | 470 - .../x/tools/go/ast/astutil/imports_test.go | 1818 - .../x/tools/go/ast/astutil/rewrite.go | 477 - .../x/tools/go/ast/astutil/rewrite_test.go | 248 - .../golang.org/x/tools/go/ast/astutil/util.go | 14 - .../x/tools/go/buildutil/allpackages.go | 198 - .../x/tools/go/buildutil/allpackages_test.go | 78 - .../x/tools/go/buildutil/fakecontext.go | 108 - .../x/tools/go/buildutil/overlay.go | 103 - .../x/tools/go/buildutil/overlay_test.go | 70 - .../golang.org/x/tools/go/buildutil/tags.go | 75 - .../x/tools/go/buildutil/tags_test.go | 28 - .../golang.org/x/tools/go/buildutil/util.go | 212 - .../x/tools/go/buildutil/util_test.go | 81 - .../x/tools/go/buildutil/util_windows_test.go | 48 - .../x/tools/go/callgraph/callgraph.go | 129 - .../x/tools/go/callgraph/cha/cha.go | 139 - .../x/tools/go/callgraph/cha/cha_test.go | 111 - .../x/tools/go/callgraph/cha/testdata/func.go | 23 - .../tools/go/callgraph/cha/testdata/iface.go | 65 - .../go/callgraph/cha/testdata/issue23925.go | 38 - .../x/tools/go/callgraph/cha/testdata/recv.go | 37 - .../x/tools/go/callgraph/rta/rta.go | 459 - .../x/tools/go/callgraph/rta/rta_test.go | 139 - .../x/tools/go/callgraph/rta/testdata/func.go | 37 - .../tools/go/callgraph/rta/testdata/iface.go | 79 - .../tools/go/callgraph/rta/testdata/rtype.go | 35 - .../x/tools/go/callgraph/static/static.go | 35 - .../tools/go/callgraph/static/static_test.go | 88 - .../golang.org/x/tools/go/callgraph/util.go | 181 - .../go/gccgoexportdata/gccgoexportdata.go | 129 - .../gccgoexportdata/gccgoexportdata_test.go | 67 - .../go/gccgoexportdata/testdata/errors.gox | Bin 24632 -> 0 bytes .../tools/go/gccgoexportdata/testdata/long.a | Bin 802 -> 0 bytes .../tools/go/gccgoexportdata/testdata/short.a | Bin 710 -> 0 bytes .../x/tools/go/gcexportdata/example_test.go | 121 - .../x/tools/go/gcexportdata/gcexportdata.go | 100 - .../go/gcexportdata/gcexportdata_test.go | 41 - .../x/tools/go/gcexportdata/importer.go | 73 - .../x/tools/go/gcexportdata/main.go | 81 - .../go/gcexportdata/testdata/errors-ae16.a | Bin 5494 -> 0 bytes .../x/tools/go/gcimporter15/bexport.go | 828 - .../x/tools/go/gcimporter15/bexport19_test.go | 93 - .../x/tools/go/gcimporter15/bexport_test.go | 326 - .../x/tools/go/gcimporter15/bimport.go | 993 - .../x/tools/go/gcimporter15/exportdata.go | 93 - .../x/tools/go/gcimporter15/gcimporter.go | 1041 - .../tools/go/gcimporter15/gcimporter_test.go | 521 - .../x/tools/go/gcimporter15/isAlias18.go | 13 - .../x/tools/go/gcimporter15/isAlias19.go | 13 - .../x/tools/go/gcimporter15/testdata/a.go | 14 - .../x/tools/go/gcimporter15/testdata/b.go | 11 - .../tools/go/gcimporter15/testdata/exports.go | 89 - .../go/gcimporter15/testdata/issue15920.go | 11 - .../go/gcimporter15/testdata/issue20046.go | 9 - .../x/tools/go/gcimporter15/testdata/p.go | 13 - .../go/gcimporter15/testdata/versions/test.go | 25 - .../testdata/versions/test_go1.7_0.a | Bin 1862 -> 0 bytes .../testdata/versions/test_go1.7_1.a | Bin 2316 -> 0 bytes .../go/internal/gccgoimporter/backdoor.go | 28 - .../gccgoimporter/gccgoinstallation.go | 99 - .../gccgoimporter/gccgoinstallation_test.go | 195 - .../go/internal/gccgoimporter/importer.go | 209 - .../internal/gccgoimporter/importer19_test.go | 15 - .../internal/gccgoimporter/importer_test.go | 179 - .../tools/go/internal/gccgoimporter/parser.go | 910 - .../go/internal/gccgoimporter/parser_test.go | 79 - .../internal/gccgoimporter/testdata/alias.gox | 4 - .../gccgoimporter/testdata/complexnums.go | 6 - .../gccgoimporter/testdata/complexnums.gox | 8 - .../gccgoimporter/testdata/conversions.go | 5 - .../gccgoimporter/testdata/conversions.gox | 6 - .../gccgoimporter/testdata/escapeinfo.go | 13 - .../gccgoimporter/testdata/escapeinfo.gox | Bin 824 -> 0 bytes .../gccgoimporter/testdata/imports.go | 5 - .../gccgoimporter/testdata/imports.gox | 7 - .../gccgoimporter/testdata/pointer.go | 3 - .../gccgoimporter/testdata/pointer.gox | 4 - .../internal/gccgoimporter/testdata/time.gox | Bin 7977 -> 0 bytes .../gccgoimporter/testdata/unicode.gox | Bin 7945 -> 0 bytes .../go/internal/gccgoimporter/testenv_test.go | 40 - vendor/golang.org/x/tools/go/loader/cgo.go | 207 - .../x/tools/go/loader/cgo_pkgconfig.go | 39 - vendor/golang.org/x/tools/go/loader/doc.go | 205 - .../x/tools/go/loader/example_test.go | 179 - vendor/golang.org/x/tools/go/loader/loader.go | 1077 - .../x/tools/go/loader/loader_test.go | 816 - .../x/tools/go/loader/stdlib_test.go | 201 - .../x/tools/go/loader/testdata/a.go | 1 - .../x/tools/go/loader/testdata/b.go | 1 - .../x/tools/go/loader/testdata/badpkgdecl.go | 1 - vendor/golang.org/x/tools/go/loader/util.go | 124 - vendor/golang.org/x/tools/go/pointer/TODO | 33 - .../golang.org/x/tools/go/pointer/analysis.go | 452 - vendor/golang.org/x/tools/go/pointer/api.go | 285 - .../x/tools/go/pointer/callgraph.go | 61 - .../x/tools/go/pointer/constraint.go | 149 - vendor/golang.org/x/tools/go/pointer/doc.go | 610 - .../x/tools/go/pointer/example_test.go | 126 - vendor/golang.org/x/tools/go/pointer/gen.go | 1325 - vendor/golang.org/x/tools/go/pointer/hvn.go | 973 - .../x/tools/go/pointer/intrinsics.go | 361 - .../golang.org/x/tools/go/pointer/labels.go | 152 - vendor/golang.org/x/tools/go/pointer/opt.go | 132 - .../x/tools/go/pointer/pointer_test.go | 601 - vendor/golang.org/x/tools/go/pointer/print.go | 43 - vendor/golang.org/x/tools/go/pointer/query.go | 221 - .../x/tools/go/pointer/query_test.go | 68 - .../golang.org/x/tools/go/pointer/reflect.go | 1975 - vendor/golang.org/x/tools/go/pointer/solve.go | 370 - .../x/tools/go/pointer/stdlib_test.go | 111 - .../x/tools/go/pointer/testdata/a_test.go | 42 - .../x/tools/go/pointer/testdata/another.go | 36 - .../tools/go/pointer/testdata/arrayreflect.go | 191 - .../x/tools/go/pointer/testdata/arrays.go | 97 - .../x/tools/go/pointer/testdata/channels.go | 118 - .../tools/go/pointer/testdata/chanreflect.go | 85 - .../tools/go/pointer/testdata/chanreflect1.go | 35 - .../x/tools/go/pointer/testdata/context.go | 48 - .../x/tools/go/pointer/testdata/conv.go | 63 - .../x/tools/go/pointer/testdata/extended.go | 21 - .../x/tools/go/pointer/testdata/finalizer.go | 89 - .../x/tools/go/pointer/testdata/flow.go | 63 - .../x/tools/go/pointer/testdata/fmtexcerpt.go | 42 - .../x/tools/go/pointer/testdata/func.go | 205 - .../tools/go/pointer/testdata/funcreflect.go | 130 - .../x/tools/go/pointer/testdata/hello.go | 27 - .../x/tools/go/pointer/testdata/interfaces.go | 152 - .../x/tools/go/pointer/testdata/issue9002.go | 17 - .../x/tools/go/pointer/testdata/mapreflect.go | 117 - .../x/tools/go/pointer/testdata/maps.go | 74 - .../x/tools/go/pointer/testdata/panic.go | 36 - .../x/tools/go/pointer/testdata/recur.go | 11 - .../x/tools/go/pointer/testdata/reflect.go | 115 - .../x/tools/go/pointer/testdata/rtti.go | 29 - .../go/pointer/testdata/structreflect.go | 45 - .../x/tools/go/pointer/testdata/structs.go | 100 - .../x/tools/go/pointer/testdata/timer.go | 24 - vendor/golang.org/x/tools/go/pointer/util.go | 313 - vendor/golang.org/x/tools/go/ssa/blockopt.go | 187 - vendor/golang.org/x/tools/go/ssa/builder.go | 2379 - .../golang.org/x/tools/go/ssa/builder_test.go | 500 - vendor/golang.org/x/tools/go/ssa/const.go | 169 - vendor/golang.org/x/tools/go/ssa/create.go | 263 - vendor/golang.org/x/tools/go/ssa/doc.go | 123 - vendor/golang.org/x/tools/go/ssa/dom.go | 341 - vendor/golang.org/x/tools/go/ssa/emit.go | 468 - .../golang.org/x/tools/go/ssa/example_test.go | 138 - vendor/golang.org/x/tools/go/ssa/func.go | 689 - vendor/golang.org/x/tools/go/ssa/identical.go | 7 - .../golang.org/x/tools/go/ssa/identical_17.go | 7 - .../x/tools/go/ssa/identical_test.go | 9 - .../x/tools/go/ssa/interp/external.go | 557 - .../x/tools/go/ssa/interp/external_darwin.go | 35 - .../x/tools/go/ssa/interp/external_unix.go | 256 - .../x/tools/go/ssa/interp/interp.go | 764 - .../x/tools/go/ssa/interp/interp_test.go | 317 - .../golang.org/x/tools/go/ssa/interp/map.go | 121 - .../golang.org/x/tools/go/ssa/interp/ops.go | 1396 - .../x/tools/go/ssa/interp/reflect.go | 574 - .../x/tools/go/ssa/interp/testdata/a_test.go | 17 - .../x/tools/go/ssa/interp/testdata/b_test.go | 11 - .../tools/go/ssa/interp/testdata/boundmeth.go | 144 - .../x/tools/go/ssa/interp/testdata/c_test.go | 17 - .../tools/go/ssa/interp/testdata/callstack.go | 52 - .../x/tools/go/ssa/interp/testdata/complit.go | 184 - .../tools/go/ssa/interp/testdata/coverage.go | 534 - .../x/tools/go/ssa/interp/testdata/defer.go | 53 - .../tools/go/ssa/interp/testdata/fieldprom.go | 114 - .../tools/go/ssa/interp/testdata/ifaceconv.go | 83 - .../tools/go/ssa/interp/testdata/ifaceprom.go | 58 - .../tools/go/ssa/interp/testdata/initorder.go | 67 - .../tools/go/ssa/interp/testdata/methprom.go | 93 - .../tools/go/ssa/interp/testdata/mrvchain.go | 75 - .../x/tools/go/ssa/interp/testdata/range.go | 55 - .../x/tools/go/ssa/interp/testdata/recover.go | 34 - .../x/tools/go/ssa/interp/testdata/reflect.go | 11 - .../x/tools/go/ssa/interp/testdata/static.go | 58 - .../golang.org/x/tools/go/ssa/interp/value.go | 497 - vendor/golang.org/x/tools/go/ssa/lift.go | 653 - vendor/golang.org/x/tools/go/ssa/lvalue.go | 120 - vendor/golang.org/x/tools/go/ssa/methods.go | 239 - vendor/golang.org/x/tools/go/ssa/mode.go | 100 - vendor/golang.org/x/tools/go/ssa/print.go | 431 - vendor/golang.org/x/tools/go/ssa/sanity.go | 521 - vendor/golang.org/x/tools/go/ssa/source.go | 293 - .../golang.org/x/tools/go/ssa/source_test.go | 397 - vendor/golang.org/x/tools/go/ssa/ssa.go | 1696 - .../golang.org/x/tools/go/ssa/ssautil/load.go | 95 - .../x/tools/go/ssa/ssautil/load_test.go | 64 - .../x/tools/go/ssa/ssautil/switch.go | 234 - .../x/tools/go/ssa/ssautil/switch_test.go | 74 - .../tools/go/ssa/ssautil/testdata/switches.go | 357 - .../x/tools/go/ssa/ssautil/visit.go | 79 - .../golang.org/x/tools/go/ssa/stdlib_test.go | 151 - .../x/tools/go/ssa/testdata/objlookup.go | 160 - .../x/tools/go/ssa/testdata/structconv.go | 24 - .../x/tools/go/ssa/testdata/valueforexpr.go | 152 - vendor/golang.org/x/tools/go/ssa/testmain.go | 267 - .../x/tools/go/ssa/testmain_test.go | 124 - vendor/golang.org/x/tools/go/ssa/util.go | 119 - vendor/golang.org/x/tools/go/ssa/wrappers.go | 294 - .../x/tools/go/types/typeutil/example_test.go | 67 - .../x/tools/go/types/typeutil/imports.go | 31 - .../x/tools/go/types/typeutil/imports_test.go | 80 - .../x/tools/go/types/typeutil/map.go | 313 - .../x/tools/go/types/typeutil/map_test.go | 174 - .../tools/go/types/typeutil/methodsetcache.go | 72 - .../x/tools/go/types/typeutil/ui.go | 52 - .../x/tools/go/types/typeutil/ui_test.go | 61 - vendor/golang.org/x/tools/go/vcs/discovery.go | 76 - vendor/golang.org/x/tools/go/vcs/env.go | 39 - vendor/golang.org/x/tools/go/vcs/http.go | 80 - vendor/golang.org/x/tools/go/vcs/vcs.go | 755 - vendor/golang.org/x/tools/go/vcs/vcs_test.go | 186 - vendor/golang.org/x/tools/godoc/README.md | 31 - .../golang.org/x/tools/godoc/analysis/README | 111 - .../x/tools/godoc/analysis/analysis.go | 613 - .../x/tools/godoc/analysis/callgraph.go | 351 - .../x/tools/godoc/analysis/implements.go | 195 - .../golang.org/x/tools/godoc/analysis/json.go | 69 - .../x/tools/godoc/analysis/peers.go | 154 - .../x/tools/godoc/analysis/typeinfo.go | 234 - vendor/golang.org/x/tools/godoc/appengine.go | 13 - vendor/golang.org/x/tools/godoc/cmdline.go | 207 - .../golang.org/x/tools/godoc/cmdline_test.go | 294 - vendor/golang.org/x/tools/godoc/corpus.go | 164 - vendor/golang.org/x/tools/godoc/dirtrees.go | 342 - vendor/golang.org/x/tools/godoc/dl/dl.go | 558 - vendor/golang.org/x/tools/godoc/dl/dl_test.go | 137 - vendor/golang.org/x/tools/godoc/dl/tmpl.go | 279 - vendor/golang.org/x/tools/godoc/format.go | 371 - vendor/golang.org/x/tools/godoc/godoc.go | 911 - .../golang.org/x/tools/godoc/godoc17_test.go | 35 - vendor/golang.org/x/tools/godoc/godoc_test.go | 323 - vendor/golang.org/x/tools/godoc/index.go | 1581 - vendor/golang.org/x/tools/godoc/index_test.go | 323 - vendor/golang.org/x/tools/godoc/linkify.go | 195 - vendor/golang.org/x/tools/godoc/meta.go | 144 - vendor/golang.org/x/tools/godoc/page.go | 76 - vendor/golang.org/x/tools/godoc/parser.go | 74 - vendor/golang.org/x/tools/godoc/pres.go | 166 - .../golang.org/x/tools/godoc/proxy/proxy.go | 148 - .../golang.org/x/tools/godoc/redirect/hash.go | 138 - .../x/tools/godoc/redirect/redirect.go | 250 - .../x/tools/godoc/redirect/redirect_test.go | 104 - vendor/golang.org/x/tools/godoc/search.go | 139 - vendor/golang.org/x/tools/godoc/server.go | 816 - .../golang.org/x/tools/godoc/short/short.go | 173 - vendor/golang.org/x/tools/godoc/short/tmpl.go | 121 - vendor/golang.org/x/tools/godoc/snippet.go | 123 - vendor/golang.org/x/tools/godoc/spec.go | 179 - vendor/golang.org/x/tools/godoc/spot.go | 83 - .../x/tools/godoc/static/analysis/call-eg.png | Bin 11383 -> 0 bytes .../x/tools/godoc/static/analysis/call3.png | Bin 16960 -> 0 bytes .../tools/godoc/static/analysis/callers1.png | Bin 13068 -> 0 bytes .../tools/godoc/static/analysis/callers2.png | Bin 20822 -> 0 bytes .../x/tools/godoc/static/analysis/chan1.png | Bin 44287 -> 0 bytes .../x/tools/godoc/static/analysis/chan2a.png | Bin 19600 -> 0 bytes .../x/tools/godoc/static/analysis/chan2b.png | Bin 18204 -> 0 bytes .../x/tools/godoc/static/analysis/error1.png | Bin 13633 -> 0 bytes .../x/tools/godoc/static/analysis/help.html | 254 - .../tools/godoc/static/analysis/ident-def.png | Bin 13141 -> 0 bytes .../godoc/static/analysis/ident-field.png | Bin 12131 -> 0 bytes .../godoc/static/analysis/ident-func.png | Bin 12554 -> 0 bytes .../tools/godoc/static/analysis/ipcg-func.png | Bin 10919 -> 0 bytes .../tools/godoc/static/analysis/ipcg-pkg.png | Bin 21092 -> 0 bytes .../godoc/static/analysis/typeinfo-pkg.png | Bin 30004 -> 0 bytes .../godoc/static/analysis/typeinfo-src.png | Bin 16891 -> 0 bytes .../x/tools/godoc/static/callgraph.html | 15 - .../x/tools/godoc/static/codewalk.html | 56 - .../x/tools/godoc/static/codewalkdir.html | 16 - .../x/tools/godoc/static/dirlist.html | 31 - vendor/golang.org/x/tools/godoc/static/doc.go | 8 - .../x/tools/godoc/static/error.html | 9 - .../x/tools/godoc/static/example.html | 30 - vendor/golang.org/x/tools/godoc/static/gen.go | 7 - .../x/tools/godoc/static/godoc.html | 120 - .../golang.org/x/tools/godoc/static/godocs.js | 604 - .../x/tools/godoc/static/images/minus.gif | Bin 837 -> 0 bytes .../x/tools/godoc/static/images/plus.gif | Bin 841 -> 0 bytes .../static/images/treeview-black-line.gif | Bin 1877 -> 0 bytes .../godoc/static/images/treeview-black.gif | Bin 402 -> 0 bytes .../static/images/treeview-default-line.gif | Bin 1993 -> 0 bytes .../godoc/static/images/treeview-default.gif | Bin 400 -> 0 bytes .../static/images/treeview-gray-line.gif | Bin 1877 -> 0 bytes .../godoc/static/images/treeview-gray.gif | Bin 411 -> 0 bytes .../x/tools/godoc/static/implements.html | 9 - .../golang.org/x/tools/godoc/static/jquery.js | 2 - .../x/tools/godoc/static/jquery.treeview.css | 76 - .../godoc/static/jquery.treeview.edit.js | 39 - .../x/tools/godoc/static/jquery.treeview.js | 256 - .../x/tools/godoc/static/makestatic.go | 127 - .../x/tools/godoc/static/methodset.html | 9 - .../x/tools/godoc/static/opensearch.xml | 11 - .../x/tools/godoc/static/package.html | 337 - .../x/tools/godoc/static/package.txt | 116 - .../golang.org/x/tools/godoc/static/play.js | 114 - .../x/tools/godoc/static/playground.js | 473 - .../x/tools/godoc/static/search.html | 18 - .../x/tools/godoc/static/search.txt | 54 - .../x/tools/godoc/static/searchcode.html | 64 - .../x/tools/godoc/static/searchdoc.html | 24 - .../x/tools/godoc/static/searchtxt.html | 42 - .../golang.org/x/tools/godoc/static/static.go | 3722 - .../golang.org/x/tools/godoc/static/style.css | 837 - vendor/golang.org/x/tools/godoc/tab.go | 82 - vendor/golang.org/x/tools/godoc/template.go | 179 - .../golang.org/x/tools/godoc/util/throttle.go | 88 - vendor/golang.org/x/tools/godoc/util/util.go | 89 - .../golang.org/x/tools/godoc/vfs/emptyvfs.go | 85 - .../x/tools/godoc/vfs/emptyvfs_test.go | 58 - .../x/tools/godoc/vfs/gatefs/gatefs.go | 89 - .../x/tools/godoc/vfs/httpfs/httpfs.go | 94 - .../x/tools/godoc/vfs/mapfs/mapfs.go | 152 - .../x/tools/godoc/vfs/mapfs/mapfs_test.go | 111 - .../golang.org/x/tools/godoc/vfs/namespace.go | 389 - vendor/golang.org/x/tools/godoc/vfs/os.go | 65 - vendor/golang.org/x/tools/godoc/vfs/vfs.go | 45 - .../x/tools/godoc/vfs/zipfs/zipfs.go | 264 - .../x/tools/godoc/vfs/zipfs/zipfs_test.go | 189 - vendor/golang.org/x/tools/imports/fastwalk.go | 187 - .../x/tools/imports/fastwalk_dirent_fileno.go | 13 - .../x/tools/imports/fastwalk_dirent_ino.go | 14 - .../x/tools/imports/fastwalk_portable.go | 29 - .../x/tools/imports/fastwalk_test.go | 171 - .../x/tools/imports/fastwalk_unix.go | 123 - vendor/golang.org/x/tools/imports/fix.go | 1092 - vendor/golang.org/x/tools/imports/fix_test.go | 2097 - vendor/golang.org/x/tools/imports/imports.go | 302 - vendor/golang.org/x/tools/imports/mkindex.go | 173 - vendor/golang.org/x/tools/imports/mkstdlib.go | 107 - .../golang.org/x/tools/imports/sortimports.go | 212 - vendor/golang.org/x/tools/imports/zstdlib.go | 9734 --- .../x/tools/playground/appengine.go | 26 - .../x/tools/playground/appenginevm.go | 11 - .../golang.org/x/tools/playground/common.go | 63 - vendor/golang.org/x/tools/playground/local.go | 20 - .../x/tools/playground/socket/socket.go | 524 - .../x/tools/playground/socket/socket_test.go | 77 - vendor/golang.org/x/tools/present/args.go | 229 - vendor/golang.org/x/tools/present/caption.go | 22 - vendor/golang.org/x/tools/present/code.go | 267 - .../golang.org/x/tools/present/code_test.go | 225 - vendor/golang.org/x/tools/present/doc.go | 262 - vendor/golang.org/x/tools/present/html.go | 31 - vendor/golang.org/x/tools/present/iframe.go | 45 - vendor/golang.org/x/tools/present/image.go | 50 - vendor/golang.org/x/tools/present/link.go | 100 - .../golang.org/x/tools/present/link_test.go | 40 - vendor/golang.org/x/tools/present/parse.go | 559 - vendor/golang.org/x/tools/present/style.go | 167 - .../golang.org/x/tools/present/style_test.go | 124 - vendor/golang.org/x/tools/present/video.go | 51 - vendor/golang.org/x/tools/refactor/README | 1 - vendor/golang.org/x/tools/refactor/eg/eg.go | 343 - .../golang.org/x/tools/refactor/eg/eg_test.go | 160 - .../golang.org/x/tools/refactor/eg/match.go | 249 - .../golang.org/x/tools/refactor/eg/rewrite.go | 343 - .../x/tools/refactor/eg/testdata/A.template | 13 - .../x/tools/refactor/eg/testdata/A1.go | 51 - .../x/tools/refactor/eg/testdata/A1.golden | 52 - .../x/tools/refactor/eg/testdata/A2.go | 12 - .../x/tools/refactor/eg/testdata/A2.golden | 15 - .../x/tools/refactor/eg/testdata/B.template | 9 - .../x/tools/refactor/eg/testdata/B1.go | 17 - .../x/tools/refactor/eg/testdata/B1.golden | 17 - .../x/tools/refactor/eg/testdata/C.template | 10 - .../x/tools/refactor/eg/testdata/C1.go | 22 - .../x/tools/refactor/eg/testdata/C1.golden | 22 - .../x/tools/refactor/eg/testdata/D.template | 8 - .../x/tools/refactor/eg/testdata/D1.go | 12 - .../x/tools/refactor/eg/testdata/D1.golden | 12 - .../x/tools/refactor/eg/testdata/E.template | 12 - .../x/tools/refactor/eg/testdata/E1.go | 9 - .../x/tools/refactor/eg/testdata/E1.golden | 13 - .../x/tools/refactor/eg/testdata/F.template | 8 - .../x/tools/refactor/eg/testdata/F1.go | 48 - .../x/tools/refactor/eg/testdata/F1.golden | 48 - .../x/tools/refactor/eg/testdata/G.template | 10 - .../x/tools/refactor/eg/testdata/G1.go | 12 - .../x/tools/refactor/eg/testdata/G1.golden | 12 - .../x/tools/refactor/eg/testdata/H.template | 9 - .../x/tools/refactor/eg/testdata/H1.go | 12 - .../x/tools/refactor/eg/testdata/H1.golden | 12 - .../refactor/eg/testdata/bad_type.template | 8 - .../eg/testdata/expr_type_mismatch.template | 15 - .../eg/testdata/no_after_return.template | 6 - .../refactor/eg/testdata/no_before.template | 5 - .../eg/testdata/type_mismatch.template | 6 - .../x/tools/refactor/importgraph/graph.go | 167 - .../tools/refactor/importgraph/graph_test.go | 99 - .../x/tools/refactor/rename/check.go | 858 - .../x/tools/refactor/rename/mvpkg.go | 375 - .../x/tools/refactor/rename/mvpkg_test.go | 463 - .../x/tools/refactor/rename/rename.go | 603 - .../x/tools/refactor/rename/rename_test.go | 1334 - .../x/tools/refactor/rename/spec.go | 593 - .../x/tools/refactor/rename/util.go | 105 - .../x/tools/refactor/satisfy/find.go | 705 - .../x/tools/third_party/moduleloader/LICENSE | 22 - .../third_party/moduleloader/moduleloader.js | 7 - .../x/tools/third_party/typescript/LICENSE | 55 - .../third_party/typescript/typescript.js | 60312 ---------------- .../x/tools/third_party/webcomponents/LICENSE | 27 - .../webcomponents/customelements.js | 1029 - vendor/vendor.json | 311 - 842 files changed, 276135 deletions(-) delete mode 100644 vendor/github.com/b3log/wide/Dockerfile delete mode 100644 vendor/github.com/b3log/wide/LICENSE delete mode 100644 vendor/github.com/b3log/wide/README.md delete mode 100644 vendor/github.com/b3log/wide/TERMS.md delete mode 100644 vendor/github.com/b3log/wide/coverage.sh delete mode 100644 vendor/github.com/b3log/wide/gulpfile.js delete mode 100644 vendor/github.com/b3log/wide/header.exe delete mode 100644 vendor/github.com/b3log/wide/main.go delete mode 100644 vendor/github.com/b3log/wide/package.json delete mode 100644 vendor/github.com/b3log/wide/pkg.sh delete mode 100644 vendor/github.com/b3log/wide/yarn.lock delete mode 100644 vendor/github.com/bradfitz/goimports/LICENSE delete mode 100644 vendor/github.com/bradfitz/goimports/README delete mode 100644 vendor/github.com/bradfitz/goimports/goimports.go delete mode 100644 vendor/github.com/go-fsnotify/fsnotify/AUTHORS delete mode 100644 vendor/github.com/go-fsnotify/fsnotify/CHANGELOG.md delete mode 100644 vendor/github.com/go-fsnotify/fsnotify/CONTRIBUTING.md delete mode 100644 vendor/github.com/go-fsnotify/fsnotify/LICENSE delete mode 100644 vendor/github.com/go-fsnotify/fsnotify/NotUsed.xcworkspace delete mode 100644 vendor/github.com/go-fsnotify/fsnotify/README.md delete mode 100644 vendor/github.com/go-fsnotify/fsnotify/circle.yml delete mode 100644 vendor/github.com/go-fsnotify/fsnotify/fsnotify.go delete mode 100644 vendor/github.com/go-fsnotify/fsnotify/inotify.go delete mode 100644 vendor/github.com/go-fsnotify/fsnotify/inotify_poller.go delete mode 100644 vendor/github.com/go-fsnotify/fsnotify/kqueue.go delete mode 100644 vendor/github.com/go-fsnotify/fsnotify/open_mode_bsd.go delete mode 100644 vendor/github.com/go-fsnotify/fsnotify/open_mode_darwin.go delete mode 100644 vendor/github.com/go-fsnotify/fsnotify/windows.go delete mode 100644 vendor/github.com/gorilla/context/LICENSE delete mode 100644 vendor/github.com/gorilla/context/README.md delete mode 100644 vendor/github.com/gorilla/context/context.go delete mode 100644 vendor/github.com/gorilla/context/doc.go delete mode 100644 vendor/github.com/gorilla/securecookie/LICENSE delete mode 100644 vendor/github.com/gorilla/securecookie/README.md delete mode 100644 vendor/github.com/gorilla/securecookie/doc.go delete mode 100644 vendor/github.com/gorilla/securecookie/securecookie.go delete mode 100644 vendor/github.com/gorilla/sessions/LICENSE delete mode 100644 vendor/github.com/gorilla/sessions/README.md delete mode 100644 vendor/github.com/gorilla/sessions/doc.go delete mode 100644 vendor/github.com/gorilla/sessions/sessions.go delete mode 100644 vendor/github.com/gorilla/sessions/store.go delete mode 100644 vendor/github.com/gorilla/websocket/AUTHORS delete mode 100644 vendor/github.com/gorilla/websocket/LICENSE delete mode 100644 vendor/github.com/gorilla/websocket/README.md delete mode 100644 vendor/github.com/gorilla/websocket/client.go delete mode 100644 vendor/github.com/gorilla/websocket/conn.go delete mode 100644 vendor/github.com/gorilla/websocket/doc.go delete mode 100644 vendor/github.com/gorilla/websocket/json.go delete mode 100644 vendor/github.com/gorilla/websocket/server.go delete mode 100644 vendor/github.com/gorilla/websocket/util.go delete mode 100644 vendor/github.com/kr/pty/License delete mode 100644 vendor/github.com/kr/pty/README.md delete mode 100644 vendor/github.com/kr/pty/doc.go delete mode 100644 vendor/github.com/kr/pty/ioctl.go delete mode 100644 vendor/github.com/kr/pty/ioctl_bsd.go delete mode 100644 vendor/github.com/kr/pty/mktypes.bash delete mode 100644 vendor/github.com/kr/pty/pty_darwin.go delete mode 100644 vendor/github.com/kr/pty/pty_dragonfly.go delete mode 100644 vendor/github.com/kr/pty/pty_freebsd.go delete mode 100644 vendor/github.com/kr/pty/pty_linux.go delete mode 100644 vendor/github.com/kr/pty/pty_unsupported.go delete mode 100644 vendor/github.com/kr/pty/run.go delete mode 100644 vendor/github.com/kr/pty/util.go delete mode 100644 vendor/github.com/kr/pty/ztypes_386.go delete mode 100644 vendor/github.com/kr/pty/ztypes_amd64.go delete mode 100644 vendor/github.com/kr/pty/ztypes_arm.go delete mode 100644 vendor/github.com/kr/pty/ztypes_arm64.go delete mode 100644 vendor/github.com/kr/pty/ztypes_dragonfly_amd64.go delete mode 100644 vendor/github.com/kr/pty/ztypes_freebsd_386.go delete mode 100644 vendor/github.com/kr/pty/ztypes_freebsd_amd64.go delete mode 100644 vendor/github.com/kr/pty/ztypes_freebsd_arm.go delete mode 100644 vendor/github.com/kr/pty/ztypes_mipsx.go delete mode 100644 vendor/github.com/kr/pty/ztypes_ppc64.go delete mode 100644 vendor/github.com/kr/pty/ztypes_ppc64le.go delete mode 100644 vendor/github.com/kr/pty/ztypes_s390x.go delete mode 100644 vendor/github.com/nsf/gocode/LICENSE delete mode 100644 vendor/github.com/nsf/gocode/README.md delete mode 100644 vendor/github.com/nsf/gocode/autocompletecontext.go delete mode 100644 vendor/github.com/nsf/gocode/autocompletefile.go delete mode 100644 vendor/github.com/nsf/gocode/client.go delete mode 100644 vendor/github.com/nsf/gocode/config.go delete mode 100644 vendor/github.com/nsf/gocode/cursorcontext.go delete mode 100644 vendor/github.com/nsf/gocode/decl.go delete mode 100644 vendor/github.com/nsf/gocode/declcache.go delete mode 100644 vendor/github.com/nsf/gocode/formatters.go delete mode 100644 vendor/github.com/nsf/gocode/gocode.go delete mode 100644 vendor/github.com/nsf/gocode/os_posix.go delete mode 100644 vendor/github.com/nsf/gocode/os_windows.go delete mode 100644 vendor/github.com/nsf/gocode/package.go delete mode 100644 vendor/github.com/nsf/gocode/package_bin.go delete mode 100644 vendor/github.com/nsf/gocode/package_text.go delete mode 100644 vendor/github.com/nsf/gocode/pre_go17.go delete mode 100644 vendor/github.com/nsf/gocode/ripper.go delete mode 100644 vendor/github.com/nsf/gocode/rpc.go delete mode 100644 vendor/github.com/nsf/gocode/scope.go delete mode 100644 vendor/github.com/nsf/gocode/server.go delete mode 100644 vendor/github.com/nsf/gocode/type_alias_build_hack_18.go delete mode 100644 vendor/github.com/nsf/gocode/type_alias_build_hack_19.go delete mode 100644 vendor/github.com/nsf/gocode/utils.go delete mode 100644 vendor/github.com/pmezard/go-difflib/LICENSE delete mode 100644 vendor/github.com/pmezard/go-difflib/difflib/difflib.go delete mode 100644 vendor/github.com/visualfc/gotools/LICENSE delete mode 100644 vendor/github.com/visualfc/gotools/README.md delete mode 100644 vendor/github.com/visualfc/gotools/astview/astdoc.go delete mode 100644 vendor/github.com/visualfc/gotools/astview/astview.go delete mode 100644 vendor/github.com/visualfc/gotools/command/command.go delete mode 100644 vendor/github.com/visualfc/gotools/command/version.go delete mode 100644 vendor/github.com/visualfc/gotools/doc.go delete mode 100644 vendor/github.com/visualfc/gotools/docview/dirtrees.go delete mode 100644 vendor/github.com/visualfc/gotools/docview/docview.go delete mode 100644 vendor/github.com/visualfc/gotools/docview/docx.go delete mode 100644 vendor/github.com/visualfc/gotools/docview/filesystem.go delete mode 100644 vendor/github.com/visualfc/gotools/finddecl/finddecl.go delete mode 100644 vendor/github.com/visualfc/gotools/finddoc/finddoc.go delete mode 100644 vendor/github.com/visualfc/gotools/goapi/goapi.go delete mode 100644 vendor/github.com/visualfc/gotools/godiff/godiff.go delete mode 100644 vendor/github.com/visualfc/gotools/gofmt/gofmt.go delete mode 100644 vendor/github.com/visualfc/gotools/gopresent/gopresent.go delete mode 100644 vendor/github.com/visualfc/gotools/gotest/gotest.go delete mode 100644 vendor/github.com/visualfc/gotools/jsonfmt/jsonfmt.go delete mode 100644 vendor/github.com/visualfc/gotools/main.go delete mode 100644 vendor/github.com/visualfc/gotools/oracle/oracle.go delete mode 100644 vendor/github.com/visualfc/gotools/oracle/oracle/TODO delete mode 100644 vendor/github.com/visualfc/gotools/oracle/oracle/callees.go delete mode 100644 vendor/github.com/visualfc/gotools/oracle/oracle/callers.go delete mode 100644 vendor/github.com/visualfc/gotools/oracle/oracle/callstack.go delete mode 100644 vendor/github.com/visualfc/gotools/oracle/oracle/definition.go delete mode 100644 vendor/github.com/visualfc/gotools/oracle/oracle/describe.go delete mode 100644 vendor/github.com/visualfc/gotools/oracle/oracle/describe15.go delete mode 100644 vendor/github.com/visualfc/gotools/oracle/oracle/freevars.go delete mode 100644 vendor/github.com/visualfc/gotools/oracle/oracle/implements.go delete mode 100644 vendor/github.com/visualfc/gotools/oracle/oracle/oracle.go delete mode 100644 vendor/github.com/visualfc/gotools/oracle/oracle/peers.go delete mode 100644 vendor/github.com/visualfc/gotools/oracle/oracle/pointsto.go delete mode 100644 vendor/github.com/visualfc/gotools/oracle/oracle/pos.go delete mode 100644 vendor/github.com/visualfc/gotools/oracle/oracle/referrers.go delete mode 100644 vendor/github.com/visualfc/gotools/oracle/oracle/serial/serial.go delete mode 100644 vendor/github.com/visualfc/gotools/oracle/oracle/what.go delete mode 100644 vendor/github.com/visualfc/gotools/oracle/oracle/whicherrs.go delete mode 100644 vendor/github.com/visualfc/gotools/pkgs/pkgs.go delete mode 100644 vendor/github.com/visualfc/gotools/pkgutil/pkgutil.go delete mode 100644 vendor/github.com/visualfc/gotools/runcmd/runcmd.go delete mode 100644 vendor/github.com/visualfc/gotools/stdlib/go13.go delete mode 100644 vendor/github.com/visualfc/gotools/stdlib/go14.go delete mode 100644 vendor/github.com/visualfc/gotools/stdlib/mkpkglist.go delete mode 100644 vendor/github.com/visualfc/gotools/stdlib/mkstdlib.go delete mode 100644 vendor/github.com/visualfc/gotools/stdlib/pkglist.go delete mode 100644 vendor/github.com/visualfc/gotools/stdlib/zstdlib.go delete mode 100644 vendor/github.com/visualfc/gotools/terminal/command.go delete mode 100644 vendor/github.com/visualfc/gotools/terminal/command_windows.go delete mode 100644 vendor/github.com/visualfc/gotools/terminal/terminal.go delete mode 100644 vendor/github.com/visualfc/gotools/types/types.go delete mode 100644 vendor/golang.org/x/text/LICENSE delete mode 100644 vendor/golang.org/x/text/PATENTS delete mode 100644 vendor/golang.org/x/text/encoding/encoding.go delete mode 100644 vendor/golang.org/x/text/encoding/internal/identifier/gen.go delete mode 100644 vendor/golang.org/x/text/encoding/internal/identifier/identifier.go delete mode 100644 vendor/golang.org/x/text/encoding/internal/identifier/mib.go delete mode 100644 vendor/golang.org/x/text/encoding/internal/internal.go delete mode 100644 vendor/golang.org/x/text/encoding/simplifiedchinese/all.go delete mode 100644 vendor/golang.org/x/text/encoding/simplifiedchinese/gbk.go delete mode 100644 vendor/golang.org/x/text/encoding/simplifiedchinese/hzgb2312.go delete mode 100644 vendor/golang.org/x/text/encoding/simplifiedchinese/maketables.go delete mode 100644 vendor/golang.org/x/text/encoding/simplifiedchinese/tables.go delete mode 100644 vendor/golang.org/x/text/transform/transform.go delete mode 100644 vendor/golang.org/x/tools/.gitattributes delete mode 100644 vendor/golang.org/x/tools/.gitignore delete mode 100644 vendor/golang.org/x/tools/AUTHORS delete mode 100644 vendor/golang.org/x/tools/CONTRIBUTING.md delete mode 100644 vendor/golang.org/x/tools/CONTRIBUTORS delete mode 100644 vendor/golang.org/x/tools/LICENSE delete mode 100644 vendor/golang.org/x/tools/PATENTS delete mode 100644 vendor/golang.org/x/tools/README.md delete mode 100644 vendor/golang.org/x/tools/benchmark/parse/parse.go delete mode 100644 vendor/golang.org/x/tools/benchmark/parse/parse_test.go delete mode 100644 vendor/golang.org/x/tools/blog/atom/atom.go delete mode 100644 vendor/golang.org/x/tools/blog/blog.go delete mode 100644 vendor/golang.org/x/tools/cmd/benchcmp/benchcmp.go delete mode 100644 vendor/golang.org/x/tools/cmd/benchcmp/benchcmp_test.go delete mode 100644 vendor/golang.org/x/tools/cmd/benchcmp/compare.go delete mode 100644 vendor/golang.org/x/tools/cmd/benchcmp/compare_test.go delete mode 100644 vendor/golang.org/x/tools/cmd/benchcmp/doc.go delete mode 100644 vendor/golang.org/x/tools/cmd/bundle/.gitignore delete mode 100644 vendor/golang.org/x/tools/cmd/bundle/main.go delete mode 100644 vendor/golang.org/x/tools/cmd/bundle/main_test.go delete mode 100644 vendor/golang.org/x/tools/cmd/bundle/testdata/out.golden delete mode 100644 vendor/golang.org/x/tools/cmd/bundle/testdata/src/domain.name/importdecl/p.go delete mode 100644 vendor/golang.org/x/tools/cmd/bundle/testdata/src/initial/a.go delete mode 100644 vendor/golang.org/x/tools/cmd/bundle/testdata/src/initial/b.go delete mode 100644 vendor/golang.org/x/tools/cmd/bundle/testdata/src/initial/c.go delete mode 100644 vendor/golang.org/x/tools/cmd/callgraph/main.go delete mode 100644 vendor/golang.org/x/tools/cmd/callgraph/main_test.go delete mode 100644 vendor/golang.org/x/tools/cmd/callgraph/testdata/src/pkg/pkg.go delete mode 100644 vendor/golang.org/x/tools/cmd/callgraph/testdata/src/pkg/pkg_test.go delete mode 100644 vendor/golang.org/x/tools/cmd/compilebench/main.go delete mode 100644 vendor/golang.org/x/tools/cmd/cover/README delete mode 100644 vendor/golang.org/x/tools/cmd/cover/cover.go delete mode 100644 vendor/golang.org/x/tools/cmd/cover/cover_test.go delete mode 100644 vendor/golang.org/x/tools/cmd/cover/doc.go delete mode 100644 vendor/golang.org/x/tools/cmd/cover/func.go delete mode 100644 vendor/golang.org/x/tools/cmd/cover/html.go delete mode 100644 vendor/golang.org/x/tools/cmd/cover/testdata/main.go delete mode 100644 vendor/golang.org/x/tools/cmd/cover/testdata/test.go delete mode 100644 vendor/golang.org/x/tools/cmd/digraph/digraph.go delete mode 100644 vendor/golang.org/x/tools/cmd/digraph/digraph_test.go delete mode 100644 vendor/golang.org/x/tools/cmd/eg/eg.go delete mode 100644 vendor/golang.org/x/tools/cmd/fiximports/main.go delete mode 100644 vendor/golang.org/x/tools/cmd/fiximports/main_test.go delete mode 100644 vendor/golang.org/x/tools/cmd/fiximports/testdata/src/fruit.io/banana/banana.go delete mode 100644 vendor/golang.org/x/tools/cmd/fiximports/testdata/src/fruit.io/orange/orange.go delete mode 100644 vendor/golang.org/x/tools/cmd/fiximports/testdata/src/fruit.io/pear/pear.go delete mode 100644 vendor/golang.org/x/tools/cmd/fiximports/testdata/src/new.com/one/one.go delete mode 100644 vendor/golang.org/x/tools/cmd/fiximports/testdata/src/old.com/bad/bad.go delete mode 100644 vendor/golang.org/x/tools/cmd/fiximports/testdata/src/old.com/one/one.go delete mode 100644 vendor/golang.org/x/tools/cmd/fiximports/testdata/src/titanic.biz/bar/bar.go delete mode 100644 vendor/golang.org/x/tools/cmd/fiximports/testdata/src/titanic.biz/foo/foo.go delete mode 100644 vendor/golang.org/x/tools/cmd/getgo/.dockerignore delete mode 100644 vendor/golang.org/x/tools/cmd/getgo/.gitignore delete mode 100644 vendor/golang.org/x/tools/cmd/getgo/Dockerfile delete mode 100644 vendor/golang.org/x/tools/cmd/getgo/LICENSE delete mode 100644 vendor/golang.org/x/tools/cmd/getgo/README.md delete mode 100644 vendor/golang.org/x/tools/cmd/getgo/download.go delete mode 100644 vendor/golang.org/x/tools/cmd/getgo/download_test.go delete mode 100644 vendor/golang.org/x/tools/cmd/getgo/main.go delete mode 100644 vendor/golang.org/x/tools/cmd/getgo/main_test.go delete mode 100644 vendor/golang.org/x/tools/cmd/getgo/make.bash delete mode 100644 vendor/golang.org/x/tools/cmd/getgo/path.go delete mode 100644 vendor/golang.org/x/tools/cmd/getgo/path_test.go delete mode 100644 vendor/golang.org/x/tools/cmd/getgo/server/README.md delete mode 100644 vendor/golang.org/x/tools/cmd/getgo/server/app.yaml delete mode 100644 vendor/golang.org/x/tools/cmd/getgo/server/main.go delete mode 100644 vendor/golang.org/x/tools/cmd/getgo/steps.go delete mode 100644 vendor/golang.org/x/tools/cmd/getgo/system.go delete mode 100644 vendor/golang.org/x/tools/cmd/getgo/system_unix.go delete mode 100644 vendor/golang.org/x/tools/cmd/getgo/system_windows.go delete mode 100644 vendor/golang.org/x/tools/cmd/getgo/upload.bash delete mode 100644 vendor/golang.org/x/tools/cmd/go-contrib-init/contrib.go delete mode 100644 vendor/golang.org/x/tools/cmd/go-contrib-init/contrib_test.go delete mode 100644 vendor/golang.org/x/tools/cmd/godex/doc.go delete mode 100644 vendor/golang.org/x/tools/cmd/godex/gc.go delete mode 100644 vendor/golang.org/x/tools/cmd/godex/gccgo.go delete mode 100644 vendor/golang.org/x/tools/cmd/godex/godex.go delete mode 100644 vendor/golang.org/x/tools/cmd/godex/isAlias18.go delete mode 100644 vendor/golang.org/x/tools/cmd/godex/isAlias19.go delete mode 100644 vendor/golang.org/x/tools/cmd/godex/print.go delete mode 100644 vendor/golang.org/x/tools/cmd/godex/source.go delete mode 100644 vendor/golang.org/x/tools/cmd/godex/writetype.go delete mode 100644 vendor/golang.org/x/tools/cmd/godoc/README.godoc-app delete mode 100644 vendor/golang.org/x/tools/cmd/godoc/appinit.go delete mode 100644 vendor/golang.org/x/tools/cmd/godoc/autocert.go delete mode 100644 vendor/golang.org/x/tools/cmd/godoc/blog.go delete mode 100644 vendor/golang.org/x/tools/cmd/godoc/codewalk.go delete mode 100644 vendor/golang.org/x/tools/cmd/godoc/dl.go delete mode 100644 vendor/golang.org/x/tools/cmd/godoc/doc.go delete mode 100644 vendor/golang.org/x/tools/cmd/godoc/godoc19_test.go delete mode 100644 vendor/golang.org/x/tools/cmd/godoc/godoc_test.go delete mode 100644 vendor/golang.org/x/tools/cmd/godoc/handlers.go delete mode 100644 vendor/golang.org/x/tools/cmd/godoc/index.go delete mode 100644 vendor/golang.org/x/tools/cmd/godoc/main.go delete mode 100644 vendor/golang.org/x/tools/cmd/godoc/play.go delete mode 100644 vendor/golang.org/x/tools/cmd/godoc/remotesearch.go delete mode 100644 vendor/golang.org/x/tools/cmd/godoc/setup-godoc-app.bash delete mode 100644 vendor/golang.org/x/tools/cmd/godoc/x.go delete mode 100644 vendor/golang.org/x/tools/cmd/goimports/doc.go delete mode 100644 vendor/golang.org/x/tools/cmd/goimports/goimports.go delete mode 100644 vendor/golang.org/x/tools/cmd/goimports/goimports_gc.go delete mode 100644 vendor/golang.org/x/tools/cmd/goimports/goimports_not_gc.go delete mode 100644 vendor/golang.org/x/tools/cmd/gomvpkg/main.go delete mode 100644 vendor/golang.org/x/tools/cmd/gorename/cgo_test.go delete mode 100644 vendor/golang.org/x/tools/cmd/gorename/gorename_test.go delete mode 100644 vendor/golang.org/x/tools/cmd/gorename/main.go delete mode 100644 vendor/golang.org/x/tools/cmd/gotype/gotype.go delete mode 100644 vendor/golang.org/x/tools/cmd/gotype/sizesFor18.go delete mode 100644 vendor/golang.org/x/tools/cmd/gotype/sizesFor19.go delete mode 100644 vendor/golang.org/x/tools/cmd/goyacc/doc.go delete mode 100644 vendor/golang.org/x/tools/cmd/goyacc/testdata/expr/README delete mode 100644 vendor/golang.org/x/tools/cmd/goyacc/testdata/expr/expr.y delete mode 100644 vendor/golang.org/x/tools/cmd/goyacc/testdata/expr/main.go delete mode 100644 vendor/golang.org/x/tools/cmd/goyacc/yacc.go delete mode 100644 vendor/golang.org/x/tools/cmd/guru/callees.go delete mode 100644 vendor/golang.org/x/tools/cmd/guru/callers.go delete mode 100644 vendor/golang.org/x/tools/cmd/guru/callstack.go delete mode 100644 vendor/golang.org/x/tools/cmd/guru/definition.go delete mode 100644 vendor/golang.org/x/tools/cmd/guru/describe.go delete mode 100644 vendor/golang.org/x/tools/cmd/guru/freevars.go delete mode 100644 vendor/golang.org/x/tools/cmd/guru/guru.go delete mode 100644 vendor/golang.org/x/tools/cmd/guru/guru_test.go delete mode 100644 vendor/golang.org/x/tools/cmd/guru/implements.go delete mode 100644 vendor/golang.org/x/tools/cmd/guru/isAlias18.go delete mode 100644 vendor/golang.org/x/tools/cmd/guru/isAlias19.go delete mode 100644 vendor/golang.org/x/tools/cmd/guru/main.go delete mode 100644 vendor/golang.org/x/tools/cmd/guru/peers.go delete mode 100644 vendor/golang.org/x/tools/cmd/guru/pointsto.go delete mode 100644 vendor/golang.org/x/tools/cmd/guru/pos.go delete mode 100644 vendor/golang.org/x/tools/cmd/guru/referrers.go delete mode 100644 vendor/golang.org/x/tools/cmd/guru/serial/serial.go delete mode 100644 vendor/golang.org/x/tools/cmd/guru/testdata/src/README.txt delete mode 100644 vendor/golang.org/x/tools/cmd/guru/testdata/src/alias/alias.go delete mode 100644 vendor/golang.org/x/tools/cmd/guru/testdata/src/alias/alias.golden delete mode 100644 vendor/golang.org/x/tools/cmd/guru/testdata/src/calls-json/main.go delete mode 100644 vendor/golang.org/x/tools/cmd/guru/testdata/src/calls-json/main.golden delete mode 100644 vendor/golang.org/x/tools/cmd/guru/testdata/src/calls/main.go delete mode 100644 vendor/golang.org/x/tools/cmd/guru/testdata/src/calls/main.golden delete mode 100644 vendor/golang.org/x/tools/cmd/guru/testdata/src/definition-json/main.go delete mode 100644 vendor/golang.org/x/tools/cmd/guru/testdata/src/definition-json/main.golden delete mode 100644 vendor/golang.org/x/tools/cmd/guru/testdata/src/definition-json/main19.go delete mode 100644 vendor/golang.org/x/tools/cmd/guru/testdata/src/definition-json/main19.golden delete mode 100644 vendor/golang.org/x/tools/cmd/guru/testdata/src/definition-json/type.go delete mode 100644 vendor/golang.org/x/tools/cmd/guru/testdata/src/describe-json/main.go delete mode 100644 vendor/golang.org/x/tools/cmd/guru/testdata/src/describe-json/main.golden delete mode 100644 vendor/golang.org/x/tools/cmd/guru/testdata/src/describe/main.go delete mode 100644 vendor/golang.org/x/tools/cmd/guru/testdata/src/describe/main.golden delete mode 100644 vendor/golang.org/x/tools/cmd/guru/testdata/src/describe/main19.go delete mode 100644 vendor/golang.org/x/tools/cmd/guru/testdata/src/describe/main19.golden delete mode 100644 vendor/golang.org/x/tools/cmd/guru/testdata/src/freevars/main.go delete mode 100644 vendor/golang.org/x/tools/cmd/guru/testdata/src/freevars/main.golden delete mode 100644 vendor/golang.org/x/tools/cmd/guru/testdata/src/implements-json/main.go delete mode 100644 vendor/golang.org/x/tools/cmd/guru/testdata/src/implements-json/main.golden delete mode 100644 vendor/golang.org/x/tools/cmd/guru/testdata/src/implements-methods-json/main.go delete mode 100644 vendor/golang.org/x/tools/cmd/guru/testdata/src/implements-methods-json/main.golden delete mode 100644 vendor/golang.org/x/tools/cmd/guru/testdata/src/implements-methods/main.go delete mode 100644 vendor/golang.org/x/tools/cmd/guru/testdata/src/implements-methods/main.golden delete mode 100644 vendor/golang.org/x/tools/cmd/guru/testdata/src/implements/main.go delete mode 100644 vendor/golang.org/x/tools/cmd/guru/testdata/src/implements/main.golden delete mode 100644 vendor/golang.org/x/tools/cmd/guru/testdata/src/imports/main.go delete mode 100644 vendor/golang.org/x/tools/cmd/guru/testdata/src/imports/main.golden delete mode 100644 vendor/golang.org/x/tools/cmd/guru/testdata/src/lib/lib.go delete mode 100644 vendor/golang.org/x/tools/cmd/guru/testdata/src/lib/sublib/sublib.go delete mode 100644 vendor/golang.org/x/tools/cmd/guru/testdata/src/main/multi.go delete mode 100644 vendor/golang.org/x/tools/cmd/guru/testdata/src/peers-json/main.go delete mode 100644 vendor/golang.org/x/tools/cmd/guru/testdata/src/peers-json/main.golden delete mode 100644 vendor/golang.org/x/tools/cmd/guru/testdata/src/peers/main.go delete mode 100644 vendor/golang.org/x/tools/cmd/guru/testdata/src/peers/main.golden delete mode 100644 vendor/golang.org/x/tools/cmd/guru/testdata/src/pointsto-json/main.go delete mode 100644 vendor/golang.org/x/tools/cmd/guru/testdata/src/pointsto-json/main.golden delete mode 100644 vendor/golang.org/x/tools/cmd/guru/testdata/src/pointsto/main.go delete mode 100644 vendor/golang.org/x/tools/cmd/guru/testdata/src/pointsto/main.golden delete mode 100644 vendor/golang.org/x/tools/cmd/guru/testdata/src/referrers-json/main.go delete mode 100644 vendor/golang.org/x/tools/cmd/guru/testdata/src/referrers-json/main.golden delete mode 100644 vendor/golang.org/x/tools/cmd/guru/testdata/src/referrers/ext_test.go delete mode 100644 vendor/golang.org/x/tools/cmd/guru/testdata/src/referrers/int_test.go delete mode 100644 vendor/golang.org/x/tools/cmd/guru/testdata/src/referrers/main.go delete mode 100644 vendor/golang.org/x/tools/cmd/guru/testdata/src/referrers/main.golden delete mode 100644 vendor/golang.org/x/tools/cmd/guru/testdata/src/reflection/main.go delete mode 100644 vendor/golang.org/x/tools/cmd/guru/testdata/src/reflection/main.golden delete mode 100644 vendor/golang.org/x/tools/cmd/guru/testdata/src/softerrs/main.go delete mode 100644 vendor/golang.org/x/tools/cmd/guru/testdata/src/softerrs/main.golden delete mode 100644 vendor/golang.org/x/tools/cmd/guru/testdata/src/what-json/main.go delete mode 100644 vendor/golang.org/x/tools/cmd/guru/testdata/src/what-json/main.golden delete mode 100644 vendor/golang.org/x/tools/cmd/guru/testdata/src/what/main.go delete mode 100644 vendor/golang.org/x/tools/cmd/guru/testdata/src/what/main.golden delete mode 100644 vendor/golang.org/x/tools/cmd/guru/testdata/src/whicherrs/main.go delete mode 100644 vendor/golang.org/x/tools/cmd/guru/testdata/src/whicherrs/main.golden delete mode 100644 vendor/golang.org/x/tools/cmd/guru/unit_test.go delete mode 100644 vendor/golang.org/x/tools/cmd/guru/what.go delete mode 100644 vendor/golang.org/x/tools/cmd/guru/whicherrs.go delete mode 100644 vendor/golang.org/x/tools/cmd/heapview/client/.clang-format delete mode 100644 vendor/golang.org/x/tools/cmd/heapview/client/.gitignore delete mode 100644 vendor/golang.org/x/tools/cmd/heapview/client/README.md delete mode 100644 vendor/golang.org/x/tools/cmd/heapview/client/main.ts delete mode 100644 vendor/golang.org/x/tools/cmd/heapview/client/main_test.ts delete mode 100644 vendor/golang.org/x/tools/cmd/heapview/client/package.json delete mode 100644 vendor/golang.org/x/tools/cmd/heapview/client/testing/karma.conf.js delete mode 100644 vendor/golang.org/x/tools/cmd/heapview/client/testing/test_main.js delete mode 100644 vendor/golang.org/x/tools/cmd/heapview/client/tsconfig.json delete mode 100644 vendor/golang.org/x/tools/cmd/heapview/client/tslint.json delete mode 100644 vendor/golang.org/x/tools/cmd/heapview/internal/core/mmapfile.go delete mode 100644 vendor/golang.org/x/tools/cmd/heapview/internal/core/mmapfile_other.go delete mode 100644 vendor/golang.org/x/tools/cmd/heapview/internal/core/raw.go delete mode 100644 vendor/golang.org/x/tools/cmd/heapview/main.go delete mode 100644 vendor/golang.org/x/tools/cmd/html2article/conv.go delete mode 100644 vendor/golang.org/x/tools/cmd/present/appengine.go delete mode 100644 vendor/golang.org/x/tools/cmd/present/dir.go delete mode 100644 vendor/golang.org/x/tools/cmd/present/doc.go delete mode 100644 vendor/golang.org/x/tools/cmd/present/local.go delete mode 100644 vendor/golang.org/x/tools/cmd/present/play.go delete mode 100644 vendor/golang.org/x/tools/cmd/present/play_http.go delete mode 100644 vendor/golang.org/x/tools/cmd/present/play_socket.go delete mode 100644 vendor/golang.org/x/tools/cmd/present/static/article.css delete mode 100644 vendor/golang.org/x/tools/cmd/present/static/dir.css delete mode 100644 vendor/golang.org/x/tools/cmd/present/static/dir.js delete mode 100644 vendor/golang.org/x/tools/cmd/present/static/favicon.ico delete mode 100644 vendor/golang.org/x/tools/cmd/present/static/jquery-ui.js delete mode 100644 vendor/golang.org/x/tools/cmd/present/static/notes.css delete mode 100644 vendor/golang.org/x/tools/cmd/present/static/notes.js delete mode 100644 vendor/golang.org/x/tools/cmd/present/static/slides.js delete mode 100644 vendor/golang.org/x/tools/cmd/present/static/styles.css delete mode 100644 vendor/golang.org/x/tools/cmd/present/templates/action.tmpl delete mode 100644 vendor/golang.org/x/tools/cmd/present/templates/article.tmpl delete mode 100644 vendor/golang.org/x/tools/cmd/present/templates/dir.tmpl delete mode 100644 vendor/golang.org/x/tools/cmd/present/templates/slides.tmpl delete mode 100644 vendor/golang.org/x/tools/cmd/ssadump/main.go delete mode 100644 vendor/golang.org/x/tools/cmd/stress/stress.go delete mode 100644 vendor/golang.org/x/tools/cmd/stringer/endtoend_test.go delete mode 100644 vendor/golang.org/x/tools/cmd/stringer/golden_test.go delete mode 100644 vendor/golang.org/x/tools/cmd/stringer/importer18.go delete mode 100644 vendor/golang.org/x/tools/cmd/stringer/importer19.go delete mode 100644 vendor/golang.org/x/tools/cmd/stringer/stringer.go delete mode 100644 vendor/golang.org/x/tools/cmd/stringer/testdata/cgo.go delete mode 100644 vendor/golang.org/x/tools/cmd/stringer/testdata/day.go delete mode 100644 vendor/golang.org/x/tools/cmd/stringer/testdata/gap.go delete mode 100644 vendor/golang.org/x/tools/cmd/stringer/testdata/num.go delete mode 100644 vendor/golang.org/x/tools/cmd/stringer/testdata/number.go delete mode 100644 vendor/golang.org/x/tools/cmd/stringer/testdata/prime.go delete mode 100644 vendor/golang.org/x/tools/cmd/stringer/testdata/unum.go delete mode 100644 vendor/golang.org/x/tools/cmd/stringer/testdata/unum2.go delete mode 100644 vendor/golang.org/x/tools/cmd/stringer/util_test.go delete mode 100644 vendor/golang.org/x/tools/cmd/tip/Dockerfile delete mode 100644 vendor/golang.org/x/tools/cmd/tip/Makefile delete mode 100644 vendor/golang.org/x/tools/cmd/tip/README delete mode 100644 vendor/golang.org/x/tools/cmd/tip/cert.go delete mode 100644 vendor/golang.org/x/tools/cmd/tip/godoc.go delete mode 100644 vendor/golang.org/x/tools/cmd/tip/godoc.yaml delete mode 100644 vendor/golang.org/x/tools/cmd/tip/talks.go delete mode 100644 vendor/golang.org/x/tools/cmd/tip/talks.yaml delete mode 100644 vendor/golang.org/x/tools/cmd/tip/tip-rc.yaml delete mode 100644 vendor/golang.org/x/tools/cmd/tip/tip-service.yaml delete mode 100644 vendor/golang.org/x/tools/cmd/tip/tip.go delete mode 100644 vendor/golang.org/x/tools/cmd/tip/tip_test.go delete mode 100644 vendor/golang.org/x/tools/cmd/toolstash/buildall delete mode 100644 vendor/golang.org/x/tools/cmd/toolstash/cmp.go delete mode 100644 vendor/golang.org/x/tools/cmd/toolstash/main.go delete mode 100644 vendor/golang.org/x/tools/codereview.cfg delete mode 100644 vendor/golang.org/x/tools/container/intsets/popcnt_amd64.go delete mode 100644 vendor/golang.org/x/tools/container/intsets/popcnt_amd64.s delete mode 100644 vendor/golang.org/x/tools/container/intsets/popcnt_gccgo.go delete mode 100644 vendor/golang.org/x/tools/container/intsets/popcnt_gccgo_c.c delete mode 100644 vendor/golang.org/x/tools/container/intsets/popcnt_generic.go delete mode 100644 vendor/golang.org/x/tools/container/intsets/sparse.go delete mode 100644 vendor/golang.org/x/tools/container/intsets/sparse_test.go delete mode 100644 vendor/golang.org/x/tools/container/intsets/util.go delete mode 100644 vendor/golang.org/x/tools/container/intsets/util_test.go delete mode 100644 vendor/golang.org/x/tools/cover/profile.go delete mode 100644 vendor/golang.org/x/tools/go/ast/astutil/enclosing.go delete mode 100644 vendor/golang.org/x/tools/go/ast/astutil/enclosing_test.go delete mode 100644 vendor/golang.org/x/tools/go/ast/astutil/imports.go delete mode 100644 vendor/golang.org/x/tools/go/ast/astutil/imports_test.go delete mode 100644 vendor/golang.org/x/tools/go/ast/astutil/rewrite.go delete mode 100644 vendor/golang.org/x/tools/go/ast/astutil/rewrite_test.go delete mode 100644 vendor/golang.org/x/tools/go/ast/astutil/util.go delete mode 100644 vendor/golang.org/x/tools/go/buildutil/allpackages.go delete mode 100644 vendor/golang.org/x/tools/go/buildutil/allpackages_test.go delete mode 100644 vendor/golang.org/x/tools/go/buildutil/fakecontext.go delete mode 100644 vendor/golang.org/x/tools/go/buildutil/overlay.go delete mode 100644 vendor/golang.org/x/tools/go/buildutil/overlay_test.go delete mode 100644 vendor/golang.org/x/tools/go/buildutil/tags.go delete mode 100644 vendor/golang.org/x/tools/go/buildutil/tags_test.go delete mode 100644 vendor/golang.org/x/tools/go/buildutil/util.go delete mode 100644 vendor/golang.org/x/tools/go/buildutil/util_test.go delete mode 100644 vendor/golang.org/x/tools/go/buildutil/util_windows_test.go delete mode 100644 vendor/golang.org/x/tools/go/callgraph/callgraph.go delete mode 100644 vendor/golang.org/x/tools/go/callgraph/cha/cha.go delete mode 100644 vendor/golang.org/x/tools/go/callgraph/cha/cha_test.go delete mode 100644 vendor/golang.org/x/tools/go/callgraph/cha/testdata/func.go delete mode 100644 vendor/golang.org/x/tools/go/callgraph/cha/testdata/iface.go delete mode 100644 vendor/golang.org/x/tools/go/callgraph/cha/testdata/issue23925.go delete mode 100644 vendor/golang.org/x/tools/go/callgraph/cha/testdata/recv.go delete mode 100644 vendor/golang.org/x/tools/go/callgraph/rta/rta.go delete mode 100644 vendor/golang.org/x/tools/go/callgraph/rta/rta_test.go delete mode 100644 vendor/golang.org/x/tools/go/callgraph/rta/testdata/func.go delete mode 100644 vendor/golang.org/x/tools/go/callgraph/rta/testdata/iface.go delete mode 100644 vendor/golang.org/x/tools/go/callgraph/rta/testdata/rtype.go delete mode 100644 vendor/golang.org/x/tools/go/callgraph/static/static.go delete mode 100644 vendor/golang.org/x/tools/go/callgraph/static/static_test.go delete mode 100644 vendor/golang.org/x/tools/go/callgraph/util.go delete mode 100644 vendor/golang.org/x/tools/go/gccgoexportdata/gccgoexportdata.go delete mode 100644 vendor/golang.org/x/tools/go/gccgoexportdata/gccgoexportdata_test.go delete mode 100644 vendor/golang.org/x/tools/go/gccgoexportdata/testdata/errors.gox delete mode 100644 vendor/golang.org/x/tools/go/gccgoexportdata/testdata/long.a delete mode 100644 vendor/golang.org/x/tools/go/gccgoexportdata/testdata/short.a delete mode 100644 vendor/golang.org/x/tools/go/gcexportdata/example_test.go delete mode 100644 vendor/golang.org/x/tools/go/gcexportdata/gcexportdata.go delete mode 100644 vendor/golang.org/x/tools/go/gcexportdata/gcexportdata_test.go delete mode 100644 vendor/golang.org/x/tools/go/gcexportdata/importer.go delete mode 100644 vendor/golang.org/x/tools/go/gcexportdata/main.go delete mode 100644 vendor/golang.org/x/tools/go/gcexportdata/testdata/errors-ae16.a delete mode 100644 vendor/golang.org/x/tools/go/gcimporter15/bexport.go delete mode 100644 vendor/golang.org/x/tools/go/gcimporter15/bexport19_test.go delete mode 100644 vendor/golang.org/x/tools/go/gcimporter15/bexport_test.go delete mode 100644 vendor/golang.org/x/tools/go/gcimporter15/bimport.go delete mode 100644 vendor/golang.org/x/tools/go/gcimporter15/exportdata.go delete mode 100644 vendor/golang.org/x/tools/go/gcimporter15/gcimporter.go delete mode 100644 vendor/golang.org/x/tools/go/gcimporter15/gcimporter_test.go delete mode 100644 vendor/golang.org/x/tools/go/gcimporter15/isAlias18.go delete mode 100644 vendor/golang.org/x/tools/go/gcimporter15/isAlias19.go delete mode 100644 vendor/golang.org/x/tools/go/gcimporter15/testdata/a.go delete mode 100644 vendor/golang.org/x/tools/go/gcimporter15/testdata/b.go delete mode 100644 vendor/golang.org/x/tools/go/gcimporter15/testdata/exports.go delete mode 100644 vendor/golang.org/x/tools/go/gcimporter15/testdata/issue15920.go delete mode 100644 vendor/golang.org/x/tools/go/gcimporter15/testdata/issue20046.go delete mode 100644 vendor/golang.org/x/tools/go/gcimporter15/testdata/p.go delete mode 100644 vendor/golang.org/x/tools/go/gcimporter15/testdata/versions/test.go delete mode 100644 vendor/golang.org/x/tools/go/gcimporter15/testdata/versions/test_go1.7_0.a delete mode 100644 vendor/golang.org/x/tools/go/gcimporter15/testdata/versions/test_go1.7_1.a delete mode 100644 vendor/golang.org/x/tools/go/internal/gccgoimporter/backdoor.go delete mode 100644 vendor/golang.org/x/tools/go/internal/gccgoimporter/gccgoinstallation.go delete mode 100644 vendor/golang.org/x/tools/go/internal/gccgoimporter/gccgoinstallation_test.go delete mode 100644 vendor/golang.org/x/tools/go/internal/gccgoimporter/importer.go delete mode 100644 vendor/golang.org/x/tools/go/internal/gccgoimporter/importer19_test.go delete mode 100644 vendor/golang.org/x/tools/go/internal/gccgoimporter/importer_test.go delete mode 100644 vendor/golang.org/x/tools/go/internal/gccgoimporter/parser.go delete mode 100644 vendor/golang.org/x/tools/go/internal/gccgoimporter/parser_test.go delete mode 100644 vendor/golang.org/x/tools/go/internal/gccgoimporter/testdata/alias.gox delete mode 100644 vendor/golang.org/x/tools/go/internal/gccgoimporter/testdata/complexnums.go delete mode 100644 vendor/golang.org/x/tools/go/internal/gccgoimporter/testdata/complexnums.gox delete mode 100644 vendor/golang.org/x/tools/go/internal/gccgoimporter/testdata/conversions.go delete mode 100644 vendor/golang.org/x/tools/go/internal/gccgoimporter/testdata/conversions.gox delete mode 100644 vendor/golang.org/x/tools/go/internal/gccgoimporter/testdata/escapeinfo.go delete mode 100644 vendor/golang.org/x/tools/go/internal/gccgoimporter/testdata/escapeinfo.gox delete mode 100644 vendor/golang.org/x/tools/go/internal/gccgoimporter/testdata/imports.go delete mode 100644 vendor/golang.org/x/tools/go/internal/gccgoimporter/testdata/imports.gox delete mode 100644 vendor/golang.org/x/tools/go/internal/gccgoimporter/testdata/pointer.go delete mode 100644 vendor/golang.org/x/tools/go/internal/gccgoimporter/testdata/pointer.gox delete mode 100644 vendor/golang.org/x/tools/go/internal/gccgoimporter/testdata/time.gox delete mode 100644 vendor/golang.org/x/tools/go/internal/gccgoimporter/testdata/unicode.gox delete mode 100644 vendor/golang.org/x/tools/go/internal/gccgoimporter/testenv_test.go delete mode 100644 vendor/golang.org/x/tools/go/loader/cgo.go delete mode 100644 vendor/golang.org/x/tools/go/loader/cgo_pkgconfig.go delete mode 100644 vendor/golang.org/x/tools/go/loader/doc.go delete mode 100644 vendor/golang.org/x/tools/go/loader/example_test.go delete mode 100644 vendor/golang.org/x/tools/go/loader/loader.go delete mode 100644 vendor/golang.org/x/tools/go/loader/loader_test.go delete mode 100644 vendor/golang.org/x/tools/go/loader/stdlib_test.go delete mode 100644 vendor/golang.org/x/tools/go/loader/testdata/a.go delete mode 100644 vendor/golang.org/x/tools/go/loader/testdata/b.go delete mode 100644 vendor/golang.org/x/tools/go/loader/testdata/badpkgdecl.go delete mode 100644 vendor/golang.org/x/tools/go/loader/util.go delete mode 100644 vendor/golang.org/x/tools/go/pointer/TODO delete mode 100644 vendor/golang.org/x/tools/go/pointer/analysis.go delete mode 100644 vendor/golang.org/x/tools/go/pointer/api.go delete mode 100644 vendor/golang.org/x/tools/go/pointer/callgraph.go delete mode 100644 vendor/golang.org/x/tools/go/pointer/constraint.go delete mode 100644 vendor/golang.org/x/tools/go/pointer/doc.go delete mode 100644 vendor/golang.org/x/tools/go/pointer/example_test.go delete mode 100644 vendor/golang.org/x/tools/go/pointer/gen.go delete mode 100644 vendor/golang.org/x/tools/go/pointer/hvn.go delete mode 100644 vendor/golang.org/x/tools/go/pointer/intrinsics.go delete mode 100644 vendor/golang.org/x/tools/go/pointer/labels.go delete mode 100644 vendor/golang.org/x/tools/go/pointer/opt.go delete mode 100644 vendor/golang.org/x/tools/go/pointer/pointer_test.go delete mode 100644 vendor/golang.org/x/tools/go/pointer/print.go delete mode 100644 vendor/golang.org/x/tools/go/pointer/query.go delete mode 100644 vendor/golang.org/x/tools/go/pointer/query_test.go delete mode 100644 vendor/golang.org/x/tools/go/pointer/reflect.go delete mode 100644 vendor/golang.org/x/tools/go/pointer/solve.go delete mode 100644 vendor/golang.org/x/tools/go/pointer/stdlib_test.go delete mode 100644 vendor/golang.org/x/tools/go/pointer/testdata/a_test.go delete mode 100644 vendor/golang.org/x/tools/go/pointer/testdata/another.go delete mode 100644 vendor/golang.org/x/tools/go/pointer/testdata/arrayreflect.go delete mode 100644 vendor/golang.org/x/tools/go/pointer/testdata/arrays.go delete mode 100644 vendor/golang.org/x/tools/go/pointer/testdata/channels.go delete mode 100644 vendor/golang.org/x/tools/go/pointer/testdata/chanreflect.go delete mode 100644 vendor/golang.org/x/tools/go/pointer/testdata/chanreflect1.go delete mode 100644 vendor/golang.org/x/tools/go/pointer/testdata/context.go delete mode 100644 vendor/golang.org/x/tools/go/pointer/testdata/conv.go delete mode 100644 vendor/golang.org/x/tools/go/pointer/testdata/extended.go delete mode 100644 vendor/golang.org/x/tools/go/pointer/testdata/finalizer.go delete mode 100644 vendor/golang.org/x/tools/go/pointer/testdata/flow.go delete mode 100644 vendor/golang.org/x/tools/go/pointer/testdata/fmtexcerpt.go delete mode 100644 vendor/golang.org/x/tools/go/pointer/testdata/func.go delete mode 100644 vendor/golang.org/x/tools/go/pointer/testdata/funcreflect.go delete mode 100644 vendor/golang.org/x/tools/go/pointer/testdata/hello.go delete mode 100644 vendor/golang.org/x/tools/go/pointer/testdata/interfaces.go delete mode 100644 vendor/golang.org/x/tools/go/pointer/testdata/issue9002.go delete mode 100644 vendor/golang.org/x/tools/go/pointer/testdata/mapreflect.go delete mode 100644 vendor/golang.org/x/tools/go/pointer/testdata/maps.go delete mode 100644 vendor/golang.org/x/tools/go/pointer/testdata/panic.go delete mode 100644 vendor/golang.org/x/tools/go/pointer/testdata/recur.go delete mode 100644 vendor/golang.org/x/tools/go/pointer/testdata/reflect.go delete mode 100644 vendor/golang.org/x/tools/go/pointer/testdata/rtti.go delete mode 100644 vendor/golang.org/x/tools/go/pointer/testdata/structreflect.go delete mode 100644 vendor/golang.org/x/tools/go/pointer/testdata/structs.go delete mode 100644 vendor/golang.org/x/tools/go/pointer/testdata/timer.go delete mode 100644 vendor/golang.org/x/tools/go/pointer/util.go delete mode 100644 vendor/golang.org/x/tools/go/ssa/blockopt.go delete mode 100644 vendor/golang.org/x/tools/go/ssa/builder.go delete mode 100644 vendor/golang.org/x/tools/go/ssa/builder_test.go delete mode 100644 vendor/golang.org/x/tools/go/ssa/const.go delete mode 100644 vendor/golang.org/x/tools/go/ssa/create.go delete mode 100644 vendor/golang.org/x/tools/go/ssa/doc.go delete mode 100644 vendor/golang.org/x/tools/go/ssa/dom.go delete mode 100644 vendor/golang.org/x/tools/go/ssa/emit.go delete mode 100644 vendor/golang.org/x/tools/go/ssa/example_test.go delete mode 100644 vendor/golang.org/x/tools/go/ssa/func.go delete mode 100644 vendor/golang.org/x/tools/go/ssa/identical.go delete mode 100644 vendor/golang.org/x/tools/go/ssa/identical_17.go delete mode 100644 vendor/golang.org/x/tools/go/ssa/identical_test.go delete mode 100644 vendor/golang.org/x/tools/go/ssa/interp/external.go delete mode 100644 vendor/golang.org/x/tools/go/ssa/interp/external_darwin.go delete mode 100644 vendor/golang.org/x/tools/go/ssa/interp/external_unix.go delete mode 100644 vendor/golang.org/x/tools/go/ssa/interp/interp.go delete mode 100644 vendor/golang.org/x/tools/go/ssa/interp/interp_test.go delete mode 100644 vendor/golang.org/x/tools/go/ssa/interp/map.go delete mode 100644 vendor/golang.org/x/tools/go/ssa/interp/ops.go delete mode 100644 vendor/golang.org/x/tools/go/ssa/interp/reflect.go delete mode 100644 vendor/golang.org/x/tools/go/ssa/interp/testdata/a_test.go delete mode 100644 vendor/golang.org/x/tools/go/ssa/interp/testdata/b_test.go delete mode 100644 vendor/golang.org/x/tools/go/ssa/interp/testdata/boundmeth.go delete mode 100644 vendor/golang.org/x/tools/go/ssa/interp/testdata/c_test.go delete mode 100644 vendor/golang.org/x/tools/go/ssa/interp/testdata/callstack.go delete mode 100644 vendor/golang.org/x/tools/go/ssa/interp/testdata/complit.go delete mode 100644 vendor/golang.org/x/tools/go/ssa/interp/testdata/coverage.go delete mode 100644 vendor/golang.org/x/tools/go/ssa/interp/testdata/defer.go delete mode 100644 vendor/golang.org/x/tools/go/ssa/interp/testdata/fieldprom.go delete mode 100644 vendor/golang.org/x/tools/go/ssa/interp/testdata/ifaceconv.go delete mode 100644 vendor/golang.org/x/tools/go/ssa/interp/testdata/ifaceprom.go delete mode 100644 vendor/golang.org/x/tools/go/ssa/interp/testdata/initorder.go delete mode 100644 vendor/golang.org/x/tools/go/ssa/interp/testdata/methprom.go delete mode 100644 vendor/golang.org/x/tools/go/ssa/interp/testdata/mrvchain.go delete mode 100644 vendor/golang.org/x/tools/go/ssa/interp/testdata/range.go delete mode 100644 vendor/golang.org/x/tools/go/ssa/interp/testdata/recover.go delete mode 100644 vendor/golang.org/x/tools/go/ssa/interp/testdata/reflect.go delete mode 100644 vendor/golang.org/x/tools/go/ssa/interp/testdata/static.go delete mode 100644 vendor/golang.org/x/tools/go/ssa/interp/value.go delete mode 100644 vendor/golang.org/x/tools/go/ssa/lift.go delete mode 100644 vendor/golang.org/x/tools/go/ssa/lvalue.go delete mode 100644 vendor/golang.org/x/tools/go/ssa/methods.go delete mode 100644 vendor/golang.org/x/tools/go/ssa/mode.go delete mode 100644 vendor/golang.org/x/tools/go/ssa/print.go delete mode 100644 vendor/golang.org/x/tools/go/ssa/sanity.go delete mode 100644 vendor/golang.org/x/tools/go/ssa/source.go delete mode 100644 vendor/golang.org/x/tools/go/ssa/source_test.go delete mode 100644 vendor/golang.org/x/tools/go/ssa/ssa.go delete mode 100644 vendor/golang.org/x/tools/go/ssa/ssautil/load.go delete mode 100644 vendor/golang.org/x/tools/go/ssa/ssautil/load_test.go delete mode 100644 vendor/golang.org/x/tools/go/ssa/ssautil/switch.go delete mode 100644 vendor/golang.org/x/tools/go/ssa/ssautil/switch_test.go delete mode 100644 vendor/golang.org/x/tools/go/ssa/ssautil/testdata/switches.go delete mode 100644 vendor/golang.org/x/tools/go/ssa/ssautil/visit.go delete mode 100644 vendor/golang.org/x/tools/go/ssa/stdlib_test.go delete mode 100644 vendor/golang.org/x/tools/go/ssa/testdata/objlookup.go delete mode 100644 vendor/golang.org/x/tools/go/ssa/testdata/structconv.go delete mode 100644 vendor/golang.org/x/tools/go/ssa/testdata/valueforexpr.go delete mode 100644 vendor/golang.org/x/tools/go/ssa/testmain.go delete mode 100644 vendor/golang.org/x/tools/go/ssa/testmain_test.go delete mode 100644 vendor/golang.org/x/tools/go/ssa/util.go delete mode 100644 vendor/golang.org/x/tools/go/ssa/wrappers.go delete mode 100644 vendor/golang.org/x/tools/go/types/typeutil/example_test.go delete mode 100644 vendor/golang.org/x/tools/go/types/typeutil/imports.go delete mode 100644 vendor/golang.org/x/tools/go/types/typeutil/imports_test.go delete mode 100644 vendor/golang.org/x/tools/go/types/typeutil/map.go delete mode 100644 vendor/golang.org/x/tools/go/types/typeutil/map_test.go delete mode 100644 vendor/golang.org/x/tools/go/types/typeutil/methodsetcache.go delete mode 100644 vendor/golang.org/x/tools/go/types/typeutil/ui.go delete mode 100644 vendor/golang.org/x/tools/go/types/typeutil/ui_test.go delete mode 100644 vendor/golang.org/x/tools/go/vcs/discovery.go delete mode 100644 vendor/golang.org/x/tools/go/vcs/env.go delete mode 100644 vendor/golang.org/x/tools/go/vcs/http.go delete mode 100644 vendor/golang.org/x/tools/go/vcs/vcs.go delete mode 100644 vendor/golang.org/x/tools/go/vcs/vcs_test.go delete mode 100644 vendor/golang.org/x/tools/godoc/README.md delete mode 100644 vendor/golang.org/x/tools/godoc/analysis/README delete mode 100644 vendor/golang.org/x/tools/godoc/analysis/analysis.go delete mode 100644 vendor/golang.org/x/tools/godoc/analysis/callgraph.go delete mode 100644 vendor/golang.org/x/tools/godoc/analysis/implements.go delete mode 100644 vendor/golang.org/x/tools/godoc/analysis/json.go delete mode 100644 vendor/golang.org/x/tools/godoc/analysis/peers.go delete mode 100644 vendor/golang.org/x/tools/godoc/analysis/typeinfo.go delete mode 100644 vendor/golang.org/x/tools/godoc/appengine.go delete mode 100644 vendor/golang.org/x/tools/godoc/cmdline.go delete mode 100644 vendor/golang.org/x/tools/godoc/cmdline_test.go delete mode 100644 vendor/golang.org/x/tools/godoc/corpus.go delete mode 100644 vendor/golang.org/x/tools/godoc/dirtrees.go delete mode 100644 vendor/golang.org/x/tools/godoc/dl/dl.go delete mode 100644 vendor/golang.org/x/tools/godoc/dl/dl_test.go delete mode 100644 vendor/golang.org/x/tools/godoc/dl/tmpl.go delete mode 100644 vendor/golang.org/x/tools/godoc/format.go delete mode 100644 vendor/golang.org/x/tools/godoc/godoc.go delete mode 100644 vendor/golang.org/x/tools/godoc/godoc17_test.go delete mode 100644 vendor/golang.org/x/tools/godoc/godoc_test.go delete mode 100644 vendor/golang.org/x/tools/godoc/index.go delete mode 100644 vendor/golang.org/x/tools/godoc/index_test.go delete mode 100644 vendor/golang.org/x/tools/godoc/linkify.go delete mode 100644 vendor/golang.org/x/tools/godoc/meta.go delete mode 100644 vendor/golang.org/x/tools/godoc/page.go delete mode 100644 vendor/golang.org/x/tools/godoc/parser.go delete mode 100644 vendor/golang.org/x/tools/godoc/pres.go delete mode 100644 vendor/golang.org/x/tools/godoc/proxy/proxy.go delete mode 100644 vendor/golang.org/x/tools/godoc/redirect/hash.go delete mode 100644 vendor/golang.org/x/tools/godoc/redirect/redirect.go delete mode 100644 vendor/golang.org/x/tools/godoc/redirect/redirect_test.go delete mode 100644 vendor/golang.org/x/tools/godoc/search.go delete mode 100644 vendor/golang.org/x/tools/godoc/server.go delete mode 100644 vendor/golang.org/x/tools/godoc/short/short.go delete mode 100644 vendor/golang.org/x/tools/godoc/short/tmpl.go delete mode 100644 vendor/golang.org/x/tools/godoc/snippet.go delete mode 100644 vendor/golang.org/x/tools/godoc/spec.go delete mode 100644 vendor/golang.org/x/tools/godoc/spot.go delete mode 100644 vendor/golang.org/x/tools/godoc/static/analysis/call-eg.png delete mode 100644 vendor/golang.org/x/tools/godoc/static/analysis/call3.png delete mode 100644 vendor/golang.org/x/tools/godoc/static/analysis/callers1.png delete mode 100644 vendor/golang.org/x/tools/godoc/static/analysis/callers2.png delete mode 100644 vendor/golang.org/x/tools/godoc/static/analysis/chan1.png delete mode 100644 vendor/golang.org/x/tools/godoc/static/analysis/chan2a.png delete mode 100644 vendor/golang.org/x/tools/godoc/static/analysis/chan2b.png delete mode 100644 vendor/golang.org/x/tools/godoc/static/analysis/error1.png delete mode 100644 vendor/golang.org/x/tools/godoc/static/analysis/help.html delete mode 100644 vendor/golang.org/x/tools/godoc/static/analysis/ident-def.png delete mode 100644 vendor/golang.org/x/tools/godoc/static/analysis/ident-field.png delete mode 100644 vendor/golang.org/x/tools/godoc/static/analysis/ident-func.png delete mode 100644 vendor/golang.org/x/tools/godoc/static/analysis/ipcg-func.png delete mode 100644 vendor/golang.org/x/tools/godoc/static/analysis/ipcg-pkg.png delete mode 100644 vendor/golang.org/x/tools/godoc/static/analysis/typeinfo-pkg.png delete mode 100644 vendor/golang.org/x/tools/godoc/static/analysis/typeinfo-src.png delete mode 100644 vendor/golang.org/x/tools/godoc/static/callgraph.html delete mode 100644 vendor/golang.org/x/tools/godoc/static/codewalk.html delete mode 100644 vendor/golang.org/x/tools/godoc/static/codewalkdir.html delete mode 100644 vendor/golang.org/x/tools/godoc/static/dirlist.html delete mode 100644 vendor/golang.org/x/tools/godoc/static/doc.go delete mode 100644 vendor/golang.org/x/tools/godoc/static/error.html delete mode 100644 vendor/golang.org/x/tools/godoc/static/example.html delete mode 100644 vendor/golang.org/x/tools/godoc/static/gen.go delete mode 100644 vendor/golang.org/x/tools/godoc/static/godoc.html delete mode 100644 vendor/golang.org/x/tools/godoc/static/godocs.js delete mode 100644 vendor/golang.org/x/tools/godoc/static/images/minus.gif delete mode 100644 vendor/golang.org/x/tools/godoc/static/images/plus.gif delete mode 100644 vendor/golang.org/x/tools/godoc/static/images/treeview-black-line.gif delete mode 100644 vendor/golang.org/x/tools/godoc/static/images/treeview-black.gif delete mode 100644 vendor/golang.org/x/tools/godoc/static/images/treeview-default-line.gif delete mode 100644 vendor/golang.org/x/tools/godoc/static/images/treeview-default.gif delete mode 100644 vendor/golang.org/x/tools/godoc/static/images/treeview-gray-line.gif delete mode 100644 vendor/golang.org/x/tools/godoc/static/images/treeview-gray.gif delete mode 100644 vendor/golang.org/x/tools/godoc/static/implements.html delete mode 100644 vendor/golang.org/x/tools/godoc/static/jquery.js delete mode 100644 vendor/golang.org/x/tools/godoc/static/jquery.treeview.css delete mode 100644 vendor/golang.org/x/tools/godoc/static/jquery.treeview.edit.js delete mode 100644 vendor/golang.org/x/tools/godoc/static/jquery.treeview.js delete mode 100644 vendor/golang.org/x/tools/godoc/static/makestatic.go delete mode 100644 vendor/golang.org/x/tools/godoc/static/methodset.html delete mode 100644 vendor/golang.org/x/tools/godoc/static/opensearch.xml delete mode 100644 vendor/golang.org/x/tools/godoc/static/package.html delete mode 100644 vendor/golang.org/x/tools/godoc/static/package.txt delete mode 100644 vendor/golang.org/x/tools/godoc/static/play.js delete mode 100644 vendor/golang.org/x/tools/godoc/static/playground.js delete mode 100644 vendor/golang.org/x/tools/godoc/static/search.html delete mode 100644 vendor/golang.org/x/tools/godoc/static/search.txt delete mode 100644 vendor/golang.org/x/tools/godoc/static/searchcode.html delete mode 100644 vendor/golang.org/x/tools/godoc/static/searchdoc.html delete mode 100644 vendor/golang.org/x/tools/godoc/static/searchtxt.html delete mode 100644 vendor/golang.org/x/tools/godoc/static/static.go delete mode 100644 vendor/golang.org/x/tools/godoc/static/style.css delete mode 100644 vendor/golang.org/x/tools/godoc/tab.go delete mode 100644 vendor/golang.org/x/tools/godoc/template.go delete mode 100644 vendor/golang.org/x/tools/godoc/util/throttle.go delete mode 100644 vendor/golang.org/x/tools/godoc/util/util.go delete mode 100644 vendor/golang.org/x/tools/godoc/vfs/emptyvfs.go delete mode 100644 vendor/golang.org/x/tools/godoc/vfs/emptyvfs_test.go delete mode 100644 vendor/golang.org/x/tools/godoc/vfs/gatefs/gatefs.go delete mode 100644 vendor/golang.org/x/tools/godoc/vfs/httpfs/httpfs.go delete mode 100644 vendor/golang.org/x/tools/godoc/vfs/mapfs/mapfs.go delete mode 100644 vendor/golang.org/x/tools/godoc/vfs/mapfs/mapfs_test.go delete mode 100644 vendor/golang.org/x/tools/godoc/vfs/namespace.go delete mode 100644 vendor/golang.org/x/tools/godoc/vfs/os.go delete mode 100644 vendor/golang.org/x/tools/godoc/vfs/vfs.go delete mode 100644 vendor/golang.org/x/tools/godoc/vfs/zipfs/zipfs.go delete mode 100644 vendor/golang.org/x/tools/godoc/vfs/zipfs/zipfs_test.go delete mode 100644 vendor/golang.org/x/tools/imports/fastwalk.go delete mode 100644 vendor/golang.org/x/tools/imports/fastwalk_dirent_fileno.go delete mode 100644 vendor/golang.org/x/tools/imports/fastwalk_dirent_ino.go delete mode 100644 vendor/golang.org/x/tools/imports/fastwalk_portable.go delete mode 100644 vendor/golang.org/x/tools/imports/fastwalk_test.go delete mode 100644 vendor/golang.org/x/tools/imports/fastwalk_unix.go delete mode 100644 vendor/golang.org/x/tools/imports/fix.go delete mode 100644 vendor/golang.org/x/tools/imports/fix_test.go delete mode 100644 vendor/golang.org/x/tools/imports/imports.go delete mode 100644 vendor/golang.org/x/tools/imports/mkindex.go delete mode 100644 vendor/golang.org/x/tools/imports/mkstdlib.go delete mode 100644 vendor/golang.org/x/tools/imports/sortimports.go delete mode 100644 vendor/golang.org/x/tools/imports/zstdlib.go delete mode 100644 vendor/golang.org/x/tools/playground/appengine.go delete mode 100644 vendor/golang.org/x/tools/playground/appenginevm.go delete mode 100644 vendor/golang.org/x/tools/playground/common.go delete mode 100644 vendor/golang.org/x/tools/playground/local.go delete mode 100644 vendor/golang.org/x/tools/playground/socket/socket.go delete mode 100644 vendor/golang.org/x/tools/playground/socket/socket_test.go delete mode 100644 vendor/golang.org/x/tools/present/args.go delete mode 100644 vendor/golang.org/x/tools/present/caption.go delete mode 100644 vendor/golang.org/x/tools/present/code.go delete mode 100644 vendor/golang.org/x/tools/present/code_test.go delete mode 100644 vendor/golang.org/x/tools/present/doc.go delete mode 100644 vendor/golang.org/x/tools/present/html.go delete mode 100644 vendor/golang.org/x/tools/present/iframe.go delete mode 100644 vendor/golang.org/x/tools/present/image.go delete mode 100644 vendor/golang.org/x/tools/present/link.go delete mode 100644 vendor/golang.org/x/tools/present/link_test.go delete mode 100644 vendor/golang.org/x/tools/present/parse.go delete mode 100644 vendor/golang.org/x/tools/present/style.go delete mode 100644 vendor/golang.org/x/tools/present/style_test.go delete mode 100644 vendor/golang.org/x/tools/present/video.go delete mode 100644 vendor/golang.org/x/tools/refactor/README delete mode 100644 vendor/golang.org/x/tools/refactor/eg/eg.go delete mode 100644 vendor/golang.org/x/tools/refactor/eg/eg_test.go delete mode 100644 vendor/golang.org/x/tools/refactor/eg/match.go delete mode 100644 vendor/golang.org/x/tools/refactor/eg/rewrite.go delete mode 100644 vendor/golang.org/x/tools/refactor/eg/testdata/A.template delete mode 100644 vendor/golang.org/x/tools/refactor/eg/testdata/A1.go delete mode 100644 vendor/golang.org/x/tools/refactor/eg/testdata/A1.golden delete mode 100644 vendor/golang.org/x/tools/refactor/eg/testdata/A2.go delete mode 100644 vendor/golang.org/x/tools/refactor/eg/testdata/A2.golden delete mode 100644 vendor/golang.org/x/tools/refactor/eg/testdata/B.template delete mode 100644 vendor/golang.org/x/tools/refactor/eg/testdata/B1.go delete mode 100644 vendor/golang.org/x/tools/refactor/eg/testdata/B1.golden delete mode 100644 vendor/golang.org/x/tools/refactor/eg/testdata/C.template delete mode 100644 vendor/golang.org/x/tools/refactor/eg/testdata/C1.go delete mode 100644 vendor/golang.org/x/tools/refactor/eg/testdata/C1.golden delete mode 100644 vendor/golang.org/x/tools/refactor/eg/testdata/D.template delete mode 100644 vendor/golang.org/x/tools/refactor/eg/testdata/D1.go delete mode 100644 vendor/golang.org/x/tools/refactor/eg/testdata/D1.golden delete mode 100644 vendor/golang.org/x/tools/refactor/eg/testdata/E.template delete mode 100644 vendor/golang.org/x/tools/refactor/eg/testdata/E1.go delete mode 100644 vendor/golang.org/x/tools/refactor/eg/testdata/E1.golden delete mode 100644 vendor/golang.org/x/tools/refactor/eg/testdata/F.template delete mode 100644 vendor/golang.org/x/tools/refactor/eg/testdata/F1.go delete mode 100644 vendor/golang.org/x/tools/refactor/eg/testdata/F1.golden delete mode 100644 vendor/golang.org/x/tools/refactor/eg/testdata/G.template delete mode 100644 vendor/golang.org/x/tools/refactor/eg/testdata/G1.go delete mode 100644 vendor/golang.org/x/tools/refactor/eg/testdata/G1.golden delete mode 100644 vendor/golang.org/x/tools/refactor/eg/testdata/H.template delete mode 100644 vendor/golang.org/x/tools/refactor/eg/testdata/H1.go delete mode 100644 vendor/golang.org/x/tools/refactor/eg/testdata/H1.golden delete mode 100644 vendor/golang.org/x/tools/refactor/eg/testdata/bad_type.template delete mode 100644 vendor/golang.org/x/tools/refactor/eg/testdata/expr_type_mismatch.template delete mode 100644 vendor/golang.org/x/tools/refactor/eg/testdata/no_after_return.template delete mode 100644 vendor/golang.org/x/tools/refactor/eg/testdata/no_before.template delete mode 100644 vendor/golang.org/x/tools/refactor/eg/testdata/type_mismatch.template delete mode 100644 vendor/golang.org/x/tools/refactor/importgraph/graph.go delete mode 100644 vendor/golang.org/x/tools/refactor/importgraph/graph_test.go delete mode 100644 vendor/golang.org/x/tools/refactor/rename/check.go delete mode 100644 vendor/golang.org/x/tools/refactor/rename/mvpkg.go delete mode 100644 vendor/golang.org/x/tools/refactor/rename/mvpkg_test.go delete mode 100644 vendor/golang.org/x/tools/refactor/rename/rename.go delete mode 100644 vendor/golang.org/x/tools/refactor/rename/rename_test.go delete mode 100644 vendor/golang.org/x/tools/refactor/rename/spec.go delete mode 100644 vendor/golang.org/x/tools/refactor/rename/util.go delete mode 100644 vendor/golang.org/x/tools/refactor/satisfy/find.go delete mode 100644 vendor/golang.org/x/tools/third_party/moduleloader/LICENSE delete mode 100644 vendor/golang.org/x/tools/third_party/moduleloader/moduleloader.js delete mode 100644 vendor/golang.org/x/tools/third_party/typescript/LICENSE delete mode 100644 vendor/golang.org/x/tools/third_party/typescript/typescript.js delete mode 100644 vendor/golang.org/x/tools/third_party/webcomponents/LICENSE delete mode 100644 vendor/golang.org/x/tools/third_party/webcomponents/customelements.js delete mode 100644 vendor/vendor.json diff --git a/vendor/github.com/b3log/wide/Dockerfile b/vendor/github.com/b3log/wide/Dockerfile deleted file mode 100644 index 217bb46..0000000 --- a/vendor/github.com/b3log/wide/Dockerfile +++ /dev/null @@ -1,13 +0,0 @@ -FROM golang:latest -MAINTAINER Liang Ding - -ADD . /go/src/github.com/b3log/wide -ADD vendor/ /go/src/ -RUN go install github.com/visualfc/gotools github.com/nsf/gocode github.com/bradfitz/goimports - -RUN useradd wide && useradd runner - -WORKDIR /go/src/github.com/b3log/wide -RUN go build -v - -EXPOSE 7070 diff --git a/vendor/github.com/b3log/wide/LICENSE b/vendor/github.com/b3log/wide/LICENSE deleted file mode 100644 index b447376..0000000 --- a/vendor/github.com/b3log/wide/LICENSE +++ /dev/null @@ -1,201 +0,0 @@ - Apache License - Version 2.0, January 2004 - http://www.apache.org/licenses/ - - TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION - - 1. Definitions. - - "License" shall mean the terms and conditions for use, reproduction, - and distribution as defined by Sections 1 through 9 of this document. - - "Licensor" shall mean the copyright owner or entity authorized by - the copyright owner that is granting the License. - - "Legal Entity" shall mean the union of the acting entity and all - other entities that control, are controlled by, or are under common - control with that entity. For the purposes of this definition, - "control" means (i) the power, direct or indirect, to cause the - direction or management of such entity, whether by contract or - otherwise, or (ii) ownership of fifty percent (50%) or more of the - outstanding shares, or (iii) beneficial ownership of such entity. - - "You" (or "Your") shall mean an individual or Legal Entity - exercising permissions granted by this License. - - "Source" form shall mean the preferred form for making modifications, - including but not limited to software source code, documentation - source, and configuration files. - - "Object" form shall mean any form resulting from mechanical - transformation or translation of a Source form, including but - not limited to compiled object code, generated documentation, - and conversions to other media types. - - "Work" shall mean the work of authorship, whether in Source or - Object form, made available under the License, as indicated by a - copyright notice that is included in or attached to the work - (an example is provided in the Appendix below). - - "Derivative Works" shall mean any work, whether in Source or Object - form, that is based on (or derived from) the Work and for which the - editorial revisions, annotations, elaborations, or other modifications - represent, as a whole, an original work of authorship. For the purposes - of this License, Derivative Works shall not include works that remain - separable from, or merely link (or bind by name) to the interfaces of, - the Work and Derivative Works thereof. - - "Contribution" shall mean any work of authorship, including - the original version of the Work and any modifications or additions - to that Work or Derivative Works thereof, that is intentionally - submitted to Licensor for inclusion in the Work by the copyright owner - or by an individual or Legal Entity authorized to submit on behalf of - the copyright owner. For the purposes of this definition, "submitted" - means any form of electronic, verbal, or written communication sent - to the Licensor or its representatives, including but not limited to - communication on electronic mailing lists, source code control systems, - and issue tracking systems that are managed by, or on behalf of, the - Licensor for the purpose of discussing and improving the Work, but - excluding communication that is conspicuously marked or otherwise - designated in writing by the copyright owner as "Not a Contribution." - - "Contributor" shall mean Licensor and any individual or Legal Entity - on behalf of whom a Contribution has been received by Licensor and - subsequently incorporated within the Work. - - 2. Grant of Copyright License. Subject to the terms and conditions of - this License, each Contributor hereby grants to You a perpetual, - worldwide, non-exclusive, no-charge, royalty-free, irrevocable - copyright license to reproduce, prepare Derivative Works of, - publicly display, publicly perform, sublicense, and distribute the - Work and such Derivative Works in Source or Object form. - - 3. Grant of Patent License. Subject to the terms and conditions of - this License, each Contributor hereby grants to You a perpetual, - worldwide, non-exclusive, no-charge, royalty-free, irrevocable - (except as stated in this section) patent license to make, have made, - use, offer to sell, sell, import, and otherwise transfer the Work, - where such license applies only to those patent claims licensable - by such Contributor that are necessarily infringed by their - Contribution(s) alone or by combination of their Contribution(s) - with the Work to which such Contribution(s) was submitted. If You - institute patent litigation against any entity (including a - cross-claim or counterclaim in a lawsuit) alleging that the Work - or a Contribution incorporated within the Work constitutes direct - or contributory patent infringement, then any patent licenses - granted to You under this License for that Work shall terminate - as of the date such litigation is filed. - - 4. Redistribution. You may reproduce and distribute copies of the - Work or Derivative Works thereof in any medium, with or without - modifications, and in Source or Object form, provided that You - meet the following conditions: - - (a) You must give any other recipients of the Work or - Derivative Works a copy of this License; and - - (b) You must cause any modified files to carry prominent notices - stating that You changed the files; and - - (c) You must retain, in the Source form of any Derivative Works - that You distribute, all copyright, patent, trademark, and - attribution notices from the Source form of the Work, - excluding those notices that do not pertain to any part of - the Derivative Works; and - - (d) If the Work includes a "NOTICE" text file as part of its - distribution, then any Derivative Works that You distribute must - include a readable copy of the attribution notices contained - within such NOTICE file, excluding those notices that do not - pertain to any part of the Derivative Works, in at least one - of the following places: within a NOTICE text file distributed - as part of the Derivative Works; within the Source form or - documentation, if provided along with the Derivative Works; or, - within a display generated by the Derivative Works, if and - wherever such third-party notices normally appear. The contents - of the NOTICE file are for informational purposes only and - do not modify the License. You may add Your own attribution - notices within Derivative Works that You distribute, alongside - or as an addendum to the NOTICE text from the Work, provided - that such additional attribution notices cannot be construed - as modifying the License. - - You may add Your own copyright statement to Your modifications and - may provide additional or different license terms and conditions - for use, reproduction, or distribution of Your modifications, or - for any such Derivative Works as a whole, provided Your use, - reproduction, and distribution of the Work otherwise complies with - the conditions stated in this License. - - 5. Submission of Contributions. Unless You explicitly state otherwise, - any Contribution intentionally submitted for inclusion in the Work - by You to the Licensor shall be under the terms and conditions of - this License, without any additional terms or conditions. - Notwithstanding the above, nothing herein shall supersede or modify - the terms of any separate license agreement you may have executed - with Licensor regarding such Contributions. - - 6. Trademarks. This License does not grant permission to use the trade - names, trademarks, service marks, or product names of the Licensor, - except as required for reasonable and customary use in describing the - origin of the Work and reproducing the content of the NOTICE file. - - 7. Disclaimer of Warranty. Unless required by applicable law or - agreed to in writing, Licensor provides the Work (and each - Contributor provides its Contributions) on an "AS IS" BASIS, - WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or - implied, including, without limitation, any warranties or conditions - of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A - PARTICULAR PURPOSE. You are solely responsible for determining the - appropriateness of using or redistributing the Work and assume any - risks associated with Your exercise of permissions under this License. - - 8. Limitation of Liability. In no event and under no legal theory, - whether in tort (including negligence), contract, or otherwise, - unless required by applicable law (such as deliberate and grossly - negligent acts) or agreed to in writing, shall any Contributor be - liable to You for damages, including any direct, indirect, special, - incidental, or consequential damages of any character arising as a - result of this License or out of the use or inability to use the - Work (including but not limited to damages for loss of goodwill, - work stoppage, computer failure or malfunction, or any and all - other commercial damages or losses), even if such Contributor - has been advised of the possibility of such damages. - - 9. Accepting Warranty or Additional Liability. While redistributing - the Work or Derivative Works thereof, You may choose to offer, - and charge a fee for, acceptance of support, warranty, indemnity, - or other liability obligations and/or rights consistent with this - License. However, in accepting such obligations, You may act only - on Your own behalf and on Your sole responsibility, not on behalf - of any other Contributor, and only if You agree to indemnify, - defend, and hold each Contributor harmless for any liability - incurred by, or claims asserted against, such Contributor by reason - of your accepting any such warranty or additional liability. - - END OF TERMS AND CONDITIONS - - APPENDIX: How to apply the Apache License to your work. - - To apply the Apache License to your work, attach the following - boilerplate notice, with the fields enclosed by brackets "[]" - replaced with your own identifying information. (Don't include - the brackets!) The text should be enclosed in the appropriate - comment syntax for the file format. We also recommend that a - file or class name and description of purpose be included on the - same "printed page" as the copyright notice for easier - identification within third-party archives. - - Copyright [yyyy] [name of copyright owner] - - Licensed under the Apache License, Version 2.0 (the "License"); - you may not use this file except in compliance with the License. - You may obtain a copy of the License at - - https://www.apache.org/licenses/LICENSE-2.0 - - Unless required by applicable law or agreed to in writing, software - distributed under the License is distributed on an "AS IS" BASIS, - WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - See the License for the specific language governing permissions and - limitations under the License. diff --git a/vendor/github.com/b3log/wide/README.md b/vendor/github.com/b3log/wide/README.md deleted file mode 100644 index fb2e572..0000000 --- a/vendor/github.com/b3log/wide/README.md +++ /dev/null @@ -1,180 +0,0 @@ -# [Wide](https://github.com/b3log/wide) [![Build Status](https://img.shields.io/travis/b3log/wide.svg?style=flat)](https://travis-ci.org/b3log/wide) [![Go Report Card](https://goreportcard.com/badge/github.com/b3log/wide)](https://goreportcard.com/report/github.com/b3log/wide) [![Coverage Status](https://img.shields.io/coveralls/b3log/wide.svg?style=flat)](https://coveralls.io/r/b3log/wide) [![Apache License](https://img.shields.io/badge/license-apache2-orange.svg?style=flat)](https://www.apache.org/licenses/LICENSE-2.0) [![API Documentation](https://img.shields.io/badge/godoc-reference-blue.svg?style=flat)](https://godoc.org/github.com/b3log/wide) [![Download](https://img.shields.io/badge/download-~4.3K-red.svg?style=flat)](https://pan.baidu.com/s/1dD3XwOT) - -_Have a [try](https://wide.b3log.org/signup) first, then [download](https://pan.baidu.com/s/1dD3XwOT) and setup it on your local area network, enjoy yourself!_ - -先试试我们搭建好的[在线服务](https://wide.b3log.org/signup),你可以在这里[下载](https://pan.baidu.com/s/1dD3XwOT)并在本地环境运行,然后邀请小伙伴们来玩吧! - -> * 关于 Wide 的产品定位,请看[这里](https://hacpai.com/article/1438407961481),并欢迎参与讨论~ -> * 加入[**黑客派**](https://hacpai.com/register),与其他程序员、设计师共同成长! - -## Introduction - -A Web-based IDE for Teams using Go programming language/Golang. - -![Hello, 世界](https://cloud.githubusercontent.com/assets/873584/4606377/d0ca3c2a-521b-11e4-912c-d955ab05850b.png) - -## Authors - -[Daniel](https://github.com/88250) and [Vanessa](https://github.com/Vanessa219) are the main authors of Wide, [here](https://github.com/b3log/wide/graphs/contributors) are all contributors. - -Wide 的主要作者是 [Daniel](https://github.com/88250) 与 [Vanessa](https://github.com/Vanessa219),所有贡献者可以在[这里](https://github.com/b3log/wide/graphs/contributors)看到。 - -## Motivation - -* **Team** IDE: - * _Safe and reliable_: the project source code stored on the server in real time, the developer's machine crashes without losing any source code - * _Unified environment_: server unified development environment configuration, the developer machine without any additional configuration - * _Out of the box_: 5 minutes to setup a server then open browser to develop, debug - * _Version Control_: each developer has its own source code repository, easy sync with the trunk -* **Web-based** IDE: - * Developer needs a browser only - * Cross-platform, even on mobile devices - * Easy to extend - * Easy to integrate with other systems - * For the geeks -* A try for commercial-open source: versions customized for enterprises, close to their development work flows respectively -* Currently more popular Go IDE has some defects or regrets: - * Text editor (vim/emacs/sublime/Atom, etc.): For the Go newbie is too complex - * Plug-in (goclipse, etc.): the need for the original IDE support, not professional - * LiteIDE: no modern user interface :p - * No team development experience -* There are a few of GO IDEs, and no one developed by Go itself, this is a nice try - -## Features - -* [X] Code Highlight, Folding: Go/HTML/JavaScript/Markdown etc. -* [X] Autocomplete: Go/HTML etc. -* [X] Format: Go/HTML/JSON etc. -* [X] Build & Run -* [X] Multiplayer: a real team development experience -* [X] Navigation, Jump to declaration, Find usages, File search etc. -* [X] Shell: run command on the server -* [X] Web development: HTML/JS/CSS editor with [Emmet](https://emmet.io) integrated -* [X] Go tool: go get/install/fmt etc. -* [X] File Import & Export -* [X] Themes: editor and UI adjust, respectively -* [X] Cross-Compilation -* [ ] Debug -* [ ] Git integration: git command on the web - -## Screenshots - -* **Overview** - - ![Overview](https://cloud.githubusercontent.com/assets/873584/5450620/1d51831e-8543-11e4-930b-670871902425.png) -* **Goto File** - - ![Goto File](https://cloud.githubusercontent.com/assets/873584/5450616/1d495da6-8543-11e4-9285-f9d9c60779ac.png) -* **Autocomplete** - - ![Autocomplete](https://cloud.githubusercontent.com/assets/873584/5450619/1d4d5712-8543-11e4-8fe4-35dbc8348a6e.png) -* **Theme** - - ![4](https://cloud.githubusercontent.com/assets/873584/5450617/1d4c0826-8543-11e4-8b86-f79a4e41550a.png) -* **Show Expression Info** - - ![Show Expression Info](https://cloud.githubusercontent.com/assets/873584/5450618/1d4cd9f4-8543-11e4-950f-121bd3ff4a39.png) -* **Build Error Info** - - ![Build Error Info](https://cloud.githubusercontent.com/assets/873584/5450632/3e51cccc-8543-11e4-8ca8-8d2427aa16b8.png) -* **Git Clone** - - ![Git Clone](https://cloud.githubusercontent.com/assets/873584/6545235/2284f230-c5b7-11e4-985e-7e04367921b1.png) -* **Cross-Compilation** - - ![Cross-Compilation](https://cloud.githubusercontent.com/assets/873584/10130037/226d75fc-65f7-11e5-94e4-25ee579ca175.png) - -* **Playground** - ![Playground](https://cloud.githubusercontent.com/assets/873584/21209772/449ecfd2-c2b1-11e6-9aa6-a83477d9f269.gif) - -## Architecture - -### Build & Run - -![Build & Run](https://cloud.githubusercontent.com/assets/873584/4389219/3642bc62-43f3-11e4-8d1f-06d7aaf22784.png) - - * A browser tab corresponds to a Wide session - * Execution output push via WebSocket - -Flow: - 1. Browser sends ````Build```` request - 2. Server executes ````go build```` command via ````os/exec````
- 2.1. Generates a executable file - 3. Browser sends ````Run```` request - 4. Server executes the file via ````os/exec````
- 4.1. A running process
- 4.2. Execution output push via WebSocket channel - 5. Browser renders with callback function ````ws.onmessage```` - -### Code Assist - -![Code Assist](https://cloud.githubusercontent.com/assets/873584/4399135/3b80c21c-4463-11e4-8e94-7f7e8d12a4df.png) - - * Autocompletion - * Find Usages/Jump To Declaration/etc. - -Flow: - 1. Browser sends code assist request - 2. Handler gets user workspace of the request with HTTP session - 3. Server executes ````gocode````/````ide_stub(gotools)````
- 3.1 Sets environment variables (e.g. ${GOPATH})
- 3.2 ````gocode```` with ````lib-path```` parameter - -## Documents - -* [用户指南](https://www.gitbook.com/book/88250/wide-user-guide) -* [开发指南](https://www.gitbook.com/book/88250/wide-dev-guide) - -## Setup - -### Download Binary - -We have provided OS-specific executable binary as follows: - -* linux-amd64/386 -* windows-amd64/386 -* darwin-amd64/386 - -Download [HERE](https://pan.baidu.com/s/1dD3XwOT)! - -### Build Wide for yourself - -1. [Download](https://github.com/b3log/wide/archive/master.zip) source or by `git clone https://github.com/b3log/wide` -2. Get dependencies with - * `go get` - * `go get github.com/visualfc/gotools github.com/nsf/gocode github.com/bradfitz/goimports` -3. Compile wide with `go build` - -### Docker - -1. Get image: `sudo docker pull 88250/wide:latest` -2. Run: `sudo docker run -p 127.0.0.1:7070:7070 88250/wide:latest ./wide -docker=true -channel=ws://127.0.0.1:7070` -3. Open browser: http://127.0.0.1:7070 - -## Known Issues - -* [Shell is not available on Windows](https://github.com/b3log/wide/issues/32) -* [Rename directory](https://github.com/b3log/wide/issues/251) - -## Terms - -* This software is open sourced under the Apache License 2.0 -* You can not get rid of the "Powered by [B3log](https://b3log.org)" from any page, even which you made -* If you want to use this software for commercial purpose, please mail to support@liuyun.io for a commercial license request -* Copyright © b3log.org, all rights reserved - -## Credits - -Wide is made possible by the following open source projects. - -* [golang](https://golang.org) -* [CodeMirror](https://github.com/marijnh/CodeMirror) -* [zTree](https://github.com/zTree/zTree_v3) -* [LiteIDE](https://github.com/visualfc/liteide) -* [gocode](https://github.com/nsf/gocode) -* [Gorilla](https://github.com/gorilla) -* [Docker](https://docker.com) - ----- - - diff --git a/vendor/github.com/b3log/wide/TERMS.md b/vendor/github.com/b3log/wide/TERMS.md deleted file mode 100644 index 0fdd02a..0000000 --- a/vendor/github.com/b3log/wide/TERMS.md +++ /dev/null @@ -1,4 +0,0 @@ -* This software is open sourced under the Apache License 2.0 -* You can not get rid of the "Powered by [B3log](https://b3log.org)" from any pages, even the pages are developed by you -* If you want to use this software for commercial purpose, please mail to support@liuyun.io for request a commercial license -* Copyright (c) b3log.org, all rights reserved diff --git a/vendor/github.com/b3log/wide/coverage.sh b/vendor/github.com/b3log/wide/coverage.sh deleted file mode 100644 index ec12a36..0000000 --- a/vendor/github.com/b3log/wide/coverage.sh +++ /dev/null @@ -1,24 +0,0 @@ -#!/bin/bash -# see https://gist.github.com/hailiang/0f22736320abe6be71ce for more details - -set -e - -# Run test coverage on each subdirectories and merge the coverage profile. - -echo "mode: count" > profile.cov - -# Standard go tooling behavior is to ignore dirs with leading underscors -for dir in $(find . -maxdepth 10 -not -path './.git*' -not -path '*/_*' -not -path './vendor*' -type d); -do -if ls $dir/*.go &> /dev/null; then - go test -covermode=count -coverprofile=$dir/profile.tmp $dir - if [ -f $dir/profile.tmp ] - then - cat $dir/profile.tmp | tail -n +2 >> profile.cov - rm $dir/profile.tmp - fi -fi -done - -go tool cover -func profile.cov - diff --git a/vendor/github.com/b3log/wide/gulpfile.js b/vendor/github.com/b3log/wide/gulpfile.js deleted file mode 100644 index 7902f7c..0000000 --- a/vendor/github.com/b3log/wide/gulpfile.js +++ /dev/null @@ -1,135 +0,0 @@ -/* - * Copyright (c) 2014-2015, b3log.org - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * https://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -/** - * @file frontend tool. - * - * @author Liyuan Li - * @version 0.1.0.0, Dec 15, 2015 - */ -var gulp = require("gulp"); -var concat = require('gulp-concat'); -var minifyCSS = require('gulp-minify-css'); -var uglify = require('gulp-uglify'); -var sourcemaps = require("gulp-sourcemaps"); - -gulp.task('cc', function () { - // css - var cssLibs = ['./static/js/lib/jquery-layout/layout-default-latest.css', - './static/js/lib/codemirror-5.1/codemirror.css', - './static/js/lib/codemirror-5.1/addon/hint/show-hint.css', - './static/js/lib/codemirror-5.1/addon/lint/lint.css', - './static/js/lib/codemirror-5.1/addon/fold/foldgutter.css', - './static/js/lib/codemirror-5.1/addon/dialog/dialog.css', - './static/js/overwrite/codemirror/theme/*.css']; - gulp.src(cssLibs) - .pipe(minifyCSS()) - .pipe(concat('lib.min.css')) - .pipe(gulp.dest('./static/css/')); - - gulp.src('./static/js/lib/ztree/zTreeStyle.css') - .pipe(minifyCSS()) - .pipe(concat('zTreeStyle.min.css')) - .pipe(gulp.dest('./static/js/lib/ztree/')); - - var cssWide = ['./static/css/dialog.css', - './static/css/base.css', - './static/css/wide.css', - './static/css/side.css', - './static/css/start.css', - './static/css/about.css' - ]; - - gulp.src(cssWide) - .pipe(minifyCSS()) - .pipe(concat('wide.min.css')) - .pipe(gulp.dest('./static/css/')); - - - // js - var jsLibs = ['./static/js/lib/jquery-2.1.1.min.js', - './static/js/lib/jquery-ui.min.js', - './static/js/lib/jquery-layout/jquery.layout-latest.js', - './static/js/lib/reconnecting-websocket.js', - './static/js/lib/Autolinker.min.js', - './static/js/lib/emmet.js', - './static/js/lib/js-beautify-1.5.4/beautify.js', - './static/js/lib/js-beautify-1.5.4/beautify-html.js', - './static/js/lib/js-beautify-1.5.4/beautify-css.js', - './static/js/lib/jquery-file-upload-9.8.0/vendor/jquery.ui.widget.js', - './static/js/lib/jquery-file-upload-9.8.0/jquery.iframe-transport.js', - './static/js/lib/jquery-file-upload-9.8.0/jquery.fileupload.js', - './static/js/lib/codemirror-5.1/codemirror.min.js', - './static/js/lib/codemirror-5.1/addon/lint/lint.js', - './static/js/lib/codemirror-5.1/addon/lint/json-lint.js', - './static/js/lib/codemirror-5.1/addon/selection/active-line.js', - './static/js/lib/codemirror-5.1/addon/selection/active-line.js', - './static/js/overwrite/codemirror/addon/hint/show-hint.js', - './static/js/lib/codemirror-5.1/addon/hint/anyword-hint.js', - './static/js/lib/codemirror-5.1/addon/display/rulers.js', - './static/js/lib/codemirror-5.1/addon/edit/closebrackets.js', - './static/js/lib/codemirror-5.1/addon/edit/matchbrackets.js', - './static/js/lib/codemirror-5.1/addon/edit/closetag.js', - './static/js/lib/codemirror-5.1/addon/search/searchcursor.js', - './static/js/lib/codemirror-5.1/addon/search/search.js', - './static/js/lib/codemirror-5.1/addon/dialog/dialog.js', - './static/js/lib/codemirror-5.1/addon/search/match-highlighter.js', - './static/js/lib/codemirror-5.1/addon/fold/foldcode.js', - './static/js/lib/codemirror-5.1/addon/fold/foldgutter.js', - './static/js/lib/codemirror-5.1/addon/fold/brace-fold.js', - './static/js/lib/codemirror-5.1/addon/fold/xml-fold.js', - './static/js/lib/codemirror-5.1/addon/fold/markdown-fold.js', - './static/js/lib/codemirror-5.1/addon/fold/comment-fold.js', - './static/js/lib/codemirror-5.1/addon/fold/mode/loadmode.js', - './static/js/lib/codemirror-5.1/addon/fold/comment/comment.js', - './static/js/lib/codemirror-5.1/mode/meta.js', - './static/js/lib/codemirror-5.1/mode/go/go.js', - './static/js/lib/codemirror-5.1/mode/clike/clike.js', - './static/js/lib/codemirror-5.1/mode/xml/xml.js', - './static/js/lib/codemirror-5.1/mode/htmlmixed/htmlmixed.js', - './static/js/lib/codemirror-5.1/mode/javascript/javascript.js', - './static/js/lib/codemirror-5.1/mode/markdown/markdown.js', - './static/js/lib/codemirror-5.1/mode/css/css.js', - './static/js/lib/codemirror-5.1/mode/shell/shell.js', - './static/js/lib/codemirror-5.1/mode/sql/sql.js', - './static/js/lib/codemirror-5.1/keymap/vim.js', - './static/js/lib/lint/json-lint.js', - './static/js/lib/lint/go-lint.js']; - gulp.src(jsLibs) - .pipe(uglify()) - .pipe(concat('lib.min.js')) - .pipe(gulp.dest('./static/js/')); - - var jsWide = ['./static/js/tabs.js', - './static/js/tabs.js', - './static/js/dialog.js', - './static/js/editors.js', - './static/js/notification.js', - './static/js/tree.js', - './static/js/wide.js', - './static/js/session.js', - './static/js/menu.js', - './static/js/windows.js', - './static/js/hotkeys.js', - './static/js/bottomGroup.js' - ]; - gulp.src(jsWide) - .pipe(sourcemaps.init()) - .pipe(uglify()) - .pipe(concat('wide.min.js')) - .pipe(sourcemaps.write(".")) - .pipe(gulp.dest('./static/js/')); -}); \ No newline at end of file diff --git a/vendor/github.com/b3log/wide/header.exe b/vendor/github.com/b3log/wide/header.exe deleted file mode 100644 index 3d725bb268e449d2a85365be5070473d72b3c481..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 3235840 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Ξ(x}$Xp(Fwfsp%)(ekIZy|E4pqjCi+w>jH#Qn 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%0A#FdqlZ$T9^pg5PkDsAK+^V|UMu z3f93*AAsqI+Ubaf8t|? zt#<42=V>*#Zk-#s9v(KA;$GbS2LIu54nNZOU70jF(Z<1Kg&7Xa@aB^%BTHFj0|rQ# z`N%NW6WM02*R^yICV)+!@gBpG)ZxgrBfloxoW+R>VuY{1{u&pFR^Yv$x|&s2zpdss zh!4*6;=kW3BVX0azTr<6fxp8DG@gOxeBoRY;Lto+BieW^OSf8E;zS|Iloao?R2D+F zSnJ!cvVj*ieI5S3^&FjO#Sfvl>Yl>AsIPx4ww^p}y==$z!8KK~R4!MfYh12$mRcsM zI#b|PI(X=2L0!M4Pc(juo_qr0vojB3eTVLMKoh#3v7SCl4Yy=u6w^{e7X8W+zUUXq z%!^w9wJd^9t5ip_U)NyAXD5{@Z+j#I3TY z7pv2w=ZCypw@9oFWO$^6@ZdcZ7T3`)!9DVcU8PTtho3+&pDxg+d-X|DoKNki>PuW-;*otGO=~-%w(oBv z^%r3kldOuND)2m?f~OtC@26iE`~#J`XP%_JEFKwBy$?q!2%DJw!A6FC&sQJdkxGqi z=vJFAK;p#VGN$8^QRx@a;gZY;yjo&-wU$Ym_<|MbH#P63F5Ns| zKXCSN_R)7nn9SN+<>Rwqt{fA+45VBme0&tvqSm2{zKY(kPWsNj^D(Ppqc@yGgU{~x z2h!4^cxPu6f3l?PXf=3@E^ zr`bmPTI@3Fj6YM=U}1)y>jJG%twH*jcv%a^OS`)yHYrT$TodCZpY{e(; z!Nds~1sfQMp~K~Sr`Z!j$r6+@(N%knF_+;QAlvz$r;%$zHpQ6lewVH0k7?O} zBO}<#T8nB!^}y!Wx@@!3v(cA~;Gbj*Is{U(Wj%ll(|nO@StinRPT)_V7sO*q()CZ{ z+tps(qFSDD1}qeP5_^eAa4;+1+*X`VE>kD$3>m)a1?6DlNAw1F57z>3<7#hzQ*4>b z9g35zl8L)XSoMEv_gRJ*CJgFteU zRfQAD2RM|A^HJOf>NYKgw2jqS%YL2XXIl|mFukuAyTyHgN{LIc+>=jAs)th)@)hmX??Rur2 zeg{6M7i^EuHGdO6ops^gX=pHwt!Xo(FGIh!lr0)Bc)}sFL6g>0>%PNX(ej!@l%tAq zK()wXInM4f8)iTaUBqIbYsL3#{I!&hN10IOOjA~9mAmdfV%F2+O)p3-y%Wq zTt6=SHdb+2hNF4ilWx-to*#xbz6wu4Xt8&*4=tYM9O%P$7Me{uP=06V zO}33WEKtT2m}>`f_)MV- zpGYfYe&0W+&=pFh=QK)zxhn7+pMrU=sYBMKl`^G$_aml^;*tM;l$NxIpqOb%!CFRP z8oVTZ>Tl_XtHJ*&Ah8RS2dmLf_)MV}9#5;(p!_eENYJL#6qH+t2M=-uWsZaLsUN3_ zxJ_F({#8(pT$z}*4HkTe`7!gZ!y%%bo|c+B>Y*DyB5Hw~uk6_$O4hA2EggH~i|@C3oa9T^p@sUeHjVz5@gzqz z!I@g*g6cWJ7la#yJxyMN6E0vZPF9wF*=UYjpjtOw| zT{de_oPTdY2bWFq{M(wu`NJ8R+><=hE3(4mZYHr`F~Wa*IW=}Hj@d6urlwXZ{hOcU zGo>4^R%ySYg2JOhAm$kmMH{%Po5a>yWp#payTcGYFYK0Iw|V*V@&%t6QJgg7aKDwWpf;lx@xI|;k~M>9D3xVaza=MHe=JXB{>gdX#sws1 zL>oJ>$4cv4`j*zezljsT`g1{E&Q&#K{@FRYCT;Rb@d1O%VrL+$XXM+y!ZY$6;OdKi zvycG9gTo%)rLXa+9kIuhP`@Qp?$P>yXSN++%pT|5qXd`F=bPpTMvRb*z*ShzUY+vj z^J_S;)@yApCRbT>%<9tmt;Ny$a)IiXj3|!}>s{_&QdnNJE?Uo`1oN{oy)(UsjwN@r zah)clMM1RTLmpsB&Asl?3HoL+fqmTuwVJ^RxX+_sJ+9-p13Fdg2gNX65C>TexhhqqOC--lg>)aNWX+ zl4oR-m#li9t<8D$oAbvGS~+&;(vpq*T{X5TFS$k`J_xc{=<_4LZiAnh18x=lk@m_o z>^Ftj@51Eq@g1={4g2^c!T!un?EloT??(<@>gxQJ)fsuUb+Cl4z_k<>=ESa#s(<1~;K$NVh_ahlSqoHJTK}EJefRq0qg=k1TIhi#65g zhRxbh;b%|%h@YaisXu24`9@+{$#=3JdEVtK_9MTur|8|ytjrHlqs6ifd*T|K+5sK5 z3wN!ryc#|5DvKYj{AZ1#{RRF%*Ij~BUj5Y4lapWuTW37do@}3F?;r{H;UTu&t76T{ zEoa3ibi{sZsNces87tAUskMPjQ~-dU2gnYmV2#20J6IbAsDX$jnHL@661i zEjCTp{5Bk$|Kbf6rB^c}Eb}9$?YU2e?%L>!Y8)X-ilxM=^iEz4QB2!1vXqdc8Btzv z=5SFwx$%Ln%Nbj=bb6`nLPHr8=_r-qOF0IJSP48HW&TgIN;BKaI1t};1{Pq9eqG0n znTk>kiQ$@~#$F$}qFHZDLuP$-}9Qrgi% z!nVX3CDd)%ME>Xvb4f3YpV+swCDFUIZgZV-*EiV5+}X%2*N_b8UyhlEPQ^ky-%^H* zV1zosAADQ+`D=Bu_FPIe>~yk!`s*CBI6=DaLlkeP?t8Da{u^}Pz7#I?e~Ruqq))j& z72WrrXuU$y(S3bVx=*W=Wn3F*n=(xIRbMf3iS(5zF0kfKP}ULS4I}6}dg#OpbvAA! zF;ti^_DHHe*~0swbd9*8#-ZO%jdz6{=&0LavVwyD@FqIy^h0+n+qW108D?~8ylfcM zGu5uQeSH=#=GQVPy_BqY9bcxyyn7l03 zhFOPb*AfC>g3-rgu42&Rk%24IEJO3A?|#4fPSUvN(~^jM&j>cL_(M{RiNWZ<2quIz zG1%_mTb1|^LdOo@Y`w-KcPy0YwF7ki)ge9ehm36V1>aB{?8831XyY zcs8FI1ngb?_r_UXyeT7}6h@tyYn9o2+S%Sl^I=!__Bxuyz4@BUwY--t9yJ>=*omPH zXwRt#eV8yCnNT80k3I@zAlp)*DrQk`Z~zllwP=%x0u5rPqmeLev`Cz(VXIcn>yya1 zXD${F{OkD|2>4?9k}m~nBq!J?pp&l^nvx_}{~}jBnTCCvjr1CVX9Q%kVpOPe{yDiPxQge ztY1gZC(B)-KhzI8nE}~tGrZB1I!~23%)Rm!2LH*W$|rUJZ*+-O6vhaL8499E%n0syC0Q3Fw!YdJ99({<5od!G<&1=czp&{AVB}%iu$g`26nk9fL*T(9Q^KD}Kq~+u$y0{;u;K zkMBya-~=G`>8SO^zeO{KSTCW9ZtJrxIDp6Cm7hosQdB%lZQbn{BmCP_f1IlV9m)!-OR!=44BHTpTgPJ!)cQvWf9~1Sx zwN~7cIE+2^qrAEggmSNLL8h#N`uF$MjWJXZg*mR|jKyuRiWwIzpY&!^{ds+dWNe7$ z^!c%ty?7W9RU0ceL@QTph)!(LS_egET%fOQ8=~V|$deua`#=imxpF!0k*Dl^;_~R3 z%@;)vT|Rvz4?j*9@5;=O#e(2@(_jmh0&Y^?Js*P0{EJ+kL&OnaWcjAQny(;KYD|XN|4Zb;vo=K|3f~| z{VsDFP2Bw_WLY!ewqMUbb%c}xTAa!LE8;uL7c1jD$>4OXx`i3$c9b8s_lutg-Oa-&` z5Ni-;u0=g&T94mV>#Ze@B)+1EchwkM?3|fbX4yTWkfVF&s)rT$|4{G7#82oL6Pu;S z`i{(+fzf%72Rw5Di6+l(`bPZl^nna`Ts6i4PTBhjOhmgvLF0Djt?9&YB#J4N0#|9U ztQ3)tNB;e~IwfTgx=yo#x)a@?m~XXk(^x!v7u7G`_}Ln#A4$`G#ha;N%kFBsrFw6k zpWT`^%IyoF!R>d2querOqoH6os%T#&odm9=$fXwE7SZ)7@q#J9osCJZ*K_Pm_boo8 z$*RCwx#Y zZ6+V8qh66t@!Xl#OY4W(K=1CySMFl@!IdvR zEv~FNi^mpwtUg}7FrzsORV^@a%b3-aldUvDQVk}GRPDcih_>(zp6&1l1tsQE0Lm#XKo9nkcFPH}F*ATP&jEduYG%Pgn@MZ6 z#og%7vKq?JhdX2f?aY)Y4LhB9Qqg2n#x>RyjSA(AxOrk19nV9<`N1%d*?w~m{&Lyt z-);Z7Ua0DzKLRFzLW|%oF!mkxUv$=g1xhzg>j6`h27d4fJDfn%mrsed?rKY3-?!K5 zE7P&2eLgAH0e_Xu$FruQax~CvT%&ls`VabIT**4FKFp1CnXAnAry(y!7O;&=+0pg) z%z@Ht)M)aWHRyJf?-=C_JQc!qp2C0VM>SY~z9H%ai5>_D2kSs=OF#kcX>7^^^t1Q8{H`{1LnAO_UF8q(`?jXn$1obqM)jqqHpkiSaH5M$6Dtzcu6i#!?!_`sb5oHNwO!K3Cf^L zqHpII-gEz-P`9?zCy~F6lSLu+98RcVBI3pCEUIIFi&l#;xytbNC&~`fP5PXi3P$#C zc~GWz(Sm7U?UuQE*5aBpuuEZ5H+;E@Fd$lV03I5oHFDxhvQS}zpztRYf>B+agcDee zX=*8{pn@wR^lo@(?~?Zg_?{gqpw@je9F2{%Qnr~N{zv9L^6%TUgs$3WG&`Sr7J)jInUw2zBHR0>4Kf8z5PjzbUn$>^sBe8 zFH%$PbO&tOGL>^wawqFU(TZt@OPTnQv3fP%Pejuf&MXA+1;&1?m%@QYgm9dVM@D>| zHv8HSiUh;r*6qtP>GmY>kQ{}3f-gGjJeG=q5&BCpVi}+wA}h)S~H`rIE9Q+-8irg3RC_7Ece86ImhR*&4)M@^0X zmwt!>s9z@ki9hNMSv8FQUsogI*D*ue%Id3T$b3ON9)H2nnKeg!J78SrCBS+H%8y+5 zur0s-Zz>4}vAH7{s2v`x4?LVk2(4%bm)-5W2$dcT6nu^wAZSuv2OYZMI& z92WuyjZOJoTDELudp^vTZ`qD<*_Qq~Et`cR-w|d*(^1==F59EsvRx5oLvN663LXI( zedC(6+N4^76UY`!4L6omNgv6Ha_x{b&%-gwcgk#I>Ib!>DIV!acR3JLMLehA0I^lp zT%BufT({;{huJ1swh1oV`RUo0$cy)zQOVl_3XjlQqG)S$yflr=1~YRH9| zuoVhy#c$PnM2iesIaCMCa-PHgr0eC*+$c{riO$af*~tRSO_3knr9d!R5T@%(v?7u_ z84Dk+SfL85q!S_dLa*O)?;%a|qKyqO3^R_$9_8qtRP$p>w& zJwdb~ELeo9vX^($2-Wg0$n$A$7wu9&>;blr`p&=r3G!l_SG8|kD3PfdT)(;Zw4C^O zZW*9&rExDS_AV#Rb+mEC&^nu$mBst)qo4*ZD71KnVC27?B{c%vG4`tym@QSYSKV&& z3heI6g^Uk~Xe3SIf+olD)(f#z((vAyq;k419``yq5S;+wR&b0nq8Nhmdo5}s1 z1~6Yg3%!sZkZNq7cz_JSwu>ZJX`sX-7yUO)h!c1zkS8Rj|+i*O0D7XY|(|4a;l#t#}V>pS!U*4o+50{ODc1*wJv&v2HWMjCF3q z*`5M5gaWShFt%fh***DKrz)|h?X4KizZK_poJ11dHMUnk@A1&y&0mY7jrV}3=)COp ze?Wd2j~jV~!ShG1)RA`zB=)Dk?HjPp!imCp(RqWylOhV?zrjhV^y(LYg3c0CUs3my zCXjY|#E(9_O9$_2cT!oY4i*Z&d{8~O{izl0?Q_!#Bgw%j=ZNn#=9pHX0F6Px;Mcy5 zh=*=Tqy2%R{pYex=3@)07?jq0S_*~oS;2B8-lfENr1sXdqGky^uGF_l4OY9_uicQA zWteJzVWzPkwFXa~?Lea&22+800-R>4DkNPqqTmY#a2lJnIjtsxbF3Q6*#VpdO8jb$ z6`hkl5EG@E5%gE;Yf7bO1?pnZm+>`N;0oM)S6W*+D)1(TMsR;vV3HMhoz2X_mwXD= zIS6n0GOd*Lbyc19HJ)8*0ye*zn0_}v1j}GW+|F3D+8i7!%0a#(=K2Tt}KGX zW@#(K6=m#Xx4zz5GJ=M%VoP)=C>jM}Yc27@Zx!~dld0)Eg6N67IM_9xgPnr;;f9DT zKRf$AP>&<2E zCC`ZA2x{#b(7Jp~6QMh;WBkR$)XLLQ8XrZp?CMfoVf00>(&6jNVhdedEFpxiQ{&V} zlILi3!nc2q@GXmO2jBMkkxronJqWJI0s;kw4EkVjhV6hYdUYBhki}g8KA^AeFT!WS zbwGXk>QC>o%*ACfHkG}~MUJsIoRhoNoZLTF84hU9qKvZQQX!ldj#tl1Slcccy1XPh zZ#nlk?yma+hGVME&^?v04ecAc$qOFSHWyD{m<5m4t(z|n#9jQDe&gXUuEsXK!+OyM z3ybiF3_XTH7{_0;64(;w59t^!YwHzr&N1qDU@N$T_(3y<7GV+$Mpr8+Q}R&epO9aM z>$k~OoD*%h3rinToSO1H`nr7Rf6DuPR!R&PJa%_f6neXTSc zjnzn5d_ccatIvh0Z!W%SaCvM+>8cN06~uI|Det$`%Uq)O=^t4|rLAo7C9Y3C^PK?$ z?^}@ol_vQTpGzBouOdzuqtc=OEM>8*qipEPkour!|>R?Ba+k)vrr)(KhSZ!7qO#YAlC#Ug8KGovw- z!ExS*zy5CC%3@!X)_)u=t$W$9TED4J^oD;aQ)>$q8JcJP(+b()3H2@CcpJgxhw8XD zsJRT+k(?xp?S$}ti_3<7A>fQh1b{YC#VKCgbc7c_iRc+5xM;yu(Zwjdlr&HOQp5cm zHx**Ms`Bcady%bXpdTstojD5jiq6ZdfA6J!tDES2$cuH0#GTa( z*#TDnNz|)*WxY@m|0SJijn)$q?K(J(sLp@&DKGjrEKG({)LFECCQpdrF=gnSRiB0o zR62BPdB3ft@#`|n(LePcLV#tevkYZcTw1?4tF&nGv_l(q8rw7&wYP8^!TWtmTWtzb z7DIiZpS~=OZA*$!;^$JaNqJ&>ckHY3*xO-&#E;Rn^kq|dY%4&N#WuFjF2|E|>h@55 zT{?7IdB1I?@uU0enzv~OB06JXm(8WC-g9twln-qsM|pfKaDS!g=4i2eoC{^kV?len zdOVGjoLSj<#vi@;H|$Vv?5H^$Q8}ul z{?jMM_WN&0TekmP#le6r@*<2K`FUcfEdACNNkn2dO&^%zDBk;t;IZ2rA3aEtr=cA^ zQPsqF6wI;|tvfM}GAxH$4WgxKGaw0df#QrOCCTPHi7sQksa9=jwu?=6={spd?NAbe z_pf%=-O*H3rWU6z){=8`B-u zs69^UGe{4va#j3wYg!dQ6bNS<2<1#XhoQepH?H^M6&<>-%=6F8DvkHSXhOJ!gT$S< z6@o7&2;?#tP+FwCXj5qnh04ISDRG|CU$OM0hD`GD%0w24vYWcJZJbe2bVaR8eh+W=8#cz3ba@fZ}LBcc|J~S#wl$9;+l@mdrnb zhDyw%GIr3Cu|wNRHZC7Cbb)iRd_8n=zYR@nh}d3FTGP*}sKGdPP_rxqN}7&*_U7(f ze>GOi(MiXR^YqkPwh&HEYU|oaQ2iOk-Ms{DZ)g8>vo|dM`Zq3KZ<1!lRbE_wFeL5- zLSn6D?nWEOn@c*met5f6#w<@XoR8#MtlepPz&Tz>etRfRK6uH8isVD3J*4b=^VUHm zCz9IWi-Ceg=nenMZkqWL>g$yCLJe12Go!Qq$p@6gPwF&Uv@QlVOr@>0{7gN#lwqZA znVyLWEr{0NN8YB1qY4%2?{y#yoM>oSr@iJf{4&hIc>{!zZly?-RX@0}mixU*>o!@v zhe+YqwYhqgX%v|t+2BHerQ(I9vGrlzY5#Q9?3~KcvCxKRO+80jZNoKIXLnZiW(GiZ z)+INBWt@hosm2~prt6B1`b~WKEngOo8C=v=y|5!2(^eBsOmY;Bd_y2EPwF*zR}_Mk zMx@qlL=;Z{RSk&LA3D!R~vz zxeG?aqDc#b3w|a|6#U%%oZ)^>aX+5>DRDnPaX&}c4+jbe(nJjd0lN;a;3pV#hUwvS zB}$L7$VO+vJ6Y2@xdo)VsR3{m*oq#4FsFWkxqfhkK5-^gZCU|a4`@_@3M=v%a~n{Ys7E zp<;HDoI47OAd4R5e#|^|VJeLAGA&!x*z(Qd&ilaBoQFf4yOLpnBYZmv( zxleq?JR6;sB1+?u>EoSZ7w4&k;6f`G&L?3%mc6tEs&?~zHM`SJmD--9sc$jt<0;bQ zwB|H??5#S+U1==U|1|sQ?S5vspT>_t(tB`A&-m%fL~VQjgGJCx1W7XWMzRz!21_D_ zS)^rN%&w{XnW|~L2}7l+m)N}}$nxr2J9A8XN4;dEnlUU3J7*V^OF83Z{rlIKZd_0c z$lUiv?|Hf2UVg)0jphAEE^)?V`>krC=BE-TLnE`c_yErE+3Ib47e{zsFLNvUZ~AVu zU%zlu5{AaLSA8KWR;Bq0pb}JIT~RgMl&XQHY^!0p)J^?+Q7>E8tyTAp*TD?<3&z*= z?Qd!37EacVq$>xQvH6iRHa{;Px~{a}B6?@go-w9rKOiY>S(jDXv9K)mo~CWfG%X|W zt8`*2tC=ogZqWWdMvu3! z>aS;mZ8%pdA4GTB%lj=W-MFZh`l|bt#mDt6kGOfUFl`^)S#`-*+YOndj2g4F=k_%(!Q2Vh58(Yw?3WKyQ-@2+M2mY3o;sc+5V z^V9@?qO&v?EgSx>PQ7yR8QvgPvs%lfxv7+@b|VK2$&-ckh11z*=(PSJ&$xj&{3>5p zxM;pI^|Z3sk}`kbu=3cd)Kr-bb03uU+k*R5LmYL@rt`+;1IIM&X7v2bakpk1>q>_+ zPQFJTmEOvrvkJ+(9fas0Tvq15cl8>P*=e3!5q7@Ri zXgHdEiu4b*Fl1rc&J=b_`GWPs|KqHO&TUNjvS<&ll3QNM-0^kII*`l69x z0JW6HR+Pt2!}yk=y@HOG$HcV=(;^8|v_adYsAV@cv~IF#f4HYrL^Vkbq2~RcNGe-W z5wbz$!`~^x&dw9nFsDSpQGzACg!7<$Knb{@wBwZ|Bfv^|<*|QK=Bk&N186-&8Yd4i zGx;u|qJCX?p|oRZ`Op?*tR?fUB;pWnQ|3p-QuB%cq6v309^$|bi2|s@?#h|Qr2VsLBE`US- z9h2(bTPPkwR>v|_V0trzVJ$1~wgdt~vEvuKumL<+$ zswTH-nldkopNghjCP`uNL41}tP1$Qq(}|&?Y|knqAm|wOi3StiVW@nKZK5_a=y|-n zkH#4<8QLae2w+d}C$cL$$IYzC`;*O>&$Z=S%$)fLkelH%%MJSR>`(VlPQtqneb5;b zIVxuc!p*4X;L~ttQ4Wi1^_!2oc2CTVc>PQ-7u(-K{S#)-a)G@WxCw1J6PXZ8-_3SFhDKzUN<4I41h^aaC;Jk2ZcN62(XV{zH()t?GRiA9p@ITIF4~atfa> z%!LB++xJ|q_{tdj8t%9HLK;~hT*EACh(7IAaTW=H*RK*}^ zDR9dM^h-zhc8Ed8GIyAP5QqmRwO&E4e39J{8|?OK(vVa=?a#qM8}3cB>C8uR?Zu(_ zd&V!*l5G9$ykyez@1`Xc0CaGIB?TF5U1E+AgItLVkQ$MwXZrlU8$T282lOC&({b0b z(n0?en|eA26~%{m9|)&wYJM2*FScAW);LyaEzY4b=C{Rp_M74pSy-1f3;BWeC&e53 zI^@H?kTom#z#PKHXhS}EpB4qql`@X_Ep9NmuAXoRec_z zFcFpVvu}KnC=zDWqXQ6ptriOOK*C>@;OD;1jtq|-2#rgwC($erZ78+fvrD2mY*{^< zt*g66R1eQfdCs0~MM1*i;`3o~j`4-`3|P&!{AH;7bY&7*enqim;na*6kHF6SC^;(& z4(kJ#j)6-x-wXcskU$gunY-lMZfE*GKK-aciAeC<^G!@oCE|cs4W@+7`ID-avlA;- zp?rd@h=R}o!I3lExz0JnR_qQ(B$*Qq3y-!G4;vFCgQn3kbWM`h^sWG7_G&%l!I&T` znDU|fUZL;7tsyTNKICxD3{F8$sGxlczFZ-!Xi%`K{RxWy;22XfxEgZqMSOrQu|OM= zV<%E2H7;tg! z?22^}j+$?QVSE=Du1Uh64mh+FvWViq(pjQG>^P(6Zm+`(=QARW1RM|e5nL8o(R9_<1HqEC|%kzF}_ zxinZ~^Yu89ll1!=@RhTc%AdL$@pZF7Z+ccsgqX<*)e${kP$7pr1}7Qf-DUf=4anK1g)-~ z`~>KrV=*8mO&WIK)!ET;@QA!Ng9YA(b4)(zhlWDx2uA$g#U2%DPuSf?3E?)?#L>wn z-uR^uAOJBZE&>kQ0EpE>B?sTr(XoB=YQu|bpuvG?`tdc6_fQR#fgv`EA>xs_1DwGb zk`zDz)<)mpkFT2lw-|+%>Xa4lE@Hn*Rh>rV5su3HzyXN^q|oBok3T4ag&46|i}%hp zf(>5;hAj1l#98KL5rx8?u^cOtdyBOr&c~0A{xD3tKB@N4j!dt8 z9laBl3Uq{o+fC(Am8x^v!&66!&c!(Xprb}XZKzt_6_OjKi^~xf54>&@Waw3$^o69I z^qrJOU(`z{SG~Xzk3+uWf~DGz(|}g6uM{&ILxL_^-zHM=i6x#4s+o!e=KgiM+U$|m zU0V8CswJ^hlISD45FJ5DRX*(xj_5G2BYI&c(V;>J(hU}b4$&(hdga34(X15Fi-Ysd zGiu&DH;oWR&1XbESPm5cHJ`i0vTaEZBeZO{hS`cO+wCsf))UieGooKcw&2&Utp(4d zrS2=DUpqcY^bl()qK67+IwhSWx3fOkjZ zyo_2PxaM%zTM4t<^6NB5Ftcw8Sp~t7=Nc9Ur|%ar37K=LD^BAe>&8iz?d9}rhO7(2 zYz3C>Vwdfe(lm4!vW_8JaEWVc%sRk}m_VTb26NkajFu=J4@;^B-O zID_+=#=eA)W5?$;%@fMH_%}Qlq+&7Ske|I|nlL>esl!91h9Uwd@@JT~rURXFb@51t zG+>cVCnTOt%Gq_vdMFTTeDQIo?(I^?57O(XR976`RAt(0a2b24Y>0Pw>sen6bov55 z=^VeqZ8X9eEGC@I?IW-wZ%*yxEWqp3BbF`fZx`vlin*i^W{wn!NRPO)JHnxJ5B910 zP8*L1mY`tJ#yfRWv-x5h;oX>MKVsj>cJ7^NY+}5&8SjX)jj(K6S%M@oPOC2Fz`^c@z{%|SSYwHxh9gL?sMHT*_Ynm&fZ}}66RXf``2yPLtMZR2w z(*q$J;1}oAZ@MtrSRt(YktObXv@szr(>XgK@*ESyBNaERBAFxG=BcK#VR?S;aW%NA z2*vNGreoO+s)YM5?I(9SKMlS7A^Rv3`%qSBT_(oS1=$lx@pE?y3*T$svo|grqVV@A z`nsg%LX5!+c_d&E{$=*CrTE%$-u#O%a{s)IpV@?0+ZtN79_y{xq8Q%zz*`CS(z)dI z+am1IRK@Ypi?19^#iM>)+%#&C7e6gCRpE?B>G*P*Rlk@(ds%+&mEcP~`bcPrWk0S| zKl?d;{M?@jm+{Ihr9W)xl*m3-C72Ho6HJN7%~m233#%>knbn-naRpm0jMlS;p3%{w z%beo_fYc1|)7$d=AzP<86qyN&&@yK7T|KPA?8F%xpV&6SKk}bsv%>|R6_H4tq*NvY z)oq3T=y{gfQDYm9r{Jw@!wR0!mOsXi+(i<*xoQs98Wo(&*Ts>$uG|;Z!DfxAA&W$A zb?T@Xb;RwM->EZ&ni)%S-Y&)PO-|`=b3SA?{Xdl_gY2`%BJYL7D-$xb0Ws% zFNB@~SL~pG8--$w+aX5C`_t}uZ5kK+lCc}dMm#%bf#``Mgr-@+Zsbo~j_6pMra(Ga zv@^*}6ze z`AD<&^9hnk9K+N17(af6Eayp<;THQ7`TLZRP=jyOoG`NH7jR8;bvcjA-QzKfBa3*- zSRDC>eqis-&5pgZK+UyQp6TG=n;it>qGC6#^#Q~V>55;}p4H>({~glMxJXHfdzDHV%dMAtq?mS-N+E~W}t@KG>J@B(n2Z87&1SoPJxfe&yyuyjl50br%XRo|KS{xqHNSnja z=$iNE4YYAr-4AXGO*WH{io`?-L_B+(L6T(Kv!3SQnz?*lN(18N;1WnKu0{NCH%KCY zLa#vE@CX(Al{sn_yOSgwG&c_8BZ~wRhaKXb{}l=m{d0iSbbJ&NOSA>jyS{*hP>Rh! z`xR}D&a_kEQk4*lv7Yc%hG60)aQL82Swr*oEaB9@lG@D!qm2q^V&!aoAwl;Iy~g;t zM}UX1Qjbe$ye!sViRho)z4=}ipO9r~TBj+CotRbbd&PFj@Bw^S9O-|#a2Ya!+GfoZ zHc)?ZfH05$gM(XH*;^cWcd{|JbwW63B{Qg%akD-@`B10_w9FwfFq4L~G#uUZmNbB0 zNh1?6a^gpx1q@PW!LzfCKc4tIdO!Q;B7*54x&Zwz@HkT0j~vfubn3BQEY~L=ygS&6 z%U(D38bh6F4TscfJk``u8w=WrbDX*;Q*j9iea#BaehT9M%_%I&!O6T^^XmGT8LwcjQ+rPF3Pe19o6oXyNxO z6rm6tvPaEHqGP^TBRdb==pajRjWF9`FGWtc*o%>t2)g>+8y!+3(B0@kL(vq zOR`%Z9&kw-#geuxlE@LP|G3BDGtcCyE0S0mPHd5;9)74Q4jykt`NY4|zZxGiY_8ic zvPwZtb?e>(IPDi%t>3u&^&_?Lt+dNM%0wugtyU1se6w;%#x5m6B8G&4KIWjd7QN&Y z0L7rUdE*Cuy^vd9J7k8nF7yl)m|%E{8+MY1ZPq(V@dpm_l3T%b^~qsqgH+i)cnQl! zpT6>NFLPP+>CzE(pLAT$ag?u6)e`=H&FL{kUq)~EKrIY^#fv{<_sS8y)yO3bFIu|; zmT|)#`=T~pJG{)#^y*u(*!(1QmP^#kAPx{;Qo3=4VkP{Hlj4KfaIta58*I`bw)y={ z(yNn#jqXtADV18Z4i7|%chc}NYo=kCLtpZ6X4{n?9*+dUYn6$@ZTjWi2+#X+y;IqP zmW~2h^SoBSL;k5-^d8?Aa>ef`28&>qLyYHJ7fQn=K1P(H^Cs+B|KYy1Tla`IXckqw zbzn^ur*bl@Tg%bmkA%{u5PjngLVO+TVXsN`h0`Uf3+}6P?&f?93mnKv?g`l;4B)g= zxl@Vgq~Is}3tm%33av-$QL*h%3WJofuY%k#6Kgr<%43qjKZfNK?V=ZSpCmPBKYc{q zUTum^PgC@iPsVf4l9Vepkc=ZVxTc2p;^0p=x(g&LRK4fLl7s0zp5aRnoR)%s>28sF zP-~4L9CXd7p-V`(M7nW^#$_CMNK}*Mx!v+6&Xp=k;zeEW80NZ;@4vaGSNornH6_-9 z_Tc^D>BRa5)gnb7^iLH+gJ13N0lvUo8ooaML9*uU@U@q%8+;FZjhyf;_?pg1ucDa^ zQWXNr?3Un)6CAz(^ZXD3#+V(G^_U%jIqh$*_3tF>?D0DWlVNqQNlF%=P`!d+ij3eV zA?$Fu`FoSJe%!5ZLi^x>{dR!8rFIul5_`i%Tq?)ZR^$X%{#Ciw9FOIwwU>N{DeNxu zkS8%U#~q6+`!2fodPYEXm228OZH?NbT8&gCYBDj_h!8Sb z;`}X+>r8y(*|%MYMIs&V8pz)I6y6Y)d@dmb0AX23;KWt^c)nU^XD}bUrB;COk<$%s zF?Qy=j{Y*155F6bd_R`&R&V&-loH<$^!ymkFEv#28-RWyeQ|9R4Fsb?pttK^_x=_c zUxxja7zdljq?qoD{2dUk;2(}n96uGPOX-ALae6x8EPQ46*~vR)AsnW0l1+TqT0C;- zi)o0rSnw$>X*-yMhvs7l^a%sDdY*qE>6$YP22%`0Vo$t2!N&%$-xx@KfxIP5g z8y3F%;_H!RQ57CHE$>Xw9Al2%dlzWaXyYXa( zewv?hRH*b44@tnRda7$*;#U^f$s#uz5(!)}?ci6?_R5;GRiR&*&$*NSkYing`3-Bi zS}#_S?^hIX0O{~GG5zXjx;#6ck|(M_*LM0y)i!D@10dJv(Q**X0yGajr^IW1O3^i7LhAM&MrMv z$0{q;jj`%##(J@t*cjk@rs>BdxQ*k4WIwY1+3G`NpKBn=eDY=JKOagp=Z7Ddh1==D zv#pYpk~-r7l?M9uKXH4i!J10@Nir>Qv`oUCp9Jf_cEYqnd0MDeyWaP}MI@ur2#I0O z`BqsDdq}i-MRD{Bt%%qXPNC(*A8CN(2zdCfor2ZQJmc+fWjdJwn{C74Y9YA>!NedV z_-1u)Oniunl3_#&n<;320G9UX58a-Ox~^x9TVE~^;HfXcK5XJn3?i3YLH4hk*0ud~ zGhKfR#9#U1FaAWvO~?Tnz?bxh4ng#tZ6^8FU%H9~iW5STh5zO7DtV*CRE4d^_`4>{ z1GQy#gAuv8?|9v|j>VC)3IDT*ha1-6flG0YL<+Q`NCK%(w8Lfd;-ee+rv8HJ)8T;3Ge@E;3Fq^8$XaL zKnJezR&XTOXK3u)o6k~oT23V6-od!Gm!7pRZwC>pmXmw(L|wmd_EPRzXqld+=(V@* zfq^+!?z0eik z3;oFY@kZfhK{Co93J{r)=sGs*8c72Kl&^ zXo^;7i*afM!x$X>?{qziUnV2icoGRPc%c|QcoW@Dwzb`|Ef2FX43h0}m+iuX)3h=~ z$Os+^v*lYh-(_3$!?bLsyk{y~Jd$^GT0%dSza%V=9Ma5XZj68KptNj4d+^gR8_JMu zV_desbj!9k*@EMRB1urkQoXxe@G1wAjk_{SDmOSL^vn=FK3vFkk~Qo@MRoe z=fITFoDV_ZnrKcy(=Hj_&Z!<&5Y5>}$_8$_S;X5LFEBh*YFJ4 z!vXsiO*;e>d;UmCPKCjo7tQ%M5CQkD7Yt*ML{2MjTY1Cx9Q=xSH2Ct))6y7DYBpFQ zPWAGCu3XbJHPd^;yQcu)axF-}$b-e|O6^Az5E2 z#h1GJ{@N|$$gsXDt8aH#-$UK9^-tE9@8H|Z)puUEjPK)Iv5pjjS1DgQ^R}yXdbi9^ zCNskt>h&UQY|wLRw~W5a7&+^7@sqOt)@5x^S0sj@DzbVYyuzA3&o%wv5ovhL62gm; zO&7ZQN?m;)7o}zFuZ%g#j3Zpee3vo)Xq zj24)Z>H0-ivlhKrQCN233>P@94|%eZ;DAkuD$_POL#{YYoge=etiLKcONxeu##bdW zTzd8~mYx&&5x^bnx;N%rc<=jYc2XlzZQ?YqAXGU*4n%8a>X`(ww^~jH)mjU(?n+xjg z{Tm+q(k$78E>r^JXiMbUi-S8~>#eDjpS^M1z8M`$RCb99ja<3$OO*D2qNUL}x}zZe z(@a^7qcf>ET5t28cy9ZA%}n|%@GA!3&#z{jm-(pJ3G0Db^E5N#w<1xv*6SDNqcf@p z(T9Pd3*=VnrylNtBGhI#ok5C&^ojH`H``2$T`pO=1%XqJ`mp}Ida>P#%VMCrQ_0M~ z_65Nm__m`vV`l0&_TYwGb26j>&d6B(N(H@qXfhtbEF>dk|P9)v8 z&}b0}g3Dg%m7!~%WR1j|oRw1s;S91N|2fql`+}d2RY}Nx8O+O)2x@f8{>!bHy7Dv0 zi>6&h+($e}60<;m+T0kGQ(7sr@hXmI?d+2vPaFun^wEru&Y9PRClax)37%jSSA_8Y zKYxlxE_fkLoBT*!pUcc2zeM7G7(o#oVu7CMKm8zR4}hsz3X?!tUaT2%Z?Qtr1)-aI z1b0ze`!gvMrKkF$vo3Y^N!t9Ae0@UEsHH+`?7kJTSi2Ut^C9N2Gcekaz@l(hdTWjC zCN`^4!JTcYhxPtOg2Xa(#j(3x+THD47m#YFI5Vqx$9%||Y$K)zvwu(JA#eRAR>`hc z<&l#f8j``?d6DDz6~UCX<~2Y2(Q?E9zezc{!u<}>2F-Y$6@6LoZ`j>Za?kq}Gd5oT z3+nvbIVwgpKwxhdxwpF)G_2&Vy&2*OY>eAmn#wqbwP6r>ShwR`1YT?Q@N-W%1;wbv z#Lpy7t<6pb1XDbB?Md>e479B=#ILf!4Vl=9qusSh!u*CI@X?0bC>LBals}(DLViYE zxW9s+J9_VDzfs1NI#T+`kc?RN3H%KiHFB&yX9w5IAj&>hZ>^Ez`O!Z~0v3Dr|NNED zvB*(MjpsfuK?1B`@B46J$0L2l=^gd3Gw;Dg`>C8mYP6BP6Us95CiR3Y-j|Y*NU6O? z`cokcs6Ge(;P#H-mqa|YMp_?+KKyHqyc|9S%MY}ABJ@J_q}&>9Cm>w321`fQ-AE(x zNW{RStr<*(gE#u5#JgI(@N;XdGj{VwW*fzRZtp{m;YV6wPZW;LxAM)gL4{2KVZiVF z1N6&BK|`|2Sfrnojr7-#ANhfM8^urX0-VzRXmE8j#75$5q%w#t;D$Es+^^rlF=qpL zfaI`5Mj}hk@!Y}IR+8ki_vr<@=AC5Pxv_zKg0K))ztBbt9x7ppRm{|REcGLqmbK<6 zKl1L0R!CQu>oT{H9&F;-Gf}6>33r_SCG6Iy{p8(}<4B$yMy8ke-^Tw%=)_mA1>=6M zcQHSR=WWgHvq||g=W7k78h&!!&n~LeA2QdnA34afe-*uLLE=U13=<~uCS-Gjup|Or zoS=UXc}_wX^o6L2sb-dR(;zm!jRc+B*(34Dl0Un?IyHC15TUiD)Z8%9#*g7YKXMUS z{Ok(;vf|XZf^W$vo!~g8#NmJuZG2iO@yJbc97lW4hi z7Hvz27mD*gIzWLz|Mpyv)jLv3A&aZp;AgJJox&~zjpzYdxUM{ux;u1FQarNFcL156 zOk*Yf?&A!WvJjTEloc*zYFbEVe%=c1;;2 z!Ijumre$N1ZB}O_3b@?|0uDHjXSWa4=+)FrgO~);>@wNu!ucnMU0U#a#Xs##O^V#i z0W(RAkTD}z1(d-(z!SWQ%bpycJs7g`CHop~9-kemn}?)S$di$ zPe`!e-|~O`^HT0SGiPSboH=vm%$YMYhm6dR&z#Yds;7OvR_uTaOkix0`SngYatoXX zfOC@Xs|Lx%Lfy zq}|cM#}9)esl`;yl=-yJDqdqa&UKNRJ>I?9_;!*3*B39fbX&3EDPkXCB!eM%P{35} z5HB0lR4c^WumL9VgfO*OR#vjtbH4W-9?LG4>9>re56^Q+Ofk!C!z*@= ziniJ7pBCZOD#DLlq#rccak0}C3g25xfan8PF(mx{59$XSs^9EPfkM-qWyu)ML@r$bQ^lhQ4k&2ZcrQwfH!{T|y8B-FWIC#W;4_D!0hOTEy z_;_<~1qFyYnTF4{aK=7WaFKoD>tcM=zl-JM9C?qkl#^ksc=3#{?CKcB)~YA?;C(u{ z+4mk0J7DCx6_+&D^ximm7W3qeSY3Y#ud$E|OAXZ@u(7Y0G+3s~sO21=f>ZZp^rRRS zKo~zri7C_vfqVA0nV0T-=Y5rWv>2NW^@V$&nxwFL%9Zj|p3YF_B1sUb6DkBX-refV z`-Vc-YuzET)UZlDJCexQw06)P-EbZU^74WRq=sSe_E0A;tZ<`t=p$w$;TfeeZ*|D_ z7ZM<$BO4qP+K+BM(BQlFjZ|X@RRbT~CUkvog7}ecSxf!;Q+R_5S~!Px>JOGVTA;L6 zpnM(?ehQk;L&HyHz`Z&(*TDflPXI{C2aT?>>9JcFPst-Kd<%5ER?RaO2@d+dVertu zV}B=C+x_i4EEx>w(3M4r)coQSt3;dR^5hY3ss{^$1?RcWqrWnKcea$~Nk?)7U+?u( zl>ZeS7F@WuKzPeG)c(vRe2eX$B8;qeeoWoqmle}3I^-P_Mhguw?!AF*?yYkE|j-@s?ht>@4uaaYIkaW@d6Ql z+|UP@3liLFF3A$?C!|x}e@t0KQj1(>VVz;8@giQNXW_&Q$Z=lmbP zC>`pt)0V8Iw#C66KQ}ZAO}~ux#YWtigJLj9n-fUghOY7Y@3hFnpyH)t=+nVDF7H9{ z2z{&x&nR!8RIs%{#{QD=AM9S0Uan$NUQKl*pHzk5vHoW2difES(tEF?hVSN}yC3^q zJKcS2_OJNNXVr1-?4KI$vDJ5o_sozWL28ELE4ZAhH~Y2K`}$*h)qUTsdXI#Ev$Kl6 zjkUN=-qnp;W}5PXmKC9m4++ucW>N6;p;BmM-(2xmBj~~NRcT02TkJKQVXfYk1k9?< zULOMblQ3ZG7Svj<3c9Mny8s_qtPt#==-YaD0&Gir$IIqdrTxRI4(ke<%?256W2u7q z`-|Lj8dYWUG_kI^AE#nhp5L1Ul(SDRl?r9@N6I=Vk(Uj@=IP3$KZ44rzk00!x3H6s z9ppcoD@vO zHVzfe(rb_rh4~cCGQY^qB9#bn#y?%&WQC$b7QrP7r5Z|8KGr>q!UTf3#W4PPR-G1sqezOxi)O9*Zh3w-7ho{-=Yrk9~M8PrnV-ZQlM^g zZq3i)3;!4p#)yjR(XY&^8}$6rE-mZ!-;K+v9{w;z2ByNfWK3TAA7-Kwm-#mvS>z=d zH0^3bvFgHzoUu!4`lH(f!S0ezqoiUWTX$lX3|>`K%6qvulEL(u&rxN9$4Lc#h~H>A z0%oz`&o0ND4mqAuju|e;@G!?hmb`8Eb1GCFnN~zn}h1p=R6(0MOy<8cxv-u)_w1aC-droJ~#s2J2%IHnTU_g;k zebo^WVwk7OB=yP2-HhtPLK zW@AU6Ku15fNR525C!3F8s^OKuhCvcV?wcKr^d-nQj_XX|C-?)NAnBdj%}JfLcM`sp z(fucPH)0+Ji-U%+*3%nH*sgWqBYV^3+ z`U5Tdltpdr3VyvF!PGPOcM{b8&<-{0md@~t&s>5P2^`BbU$TwJKfX78s2KvT)tNBg zYoIFA`l|&B(Gd>bfVr6Oo`PuuPvj_)-M`t35v#x8LHzBJ&Png9KWdx7D?7khrFeyl z65k>ckHAU0!LOeXwyFP30{Zj4rwJtyKYu?Q{yYL62JJ8c zxX!vTv!lL?@~2`qX(n+UmYO3pko~>|#*2O}hT36z_N3y!v^*b(|+=9Y(W zeAZkDO3e?6Udh*K^|fdXs~%Zxw)9;siFiAj z*=+@ziMswCJYxSM3<0_i5&_y>>CqKcIGD;mEuXQ1=x6{#pB@+ ztlG&W+=n^qb(96v~=S5dwcHX3G2v%fZA3K4$Y{!VeG&%c@raelt z{qW#f2R6kN%#ba6tJ23puzV}+MhCV_*GOqL+gzh5@kxjI+QE@jD`Y`$%^|pAnYZWC zgszUzAKrK?(#4t%?PlqS7Yvp;yz$=B+%oQNmJ$!x^yKXuz2jsMB?O0C(TvPJZ;aHs zzmoQHN&az2$d!_ibDV^<@A%y3>`7tvy=)=$%r}xol+$gtm<9r0&Y~&(SGUgjBI+Py zXN6wMw{=caFQ&jV01C=+YD>Su))!?QeR~8K)Is(`9QZFD1-ufV;N5z}UZL%jxml=l zdG|fkMc&cn+G9iB74gREekK)WEFmrUSODxdg{QZJ8RhKTd4GQik=58G>D@t~*_+S5 z`fK(+Nro$yl=tgQmg|lIX*gk!tR*$)QQDwP(l012eo`Z5Qg0SzATuuwivnuf4AdA3 z2;Lc`F$e3gm0z8Y9Hu61~ z7?D#H-g&Bk#v-2RvHAZ{zp%vlGoCjLq>o4jLwT(rDbQQ0NQN+j~PW&ECKG z(I3HwGeO#K1=7*i9c`WVbb~73`!FhCDC?V{Jb;!i$RwQ$XmH#;(N;8hb4aBX-t-VE zE7O_DIqLlgPE{>W>3X2LHE?)3(POEhYaFhV22@ZMJvlxQRD%n)GyYmQ9X5F%=HJTt z5nWUKQ6&Dz`s-ixbl8%~M;WQ+r1O!*{Ene z3+rU4ck~NVRaWoIV&?gp^O;IV5kX`3wS2Mt?5ALV{Ul>0sv%i0kRSYYTpkW;czKFX zd2h=9SrjgUt;7eR*B1AL&r(We7v}wHE+2S>K7V6bGkVuX54pe>=osE8+ke!y zz-NyzU`K0yU;Cx07MD(gcuNp38eyG}FEjtP(|Nd4VQ)9SZWJll_vF*C-ixwn`P20v z<;U*j2XD91=dRc{;qQ1(b6pGI46(Xex&$Oxfz>q-)Soj(a9{9qQ&>TJy)z{iij|wa z5wzaGn!Qba81%hwPgT9%cf>S#w<^9(dD1}j(x*&EN`_r2l=8m5%GD7(aimK2()vc@#?y>zi<--1L;#7U z#MOMR@lCo#rM!iitk0;kBHtINsFc^2bT$m?HhNbagcWt^Je7nEiK54H*!D0pN$AaZ zW()gO|#wL;6u3i3enAThKOLYVrPMC{)bI^<^=a{E# z@W@uHCIy$uZO3&qgYxa;t=v&oZp|sa_W|;Z%KI@8TTHY$vx#^*IBoaP6`{PiU+eRw zORIMZD~@dbszr5r;x^?y5Q@g&94OZE@8H@6s6)2~h5V!sg+YUtuYh20MhVv0c%5`< zdw%UeE86YPSp$MIR!%vfZc~xQW)IdaP9bxSbD%TecaafOr1osi(}*Eyr&A(HW@-4) zl7fAN;kn^p+G>A(N@3vGj=x2B9)FdEihh1gJBLZE0(_$Q>DrsR)@?67KJmm$#wRbn zm{|WQR{E~xsczSeUa_WpU^5rw;Jx~?d%3c#VK^^$PUV@RZpGaHk4)yZ+N!2e2e$5) zsB7Bno^Di;6YoouzBZ+c4(=VP>=TDHbUQFH@N3sm1J`Oq_2=m9E>c0uq&%}yGNWOJ zp$D&PSsnZ(ZL;)M`$;4>(`|EH)J{{N$bT|@)>(hWXa3pocZK*nA^uLN`UyN~cEdbe zebI_?5>H<8>}@;k|88;j#QOIWtQ;q3D|^M8oGb3ZNgODS!FpM|{sxh@`8k#{jD2BT zxAClt_llD3eUVLcEwdMH*$;=(A>_o@RB>e@=|oqRn?8sduMquZuBaSz40fkQf*mGY z7)HA3fl?-Gr=->@5BH-GiwPLKf`P9q0%tT%8ew%b<&cZpI%Frjcy|>)S^H+ntFfbU z8uXjZA2bF=<5K%kUhwQ?#zOEcmyA?#gz_VM&csa+#oBE=Q*KV+u7~*FX+dzzW%Olf zrZ2ZHua>#~gd)=7q>mzhUu7!PAHkJj5CPRfP+n9^m6Gz_v1>R*YWVJW%oUCX^J{3c%5Km>Dz0@wAIl+Qb+Hw4u)s84i#B*AI<7RB3^rcps`=nW!wE(Cdhro z%ANE+BBt59t}Xr%f;8q){iH_a!KkqZ6=vfT-el9` zH7wSVX9@LpnfklT_nw>X<^@0Y4}};wn9HY+6lBU9nyLGTL$wguv}`*u=tkWJ{$07~OMxH;0LFfQj4{M-dSj14V~;*ww`E)L?1x((fHwh@mM zwQ#mn?4D#Ad(<2tjQO1t8%1(o`fL^1Z~|Vw3+JiGhEt0B`qi)(XNO9H(|g*Q`}6O% zr|ZJyFYU<*7UDP%OpCdtva8^DMO~<FK+u#Ic?_fZWJ+Zg5JGHCPR*+n5QonI!gC@!eupriH>VjFAKeM_%+ zgYd1F67~!Jq#rJa*k8RFUzoIxe7@Rx?K?-zKxtiz6HdVP z)A@XMrYvdg?)O7Kee+7Kw!0#U_JI3{{<5Gc+ZPL*q~NO7dO{D?Uwy+-^8PEZMHv!RB3EW0|ybTOQ?&yqcYS z?~48=eAxEtEnzqI?})u^2-UTAso4WjK6vQdN;R!8LYVohIp6A(v6qo zmA)RIek_QWZi-*EN!`VZZWxPl2J+U8cjqLree5oN{MWT*S+`uh=674J_PFuC8!jBQ z8hO=?i_0uoNq&RPj2Q2?ql7E25D6^Gk1gp3;v2hE{|ulCk(cw{w1stf^?nfG>wG-$ zAV7ucs7z2cWS0u!yg3n(1Jrb4P+$&fc~ZIX)71FHN)OOGg-|DrrNP_; zPF5cXBz>VsciU=>&eHEM*{^i{#JzZ=(D&+vupgVjkF|Uvmnih2)l1V|l;Z-+0a0Js zBQomjzP#&xRADL|w7V4#e8uOXOS(4b0js3Xk6^E^c2n~(sn0BI>*-(-gf>Ckm&u%>U;WN=`c~-af1TB_u9^8AK;-Zp_lXyGAM6Ari>#DwXBCl$}0#{ z!VC<9pvyScfXKxRRIq|KrP42&7SbkxJEz|qNt3$ItE7)qN*~b)i)q*oq-mZ^B7UJy zn0i8+r66Ni)&p32wDkj?o$8;Gt-&8U$$my$q8|qKHGNes*NO$754|Syo)cKcovr~JM zs>ShzL+>vfU>7OZW2^$DM@+2FSjXwa=Mt$$Ogn}VVZR~8!2<`W$L-)-D3B#kv0L=z z+P!USzt62cFnm%=u{CTo7~{fHkI|`o7&R)~V#Y4w#ABm1{`g@C@RLzF2ZYB7ao`}sjnm1v?4D!WEY`nZWPF5$z~Z6@`QXU_H18GUZG4T15;7(JC@HO z(qNlbjlqfUXzcqFD`{GB=~|3fCM{Mo5yOf-qWYI{;EF=HxPzP20qzr2fuMI6E9I*`5y^xU$O$%V5O!>u>YagLueVK3C0|c};C3JG zi|#rXD?_to2=Xt0fqyM4ZQEbx{L4KoI+svOX0h;OvG8O-yS4Y4$gB|Y+~K7(y)|*Z zGWunM+?gDVW!LH)T*9{#8j=GuM%ec>*&O8#J@;gKWc?eVJ>1>1fq2#}9n+Y`a&vg? zjt(5Apy1CJd~>6HIvaZSZVv17g02F9C4$|0XI2%Qz`V@$Fe`x6A2oFF5;NB2inkDv zpOLQ}7H=d{C+x(eV-ONs7`_VrTIovH#c}K3P;6fCe7>uQNnI;(HVBAzI>JuWg?W8{ zal`gKH67YanDG=1C&OW4#PL*DyuVsLL7_@(!{+n4n*O}Mo$~=xxw$#S8-%#F5mP4< zh%ami=qz^hcL+u!z1;{1TWJ?x!u^%f0vHj&HU~0JQ{E4KLZ$i0xS7fFB&W-)7H_!0 znw=$9VqvLha!FnN>J;a$?$&S|S$X z1f;#_@LWSDZA!kC{z2+Y%KN-J#O7_$I$B7Oe4Y(}0|ge1&XUx>*?JaLfSLc>MACg? zM&=Ua8jbMwxgzKV`@=5jz5c5{GU)>5CS;=wXbf!r@kV6O{d|yW@P=l-U#!Zt1@R)7 zzlcapvaubMnu-Ldv2RJmH!8w>W9<;E&OYU?oZ?t<3P7DNDW5Ef5 z;yt9|#FF)-YV1$=4gA95EUZSutxQ9f`$|sMX4O7$h9r84Yr{o?14jBs^=abWYxXhb zo^1ryK@{m6+KD%R&gNRh>o4IurgGC_w>I|&ZI$H&4ZFGlR-)1=pt0r-v80q6L>Ii- zf8E7U2Hq_Af&eve;T|{e>;&@vR)n~8@nA9(SyIALudERYDpdXJB8D= zc>j=*h4Gp9Fnco3yrFJM-W#6S3V)GwYlug(nQaBh^Ls&yc9-noRtooUZ&OaZ{ycf7 zhTxWdQkcF+>sMMRbctWJGaxv}#Agg-`sr*UQ&ox5Me+JCYV!YOL57F& z_j3Ac*f4=vAM-dm4c_IwT5PKZ63`cAaw>TG)DOj+>oHjnzhMDIAVrL*{ydv1OP8^N1{>?s^e~M9oP)MU z@9&oId-W6*s?xg>9lWs|USs7Msqp&SsPH!A$901u+8}FT-e0p_WFDO?OD8owh~xV1 ztG2qXNuQwDl;=k;uCa%A9&|ZVUTVKB3%%ZwG<53MT2mspY()Gq{PXOjizS9U;LmB) zXLv(-@X$Iwm|CK?#9jadc{!4wkrMA}HOP)sZsk$DH75AcMyoZp)%(Nb>=j|3wGd_xK;SchP?gx1)cE)M)K3 z3~@6VBitU}Y>@v6B9PYJFO?8&?-xH9O7ounk$d+!prkr;#=oU0zcHbjh~%)$gs$SEFZIj4t;YWN5Pq_H#rj zcsEj@5oHEo!GjL5HBskYL+nQEO&WmhB|uQYs7mj>@u$~MsZqrn+~MwB+~nqPzPGqm z#7Sj-k$n>WlQl}6ln9T4`6pu;VG+OFCba`F1yy&oeL~%1$hrmzl1E9S}St((J0mHr0(O<73jnoWDT7Us*je z!J`?h=5+6$tW3Q2x#$B_8S74AO*bsCDrIllH>QpW8#Qf-+KQyqk+uk`!AT&N05fay z1e+m`p&R@>>13l6I-z(U_QLlpUB*R;j1bip46bsy3Q46}*N`+;8F

BLv;Pl@110 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

#0;@NUUo*;|S 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 SZk^qw{ho zB96|(a-FYtv33K;+{;NVN*c5|b(I(rAffL#D zuaZbNv{ES@^o-wd9~P#FOrb{o3I@S+oZs>LhuQMV75E=t!b@k>ZpjFahB_-%Yryvbz5Trrkvyg`OWhiIS!~s3K zn8KWlunB8~JYm(s?oypuVro>KR7q7Q8_wWcO`!SaOgX#o*|eQebw|(Cs_r-vPovi7 zV|F3S0PN^v$wC~bK3=UdRPx^6ay{qI~ zt@SkUIkaBo#2&RCk(mPB0HMaD_4;T5W-k<+nYa}*#O@XNksOJZ~UbKv`A$^sp_L2z5_3VgOaK*K*WSP=K!eYU+Y1#G2J zf(eL3%o3LrM3hiz^3*V*!NB&G<43fEOG>J!nVGE}O>WQKKroWM3M!DxHZsb$1WQy{ zFEb14WX}+mfNRV%{W8V=(=SsjQdP0`x{5J8RIi-Vnekr|mss`W?#G+v4#Xq}l_1)M z5!krIDhtY-dVog9w&mT%@fa6Qsg7LsE<_NKTlPFT2(qS6@y~sU2e>TX|isx`%G7?iY>`_ahltd;_B* znr4<>7$-g?KYM!N6|B1;UJb11UpB1RCF5^y&WhfbpS_Bjw^0#7im6u0&z=IHdT0%J zb28*A7e4}V6i1nFxr&Nx#ur6`;|2QUXt1Q1FE=pvb)K_=oQA(Hp}@e45LXON*5c6^ zS3%3R3}*%4zGA6CGFu>}@_<}A8MlcG0x77|W?^8tH&~0HzUm+Y5@6((#iDLaFc7V> zT3r*|KeZgooC!j)c3m)RMIa7I#pj4-;B+jwyOfS!1g7P)b%cCqi8|;3K<)-s$TNDf zN7tTw5jH&unTo;^-xJl41jAsEw*|Sc95!0L!kZ%STAn)PP^)0jNsRh?O0$^wJr9(* z9FT+>*&gi-dJxv}1dKp+vJCp98ppCqlOD)Oqn>ZJd4kCIJqsAC0_MsP;0Ay(reDaA zX`acqH@W@b^@jl@dLNWFiBU+a?u&Z{KQrUsJ6KGQe@CHp*CrWrs_(0^NFSau`{Z=s=^#Rov69acU78Z$Wo zu@sJ{FSL^roXZF{u<^uVP48fwGg*ljQKX4QP?0o&?v)Gg&(YDn zt`)bZ)*$y;1^)!`L_#C;CJ0G^PEQJsc$X8f%ck$`EIta0JesCl)cn^Ea5H*J_<2-| zr5!JFbw|ar#`m!i;IMG~JDiZ|2A*l44uNPe)nlpu;UVt!s;8oa6j#HGKZTTYE$V79j z;iyCFup9Yfkm7I%l31O1RR6;D6irjEIKF&UY}e7v8$KA_)H!JN-;c{S=Dhmq>${MhahvvMl`9m*&JKd&=Z(f}4kva*8OZ9-2$d7C-W{TE?D;XVq3 zx?!3xdlq>dC5JR^K3%U0Y1({J{e`3U-zzV#9wvqAtfHf#A~JjxC3zZi=ds>zUyTZ6 z<%+0DrxPox5^D^@y^}hPz^zWdrM@YrE$I#s8m!-a6nEjp+LGJ4zwiD_)8@;Zxaq5evup_ttd zj`%K8v10lj&f=q)NN@^>-S5yby-9L7Ws&&#eZ$HNdG&LCOX1)N@42v_1l?k*=_o z09Le5aQ78(EhIjW|Dr)QKsCi;sg)bALY2P?w0i}b*3ypGT=a8h z4Pv{^U!ZG~pkIJLv`BN~hWA!>p{)ZPQ)0*yNZeL?3& zh8J)bhz;YjMknam1)VkN+ckJtS&b^eGC|O5fS#}>AqF5bbUBOQ=tgKQC~!#nnoVVq?qP$BE$N1k^GJPa2oAv6QP3bY2_6o37S~`@t(Gwe0-SN`9ZZ>`3N@??MVAse?9xw=DAP|_e~x|{r=s`$T#bGL{c4kdVVU+q!U0DmqM7zbb=7z? z=yLb2f@;8`?lkTu@(w+w;Xs>P$Kf_CR=WeJB+1uvI0XX<5^-IXLn*SoYMF}@bHn)DgLhILB@&mLg z{$qdY(4Qer%K><4`sB0>#6#uJo!L)Y$+mm7Ty9!C)Y6^q`N z*Dk9(C{ybFo=c6G{FBOxhD?2vda93@g)Y=MgA;r5!{jDn4QMLDiBNgUDbnaJ=I?M* z**O8FECb3dJvM-Dw#bfKrfUgPG8rj`v=!iNS%^*@NExFgza~FY@!EC!h)LyYla>A6 z!H5#N5iMgv$%hE6d7C=Tta*d5LTn|f90e~x?G>x4(-}<@ag1tjI!v3r)4i+eFt5p$(ocH0JKjHyb_H|jNh*YE{s+_9+rZ`imkBPhnF(<@MdK1{guhBPieY3#!BaJt z|1JxouL*grNE+tazJ7p+OX?L2@gSAv>3KehU@pR)>iYr&6FVKn&t zaq-gXoU1CQ*Plp|Q;`C#*saK&jMR=dr|b_$D4CK~NVuP~$XX>Z0=-cVG@8?@R zR1Q59yVTPg5vzxcBMa=5`}D@6W=Wvd8~dZ1>a8KVuc9|1)Enkg^fh9st$%_7Hhtwv z$V^`+d41)`Ocg$dz82#ycmMvz;8Rxrh-yf@Pdpgyx(Vf+#c&D3P2U$c?BukZjvroN z|H5%>vRle(+^a$Fx18pk@DNRoS=)&yX#Iuw;HVge1J=WJLl0d@eMygj`m%ui{$R%* z`@L4PjvGo|l0htN0eHe`H?+6mdAiu{(wiZs<~7 z6NWeW1R(<3=&KC{s&#?%hib)eVMrhJch2)e&*fQaudP9k0zggZxd|EQ`(?EU=yBT8 zqxdZg`g3}M{!v|%2YoQBHZ*m!E&%9*-JoB7xgUCPTb{aba1Xe5Lq$HIG56p{l7|r> zkR%ix39E++ckH1;wP`;=rW@LLaRwRLTn!X}uZ6KvzeY3w&(LG~`DXn*AneRrnQCG9 z%MIP5YZ7DtBu)#2TN$=Jh#)16it$O3>h}i-#FyRFU(WI0)bp}s!^nPYQ04ZqU}Y%Q zuW~@W_?;2!=H-_3SEl+sghC?eZ%AfOFIQ8sJy<&4v%gF)Cl?IH@u9-G|Dp^sQQAkO z%JJGlveX+rmnxouV|TJuQ{o~&z@TTIsszA9Xin9X-L7iGa?R8MP&&r8^xVIf2ymAE z(Kx=KVM^s84Hx?r>+U`G;E>omU3-w<9pzUe1wU60D#yp}uDqcBx%91YQwCH{h`E(l z)IX7)T{$_{j3`N*3#}{b>#?^LHKQAvd0|foR}Vdnjw3-39nY zV-uCZ@J*J!FBOa(k0y`LH4 z?^CDc($zkEk*eu)JbXngzH*zzzdY%e{hy$)dK2DEPO6S0V4Od;CM7pMn|i=!8MI}^ z)YJSJyCwr?7rIvFz}Rz=ch{Y|G77QX)NG;ddlIm6%wb{e$^OZHA>H`zfDBci9`E6@ zD~tzqr|NKaJ{MIB2oTMf51?H5>lJ->&%m?|`o1gM?OUmpz{qz@rv->zy$E&r!d}pK z>KVCYMboxRz$+x@)AWvBUp)ZW?~@EJ5X7QiEw_8u}-Sp^> z!kt z?Jaz3Zs~@6I8o0{ zkT&xG}G(XHcY8stCt@HN-+XA zUPx|yE+MkI?S~b?gl#!Ud=kL~14P1@I8GK0KaHEF)kHAEIut)*{v~woX~Oad*CIb; z5?HNyc^DZWNY@kWUUDZ%kC1Kpbrim~#m}ZPlk0~5d;xRjz$+kGseB~}1zdS*;(7Y> zBEnIeAzE1Cq$>3r^svPES-JW*6{z?E^q7P}9>$BHF+5obEhoYFg=d{=Cv<`cpo1Ko zMMEzN(2F9;W6{01?+y({aeBR~N1N$e;MnDA&zZGM;}hJ^U^m(Bjnf>0v)?MQPaUSYUTQcjGJGvh_}q_^bf}VfDc~SX zDfWXbGFJf|sAUKA@C~VLZ>Xns6jstefDmi}J>_R;xrS)wO|9H`pQ;-k0BW&BKI6jX z?k}fIfMf8;B-D-mN&~f$8oLMIq0<5v;H4yZiK?VHejzRf?9~ky$L?owfe+?%5J*(S z{4rR*1W))U!jO~vVlI%TbBf(PxjwGrg^JW^F zAo$J8s|^DaI+TaLm0?K?DWf~oUCnut3V zfEXTCZS(jU3a5_eJJgIebYs#)P(5Bk8mlvjxOGCoT=a8h$W?Sj1v(&{Q4~o8cDk=9FBv#FO55+WJV&26 z5!wzv;`1d3YpkjdkR8acAg-Zhe;a@z7B$D0=}ksZAJ=4xZOvYgiRw1Cp^ebzClSg2 zkGeO3kE%N3h7(|5RKf%y8WD8Vs6kYMq9zEEK*Spi8q{h~tf_0P)J8}EktLV~#^FkA zao093ZK+GeiWHaHgdm$%0XGmA+|M|uxKuVV@BjatbMM@nOfa_Z_x-*vKV|N{XM4`G zpXY4mYMn^nBYY%W*+N1*}Dw9^~!U;wdyG;qP)eD0)7{caYxU@^9 z$!Vs^zmrWPff6=p2Y%&rE9mLg@xE?d@2@XfR6;a53-i!Ta7S9~kL*?-(}o-)8VS6E zk7#4>@dkAd&rhJv+U7;w{+(&#PtwK{U<0B~AC3^XOSiFkylErf)5gj@;849*Dhz~1 z)22w-s%y~y>bnHC2b^+2Pq_t&a`{s3bX|@-Qi5`;0)wo6DP1VH#>(4ixvbA+g&DWu zkh4wTkVAZ*ui)nhK7aTJZ|-7z)+-9_w8g%Zlb9mc@L;~smy*ep(;;4{?O|Waj}1uq zo6Io=#!3p9p4vox%#<9YsAqArX$;3JYnzr#KBwLUTLzY!ME{NdfaM|Jlyor}tZ(RF zcNwjQZ_vQw!EMemn)1imq=nrya(a3Yh*ekY)tP`;>TBRL46U2pqWTGZP%siUN(Nu3 zUYuLsd=z1XUE%4rVu>!s1J?QGV##Xd^+VRyuC2ThsgR3Oi0EYe&cLy7dn%8Sr2a@k zFE0*rf$O4X*aC|H8UJBz{7cuB<0={Slt%E#r*^>z(jn7LquKaV@LQj-BEvP(nGcz< zxJG@_OpEEuEMZ}F{C%Lt!A@^G@~7nRx;E>1Cxo#pj2jwwOm*JrRb8#fQ3Qn>a(I%2 zU=>*4rWbYyXohBTj2mQg`~Z(u6tCG1tPk@W^&$wBDeJK8zz*{m6=%2~o7B8M2@y|A1rY`TYzmiqem zoBr+lxb5&HeY{gVQAT*t@ocUdP`B;a)f%fr=hVD=&`q4U3YJXHk7oSP`TmVc-oG!6 z!-wvPufh=&sDa*z|3W+MrQpIt+xMp1nrE_=uM?1qGsm!F!nyzrzC3?Y`l zQ}|hOc-oj%5LcY0*wRnh=Z7Pjo~*C)P2B{#ExdlTxbW~n8*;bBn{j$&`|@F@KYl=C zE8lGoAFA@NSz#;w3Sy6WVEu34jh+34ZrD)B+uzt%hUg|OS^a(hWADD^G1NBF3qZkHLUu=gRen@@#d%&E0{u`r*CcSz2ReJw( zw>6<0&-Y%=U)%f|Ym7l6PNrgl>rm9{cSbD6u!5-hz|Fogctn?QRKa>FguA}_G1GM$ z%dKet-o$$ecBc16-b(Zuu1YD{Zadw|?dqKuoo&AT_vcX!n@|Tg;MefTJNL-yBDgwPmRPQbs9otPmP3`y+wtF%L0P2g|K=`1Em5^bR^DDdZ zv-~gFvI&V!Y&nl`Bq6KsC7vQqiMU_}A7M4*A${m2599XxDW3`Bq5`P1pz$<+I4DV9 zSM~OCxb*b^_Ek<%Pi0^Gix(!M`Tv%D4om|5Lq7SGMW%LOV8{!-$mh5(L_Wtf{Qprt zhhr~{-iF^<`RsLiXXSG%21Kkon(_9q&dBEylizADpA*ITgHJv)kd{ z4wt@O_qijVzp^_mpa1x|`l!GV3woX=)KSLJt5EtJuHs45GR{9xx|`v4YN$-0_jmIF z-*8FRL)(FwhR)j12B~suW9TM#%BvX*(9NSAHIz)>cEZ0>-`(lBPR6Z*e`4G!@x7$c zk=q>KtBrs4J#K>Oc>VR%8PN4PG=|wUwAn;XuJ)zc#YPeV5XZUdAOO-nrqLVAv)Z~+ zPpL})TI^~EJxT3RXYf-ywL5$bp={guQUX7RL(Z59E~(%DeDjul;U`pIr}-~Aj(~`X z^k%1k*{~&lcjXWX5*-U;h^=FJ8>$Y8T79GE_r-ZG$znxtB0tx(l<=q4EW&bJ6sq_{V3ZALV(g z=h^#xjpuvPdhEayOCRbXHk{e%2{!SU@}~;>c{YxP8HCHEyO*O+W!moX%;sU0y;v1^ z6Ci*@6iGeXIZz7KVSYKtsv(M}aAp;5gIcj`Pb<98x(6k}jYv9&uP|N#h{UTEh;GK_ zR5AyE;cN@`LvIymoui*bCdgZW)zT!-TQM!)8n~X9Vj{FQMD7t>p#5JI7Z(@j>JhmO z>Z$IW)-mXxyK*r;wqUC9B{lYYT95|yyCfOZ2pl^U%lt`y?RJvdKc5KKsT^&9jFW0x3w+ey!H(v#VbQ2pJS{$&&!ERvCb0z;1F!~w9k2}h-}-gIK5gm}PkCS&pj z%&PE=seBaXaXT_PlWWeWgfT|Og-iLt;wTPfM1G!_jN&tiMmgNfIfxiJDHF&8nILZU z@N1h0T zS`vN~Ndq_TPV>xf=M&ukjJ$_~5o*69BG4-fzw%Hb4|c}K2XfMm9*^WFH{y&fi&V^1 zJI0vFZq^3oakVs3vw2!%4Qq=A&aDC6^Hx+%OVkt%jN-@WfRp({wj(w&Rps3-PgH`l z2|Vfsdk3Rwr6+P)kxVVD&p9NQ?ea9Od>bP%S! zzsH6Q^})56@qX;zc=~KG=fg+!5R7Y`V+VdWl4=#O!lOXHX)i&TbkakuI$ih4DAh2&Z0|jV^a${g&Js;@eXN)-L$WtSeC0c=R=x2Wd-w;mjBw3`K<*(RZ@~b(p9I zZbW@&!t&ur7^+I0iE?((4H}|!EF`sYkW55-ORx$|-C5zJHmH|p0RuSVR?nt)q~DFb z3bQxx+xZV@n9X@WX!y+Yw7(%*BjKB;g-@iH#}<$Il3rfbxhw@wOcZNDI2!mdTNDV6 z(Go>jklmne+OtReM$<350JUlb3ItGr4io56MSNp}8t2Qcew>Nk?Au;JyY1BDrQI}I zbGOYWu`ph$7NVJ7@XAEIi?EeB4@R9dbALHw+KuviU)Ejxt=Y5x%!{p79CTq4mS1zV z{1++Oqrq4!3jXSQ|d##nUyr`i5$*1~52etmj0l6?b|q)phgA zsc%^GtUq&?|LiWjJ!3R<7)zXh67vgDz%JOvs~&f3B7Qi#AF7r0W_B?Wf&S?{8ksJP z3|ZxL72ZgXdp#=Y#PunTj!rMmTNRooqh3fF&a6d6_%!XeR_a@NmIPE}_37$#jOs}) zlyufk7XgO)K$HdlmHW`)(Xw7s~LjVvQBs5B0y@^n;shVw6D$Ah(T0OeP(uc}0` za#f^%HqHRAyo(htiC}Ru{SAKEuKDG9C`<5*U=sWyd}Etmj4T@k!wiVyzf!;~uJuyQ z9nsnFGjIl1vEA)(cBHI0dJdfI1zFW7#hW`s2iOp#d_vI9V@Ae^sv~z7=YsD zC!}D=Jo|9mV;-tG0y#pJH7hGUo!{U(LmSDPpa>1FYSUrLne& zz42nL00h+s#oAM_#CTO`q4>M@XiP5^1Xp$IH%u#7Cj{WQPGG%O=rh_iFMIG{F$kFz zg(jVh8*wWEQQj+|dH1uongh(Rlwa91S*Z&JZ)g1CKa6ElB%q;qV@ry9M9fOZ-MZ%} z5y(S*T{3LzTy`z?!Qm5%9}B&Q|KqiWzVO66Qg3FD~{04mpahpvo$bjpOn=9y|Nmw7xV3h-(C` z)Nf;5@qNga_;+fcw67lgNN|pB>k4#*v3DfCVQy3gaA;@=8qjJIs8pZFwKdKp0>eaL ziB^-ylApk$K~jQ`HtzH?D%1&&lE!K{dop^f0FZx+vT{pcj2d zhC*EE^8Nm5%9T{4>xjPu(H|#JP=AOq6VYdIPxMD)pfku{cbFi*uOs?!dvN>XhS*}t zl`H#wrFk#PH=_AhhB)d=ns*{Xy7?nI)%@As=7shVIo#|6%B9={Cefq<;LTeFu*(61&Q-@o<2(8Sn4UiKL99aMxwGrA!MA+omHwx`w zM`*1!!uE!_f2UDoi{lImEoABjE&MTlw{Z(wq!jh+@77b=rXJf@Pg{8A9FvgE-eDRD zzs|%F_p#rRckK~8^U~va`YAOHx{{VWn<(y3N+0O&VH6Lg{IVIpqCKVT5q}!&G%qHK zL1=~!HKXk8(wXLu)Xn#D`84*N&pJ(R*YGCv`*^qEBpf=YQw{(1(B%F8&L<$>Uf#an z;ML_IbnIK_4k*_PqEFB)CA7mCTY@ZV&b!7^PCe1FlnIOOTFSMlTDjzEj&^+^pMOl> z7!-wHtbO9xc5sq9@wf2Nuf>z=qqmEX*@an3`{!TL@tnI&SPK5R`04P^u-n+<uSafTBN7tCFG7dnJBTO(c^qs9N@EN^Qm{tVVzbrwgu_0w+NGahR9r z!b2TvcSBjkUZ+2L_h#(~>X|j+6=bfKsv&M_pj2z*5^JDZ)n`%yzRr8cIlhiq8c}1M z(*e_9J=Txx=1jWQ#)EBSoe+Wq>qIAJmBro=#eqQ2;8B|YwHd>QSJvtYcG)ZkbWu&C zNG7&Z45t81XG^8*eMy34u;2UBksd)pgVR~GltoKopV5%o8CS9TWt{^R9wuryqE}&y8*7TEMX-8jliS9MXk7m%4wA9TD z2DRb?KUjbFy{jt-R%hkk*7D(n(ZwMiwA1W?`i|3*Bl8b^9ArNHnjjO0LTF?{pfFU1 zivpQP5U)XX^?}=9caJbn3yjU zc86>;u>VRL=LE+Gv7STb%m92rutA;WgH^l%G$-0DsP_Mb9_VGq-)v9=d^y!Cze2C} zJzqxuiTiyaCUj~r_XmKeB_mo_m1qrtPo;bUUO7I%QzoCv`4m>CK28-C_}3+vWDt&l zY65tu0n{`elsKnc-Eqh_+DkA7?Kr}?Z+_>Q@3UyPl>xBMoL?8JmvO-Vh{JCl6}WG@xHC9>1NR!c9)dbg z!)*|{`7*$Lfnnw3{JT=~uLq}CZ*uW|N!FYE@G94voPnfNRdy#%U3e7aRQ1=wP;Tgh z+%s?%x0xt*KtTaixoV7CJWL9IwI0s{ z?g&anZ-?p&OzIE#@=a*M3Tt)K%K%HNgr#Q~J#`I#gBIe6&9R}@+z(ng@n+u_Oy!7Z z?w(gLvIs4ZarE3ht-#Ri61F_`Xp7(Qw;cgUAW=Gne|u9TU0~fzb3`O1linNc%`|sU z7c@4j$g*pLr{D?M0-Jk4Ej-hiHM_>l8ZWfkHBv5^T4!z8jam9JQ!w(~U^Rc(6%}?%w<2%zhUA((W2R(T%^&e& zPtayUGs{S(-pIsz!%*SOCtB2_YsJkNIuVT9NqaN(LU1)&ngr&7{tH4@mjn{B8pKF6 zy`?IkN?xX{E<#eO>IQzqMRHm51NC@Up8#j80ypAOmT&1I>WNFROx|{J$A@J2Yr9?_ zt8_tGC=VKenw?{2K_gS&+x@{UoOhzTJf)nW12O>8FcZqykI6rCJ+tJKcf)`kXFeQ5 zK;%4m>ULqA;E;{P_N=2^M5cG^P3)$F9h$2S#Q6=JWI~pi?_%S2W@-!nb&job`(zDi zYHbQV2rlen)qIdTAE0qruKQO#;;L@IS5@fh(69rbSW>SJy$J|f2uIL*R!c?e9P5Y` zR?X+Bj+hJ{jgzRR47%D1UElPL6*`{(90%E0(VPkpGmZ_AX)jpuO{lb4ivpHKu-2Df zjxm1Vww?sv7?GIuD+@uwj@GYWw9o*awjwlwW^PK*K8b|@do~*^CjoMZ>@rdTEM%fE z(6ij)V4rg7L3EUdf@TsY<5b0r&zcemVd?82sJs;KFDC zbM7f;!U;Ooiu62~apQ`jnkG!3or5(F65GL@>br|0FBL~t#i~Ff!GrYwhqLJov3`Jv zmQZp01$F8w39&g#cd#x)hq%n<0n}M;VF|M6Uc8j?rHS}OWU-pRW^s#}1sx?cAOKP#2ZKy-GKHwi9YbepL z9{sQf5DT>z!T(T}L)lnRWqriYWIG~~P+&(1j*42unj)~q=puR;COYl3JD{NX3G35d zF36TSAS|Og$q-9%-{7;DDv< zXrNGPPCHY6jLraD)Oom-^;%rVWi@}=4Rz;0r}oW>j+oMV2roUV%7cl{(HhbojkNJl zsX{U@6bpDcQ-gYSgB~N7f`Z(Aflw2;IH>N#`h1qkjW1JMn#7;EpjkAmo%ZO3L_@%I6Re3l(zP0Oqy1 z`fWei^1uUF@lb`Gl_ahc)@y(FrNOE_VEW};XpH&CIc6DtP&2Wewn~%*f|L1r+dKd* zm$hm*1|xbNvXy2=2i(2)5U_4VI+kusz@i(Z$do||?!B9hBrKykoS!VDWwSfdlM+n9 zr1UyCC3Z2*r>*s!$;L^irG+{WD56vz$6dK}5}0z2Kjk(s<8RL+o2QlW$Gf!#dP{pL z&O!ipTSYW&iC_Xsh43c2=Kvt!JU#IXuh* z3#3@MaTlc$9)-yPpFwmlwvy?-m=&LxS_SzxhHm9m<5q+UiL9jA(_Kn%=_#6pvPn@e zj=0S-fHEvpLKXt!;IcCA+v4V`%b3lwQkz}q^43oq%^PkVCN7Ns_E zTAhFwllEuZLovZhdlq@MIMN);0f{lkwq8B)Pc5W@?qz0ads?0*GXST`w$m=yKrQd% zxasXU?$|vp$KBv?TnQe)aXpa)jysL4R4N>2XWVrF0s`Wb0f~)(l50Qx4wz%uyqt*Q z6gkWa%=qEC!i=xUkFdR2iPg^Qa~q8`W40dSONv4?t)PSz zWSqnwa5DksUjk?|Z=SHm*PH{+oGiL4IX}t*TAw{5eY8Fj%R~MF)xog)&_`QO*US`V zRwy8H3D6AQqQKWR&FX@YnO0TQNO>)x+V2T?bU-gb#wo4mpiAJeBNJ+Aso`p~${l@j z)zSx-8nvWO^)Lw(N7|GGlLVxJWNN9)E|*E#s-@3%CRI!JDcA3(Ii;i{wKO2VBem4k zpK{xf?}u!Og)~Kf%YH{Q%J}2cPaW!-+lxWb9O#DI{DPC*mk;&u3zf>~S6!vz@QYC@u)XJ{Lrr8x zGd6y2_+?`ilnRe&l&ig|RQ`dawn}AmkN-ufyfGq~QlW42oG(Qy6|EoQ4NwmKi-na2 z@W-bdoFS!N=D{JBan;9;1uH%6I5x@oDOK}RS;F5<=m*{$Ec8#JAJo4M{WD4b9MT`k zfu!f=OCG3A-C$8wKtbTs7BZzB=zg)I|4;UiilSZil1nNsKxB=^60QD8souU6Ih=!f zt(pyar5w++-25Y1jDCYXLdQ5 z(b~p(dnSwRE`(0}Z;m)1W;t?xKR9J~k#I_!KVBTToj1;r3z7<3;FK*6r)V!HIlsKb zz9h9Lm2(W3fHxV#4DYW8YG4xqn7ksWfd6Sc7#T!yq9%vSC(tFyi)`Yu7z8^*QuIbU zP6@=OrRbi2ZFRcm$6!Z&tT!}D()eSj{(5q9lJPA4xg4fNgSB!gYWB^VW=9K~X_~=4 z(x`%>>Er>mIYo0+*w{+q0XcF+Kvog6cE%?c8eO(+utz}h!42Ejx&q?pGU#1wAMv{6 z-M?{dAMTORE;$S~by@st5fD&E23+8GJ7ZcGa+oY-kf7Zph%Cpj2!?&MIvKNBRmzKyq?Bwoq+ zL*6%Mn0=gg)5-QnLCdoJW#AY! z`scJ?U%0RKL-hw}{XLyHs9-#)0`ouB=q6c=TysiS#udPico$zgT^;y_6HUOkGLlmm z)iUbDIk^I238z61K`KpI5=?kDtcEYsaSvcH>DWSiLX0lzY6uPTAWpkx<^k4*53qG2 zcB%MB#o!9uuyCn21XL#MMsQ)CAtCChgS6t1hQb^k>EVzW+CjrLq6Pj@+tIt{9~Eu| zXgIw^o%Ey`d_>MS#;4(Uk8B|fmzK5Om93x@Hr@*M!$#Bo{v~CqBpuU)b6o!lJ89Xe z5^R~pcH4!>g5**BREkexd|cfRusB5GAKL2LdJrh$EOXTmC!qE2szpuEAL_wVG_>XM zzgm&Lpo%j`)}Z;QRF1U-lBWvO0;Yo)T)u6KBX322;hx zS8T7(PV%RSKGSLpGF%~4OjI0Ai;fa~Hj_WPX%45{9I7S1)B5bcus2Wt$R0z!;Ul!A z&$YYFBHDe}o2n8+pP2*O(C3zxPSEF$c!%`42}y0~)8hwCp9(?*Pux-ZN$kyICuw-v z)8}{o6rqnM3+OYw9ev{YLZ5f|1Nxw8Sr+Uxt&SS`Gw5@n_6PFY+8lDcc)bi5;u;GO zL~94i=!QqMs)Xj0HA0N{0f?~I?tgKPp~H8_dgzb?IoY0YjJ0kmhSqFr_j`Tbo(^Gc z_rHxL=l~88yFX{QrUNvLm;lG#dFg<>wEI~@G&~~Tme=m@?@tjrlnVMmhcbr_+K|F6 zy=0`&VIqIfdo)eI11w-n?Y$#F2OM%_qHM|a*9jW`kl{)2n_%w%77ZQo{}q~)fUV$P z#SPYj>?1tn1lE!FFU)IaoE9`#pM8u6>(Ji$LF%Mv+A<}I{W8$ut|l!Hs0f7QK?-;4 zL?JbhjdgT(+Eu%VS&|5?mau!y$sk;2r`ZB|$rkI3hnLMDC&Dl=*3tyi{^q7Fq!(og zHt|p*4~bf%X+6&nwC)|D*&FTBD!DmS;c%c8+q!+hOSt&NTM&4w?CIbP2x<{$6}Gvx zB{}|o*`ELHz>}vDi&(Xvd$bRWxStYtQ?u9VFiDw7Hv(s~)%MV*vu!0Ax08(9)fZUL zt`D(b!~jUnkv;z6m~n;L@t={yxk4>e_Z+DQ_)EA-jSpC47|qxpIcni>)G;*@1h&k) znJbdek$SA5UU*ZBWI8cWBvlX%cE(lzq`w3!OA>)3w_n9~@{XN0_cI;?LZ9T^8M>p{ zZRLlsprTa;*{QVFpepN8@1J1u%K?SjiVOIlfm$Jn=&kI3P#z{oRU(VQW;1~f#TvzzPw;~&zE$0q5leEgKa4r5_o~u z;mEMmnv2n95E#caCt$_;y+3NAp`Whjj`@z!PG3=p=_?q6eO=@2YdL$^-cA_(gfwmA zL9Ys`Cb3RNHKpW%BzycMX-5xC3Erjmi(LfWf%Owg`0%l;t^BpkFCynV1!p_EgzAo9 zM!0j^@g=lud}{UXVWHafz>j5L!29zYHe_eOn>(JS2BHTJXv4rhrbb+Si%N@GT@Dc>6DL@M$&fNY~*wH5w7H#!v+ABltYzV!OKc_{mHG=Oy-2? z$gYv0^M6|D_YNl$StM#9361kM-=A2moN`@iETn!?UqoTY$`=$ zkod47_egT|Sr#dd-pn^H>!1b+s>gA=B#&B4hd!u%nE5rcBONH#6$mpJd<#EhV+oAm zeP_)DhVRjg^&b+P37K$LhI8&i!-}2ZKwb(MnFEU;e)-4ebmuv0s5*BgiH(U$4w@F2 z@)Z0}#jDbd#g`B?sXIEKowA}08Uu#Ts`OR|!JrmQmaHE&IE6%jzV{hyFEwr4D)>wb zp#vCyjIbj0QX@j`f!OEden86}@Q=|i_JXyr2Uc6?0XZp=;G%4S-T}bhcKjZR0Jzj* zU~Ff$=Av98LD<|urjrdLN;VNYny}de?%Y7_$^a0BUaMKI58`SDweGvb$!R#(j2f(F zXBX`M^7aWBZ4#I@g@|F{M^G+lA5oU~)bWq?H0VcpzRUC6=y_i3JiClVCNmur^&Y;% zqnLzluq&91e;g$##SqsZE3s_dy4Ftpnti39$u0o82%SFhq!KH!H7~82TLyNKB}lok zzi`o}7X=VOP1cUPoM3_fr}8?iwIDg#?F+IdwbN${mw5FVxm2CnO%L|9K8pqks(FB;hwDQDCBZn zdWRFMicu#Pp22XBmFPhuv*Qmz^9^6JJ`*W`5HI0pSZN*KzzRnw2I@sBoGNj&FanN0 zEBJOHV`8cC&&p*VR|0BdHK_V15R}GrNGt_HBr%2CuONV7S`qkV;$fP39+``-y;js& zZC14ur+nOJLPyjK>rMG|mWKfX+Ab3XWMVlxxH~u{RC^#lqATiLRtKD!NO<7Y0^?!6 z+0R3#GT=JnseRCC=R5nP(~Vyx=mbB>N2e3q6P_J9m1#OXj5<4@)4(q}Pp5w$#g6du z-6V8cB8hOMG@W+H!r;n4Y%8@U7@?6^h6->s6Q0Qw{PQwK;Ld!5w?7=>!CNWt_U@DW zz+2N62X9qV5?rDqUKW@f5wH7^1r`U>EjkF+hG)|TY$Gn5xhcm7N$_mq>^S&pRKH!^V8X%wh2gP|_4-Y0oHZ0eQJ6=C|%7`pKv@Hl3$ns8Ss1_Kd{ zTP_rgLU`Fvd=mB-=ZD#ActBn>ZElVX!EWY{&cO&f1XSlx%_jngnE?E!*N>b}#;@5{ zPME;n{0A^qPE0SA7wG;Tl3AbE6!1kzzp3-I} z(FKr@gAW*-%ZD`az+M>~FmMNkL;$%92Y|576P9?bv!lW&mzm@=Rb-Bnl`+P20-8_K zR3nYOF9UwcF_nC~4Hphda3Ne_l#f*5BFli>fAu*ws?@zf`fPM6F zFWzD;;!S}+j@1)A!{Z6%k=;glZ2!~=yrDzzB4w3VJH!Bw)6r>>!tKg7G72cBY1EH;S}lBv^YrpX`il zwi!wJvJZJx;w8_EO->dvd3J&?Wa3PW6a=FgKfXcP2-ST`fMC|=3kES+sGa!e$&nk< zanC^Xrf!iN`$lfaj7~|9-qbU4WB^DjM^0nj}A369W+7ynEnGZWngPQm~MZ{jw9wbe_zH7WCn7^oh{ z_rN4dU?jk|?2Gdm?9smMSY(4iv|85?nPn^kGlp}6qLrX#-nXHJx3K!?^I1*O%=3Cp zJ-DfqtDsA;2dEp)t@sp^FQ8VaFdEqM`XRE^e;{BALEGT0tFMWltx}I>qN2!7EIlcX zG{u%eb}YM?8R;!ipX_gZMgYTB1Q4{p9OW_8vqud3mMlCRzK{cy(37zwKm=CcSs8)n zh=rM1+1zZ9!%A|C>{4;{O(zXvVz_}4mXBj4noIjoGKj`m4977ei2)Rc(uD8Vl0`Vr zneo@jvH!3$(hu+~*sl0bq!ZV-f=-!WMVwzV&b?{761S8J%85qZRo$W3YPO3s@U~{_ zSZ@s0vm>d+?_oW z#xDge{A3hO5F5sUlbvx?3(4XSt;mcKA{gpIXj5~7d#Lu`!U-G?)a*PkRQH0s*2=vW zFvvJg&1o2*Z8v$rZ6@LXyuk4MbO1rr>fDvowzB!BlnzLj_=9jP8jcmmVy^t$XE@sl zk0fix9pNX2VZQ3^K;5avBU})2ZL#sr?6iNpKx)Cbp!6VThwlt>+KtlJsR?T{F%fQhSM@-;g^~0txG#TE|J!C59QEiD*|&PlAU96`?4HL z`9u6dv0UBvu^-6lp7(9S`dF&=TI@7gzp@{8-nGJO-=A*~tO{ezyL^2TT$9TkY3u1jKx6W0#t{A1e`kz zV>{DdJJ9?-n=%0(u!R%o@paqAFxpXZ>av5hwq&!olEEePS@PYPgEzb|7=#|OF_z0y zJOEHN${5O7!iUhawlm)MjTv|0xN~+BJ!G)8Go5jJkz8O^{gLq7#^Xqh_Vf9+dq2-s z_|EXxG)^DW@&wni~8{*7P!Wfm&4TFBx#t1~WP(K5gnQsbfA6)qdO4YCf1J+w_YwE2m-R!kCQjY4bm1#J={H* z6780ScIc&{rEauuj=>V~1NaH+heWQ`3G-Kd#=-y&r3(oX;Nn^|B5f&Tit&f{i6OAW z6>GF8vw!M|CmkfAB-EQ5dk2!LQL%t~9cn-d52H>FRF)#zIsbRu=#yGMPcq z6=uz4-Ph zMNB?$KJ&@h$~?T;Zh@{ZjP^bg$hC*#xkwKPig0?|Lb59$`J1zoWTK=6-xW2-#j86o;celzzxxniX3 z-rAs%iaag20$0FqiQlHq6rc)fcF&p96Bq;@Q)17+O)HqYo4fwyBZ!H6wDrdnG&?hc zsqdRqbWhL2^JA;|NCOhP!PL{5uIqugrNpqEyw#8@R)S};$m#+MN$5#IiTN$%?|;|Z zi7?-POi%PSHVuYWT^beS16RZ!|Hx^?AuYpJ{6;6TEhPsnhiS{gRIL=yYFQ^8IJX7U^yt`x|K{Y zMKGJ0UAwXJ7gnSjMkNv=q^ZOc9AsJmJeBbY>-)r6GR{E`#SBV_PB$dHf?1|FsDIt9 z_XC>A+O{iflGb}V0uTfTRl1>qx{X+tC>tM9J!4I12-TPQs&7ywzIT;+C{T~f7ai0~ z7_S}vVb09{`QDJ0j`q)k+*C>Yqo6m*lYaJoU+#Q|4r*XtA8}H?B5~TK_~`S)I)^@8 zAS$HKl~m%1QqDRhFab#_{6SADMHSR)%w-dEVNyiL?7t>+wW)x#q$(zNg;@ zkiWYSR6~pi!9A=18B3Uv526#$w2F=%?8HqT&1Rbf6sFM}~upWAhBbA=h$B1tJ$EpqXcg37 z2kS{}sBLQ5(+e<g z$)KxQ(i|;<>$W9yYfRGNk4UYSz(;G6UwD%IWx{2ANX2pB@P+Bv zN;)hPBRT1+8k@E#7*4~h3n&8M@Pb_Pn=ilMMX8al1gnu|RBP*;-d*|3)q1$hM7F^uf<8@U&6%@MGbUpB7BlIeS8^nhK$r? z;s7OV`gD+Qa0gFMI^!T&dWl0e_-4 z;kc;K0n`v{0F?lO=k=cFP0lm)n+WgRm6T}-bd^yzv(uU}f#`*IiUSFS!>?2_{Ox3w z*me0w6j!4KC^cNehG+~<=0MypZO}$DQUf}{h8zk7A9jXm31oXP894{KV+@X;Uh)Fn z_H%MD?^|F+E`&$X6(?Hc;!0>d8cxgGFgvWh9oQ}bUz*{N`B&Ut^?(i!#kaV8tkwqT z)oRMcA62(h6PpN9&&7qB9ITS&fRv|vh=~Qqgw^W;vrI6GTjMakqvMQP1B*?M4H2(3 zArgXCG)TP@gP69eV-5spxYH|1eBuADKRNDG&DWO4lkxd0#VZ_t<-D8!Cx7yxPWY3* zUHJ3;$+Kr@q3MJ_neMB;L8bWK)swgl=BNEh!T)&rZ2t2EAP)469BEtZdG>y9biPBp zVQjp#m?>?eYBkohoyyY4XfY!nN}PvM=b=mT-Bf8yO>G9Av(aLxM+>cgL2HvKR!Do#Qnd%G7aiE-@Cs(C!h*ZM?DQ{p)YTP zn&W#{IlaJuQ79zOf`oSC8R5V82$ug0OyILzL)*@6N0KH9dI*!^<+*VmYM%3c_VHZt z3l7hnH=8_Hbs_nU*>9UWkwLUwrTC zs5Bts$2Oz8mtXcB)&@K!!_U;yfEy_1Nl?=^{{h4pDm7L1p(RjkNbZ4B?#I{^4b4V+LTdcQh&{6>m z8K)kI2a>3P8B_m-=wmO6HSGu+q$j9GV*0OR6gR(QP;7ncLGfLHCK-zRx)2MsoPjz~ zT>3Oo9IAUzI^rND6|^nnsl*7`gGUf2?Heh`#M=dUD~XKnA1MgqtrTw)BL!KJ@!5F0 zGE#6ne##>SIru4y6qMknB2sVxekvmcr63)ICh)15I$FaP|7X$#Wdo${QEUvyDB!yUC*wDk&M~Zvt8$t zi=V)B>=pm`Os3=?K)P+Eo<1di5}2+0ZOfPL4oPR!Nj^As5Bp%i2ah(PWc>C-6uL)} z^w{}=h`^zlLCm`(1$)4L>!Fd zpMi+^E&nYd4wJ2vW`N!X5eNgQA9ra)N%u^;Mua0%==5Lf*l9{4ggg`aE=7&Ox-7Ha zpel`+Zo=1CGlRvr|NUJ(&ne7m2gZKLt+-|fL1)zsTFS*-UKq{aB5VK=hoZ{uSB6}`t zw!tr(1YZFfGM{RzgodV+>a~RZ#FH6JDSa#v#(u8t$Yc&Ua%L6`Lt?PnL&B3KITonb zx)C)7|B5fc%3tc*Ssgw~3qf^x6R3q(=uny6_SA%37*i%5D zP8T5`E`kLknj{}6Sb@fYPWZ3#kjO7p0{*16siJPc<4WV%wDVtVH(p(!{R`pUh>1hO zzo=%TV9C4qOaJ0W4r^(nYk$Khu(_x;;c!~A{fsXGlqL)_ZH}FB>x)J!W_&?L6RV7) zTa(#~k56(eoT((AyZmtf?-SZsybi%3qNdCKK%<)?q=>Tsg__I0Qky^_N|-bTQ!q{q zv|FUH-Y#kfD*G5Ub(2|{4}Hy8t)14p-qlfXXQaP^3ON+u{=ZQ%=`8?tCRJm@w@i8} zvSD?DMb;>>%)tPS$j?6t$YT9So%s0+6nE{yQ_hz&3)FNqf1S9n=hAJ|2N_m1|Iwmb z5r0U0B$q5qyxK{WtAZ?`30xFJg@Qsz44_3V>B=@+kANy8KR^{7Zu$$8jlUq>M^8u* ztkS#tapGV+-mrd(cKm3QPa}dCZ55#B6Oe&R2*@JegK^BZt;#~ExC=LF71!uOgpLy@ z#LW`?@{i9%2LIY21e}0&EVNUCb{rqE*91-eFq;+ZL$lG}gm0TosRK7iTnz4A+J?u3 zNMjJ%$!A0?5WAd0i&h(@O$~udDL_cb=piR15fB7X z=KRz+L1oF9bFGtTm=h?|a!pQoOcH^R*uk7Kb-9{&MLKlK#j`1&Br14Xo6{ZG-Rd)^ z}i|k?n7~0`AC8` z(zM$%h@zeLiQpNXwA&l$yO-;RjFASTl8KM!6~t%9iXYer2>It%FoDRk8UdPn z7bWLj-)^E~#dSkF@x_{D9hFbrvcK``N@Il(7qw;Y-qzS1?gVu^dn5Mxb3z3oW48h~ zz`ic8sLa{@S|=+#RyRSB5XU#n048~pUERjn19+WXWoTLd-qm{sS6zvT3`_~E=epgx zjdMP-S~*QI^H63gFqtYdtM^RASX`23eL{T(rG|)8i`BXU8K?EO2CnCDJz%A7h;PNA zaywMuItF3Y>|gT-#jE}tzg<3u@ zC2pTVAPUFsrw*T3)n_@eH(&H3E3Cop?%{(&i<;tboK&9={5xN9RuFQg#Q&vwNe|m3 zt02K2jsA2H{|MFJkERmzTyT@T3O##=mQ6^l-ZQM~xa!?GllQCMoreWlNUq-fE56ML z)sK|70=``wsvp9lH9G?{Z>ZiqF;sUjUZ2JPaPKQG108f+!1*!`6zC%PHY3Y(l5b1Z zY1O+=tUL*;*R+I|;sV6CXC0}T0Ts}xbFv;z4zMN1%=bipAQAFn!jaguf@!k6mMPbT zmR-;r`?4oimGZb%9Ax}`)p|Db5>jXNpK^L=S>HpLe4GKTs=r*p-7@pzX$KgF!!qv{ z^?12VmE^U=KdasiVyuY2rVf#Bc+C$jS`~j-?Wf=OAh{)W5zsCkzZHDQk<_V zVjs~&2ul;{E&xvU@Mrovq6&9|hB)HH=S+72n{z?o<)P4k83JEuy$+~;zZti?ISFl z4Ik2a#QR8_Ubm+bH_WqEe4Mi1{0n+oR%I&HaHFv_HOjg}hN?%=AzZq^A_tL$qM z0irnB8COO;0AYU%prhL}rY%5a1Sl5(?MwpD9?q)NyV^v{K>xB3gb(~2cKs7tV5MM;Si9YIji|~kb*XAsY?<)Hx-~1GO!)kn{Z#bX7 zkYgQCR_999s&pr4eUzp()QAjPszbLoK^O1}2;ZNRz7UF`qjWjNfrLY0VmK(#CSGqP z;Uu`ziCT5Ko%Zl+FspfMs`@;$EH&JX2R)6l#Wz7uuQKpNt(<7d@wmw$3=J+& zxd1uv^wscGo}FlXxVQ0RJJC3Nj26@STWI}7Fm*b6=Qak+wv7bC)?hi6JwB_pOB4~R z3Am(%P`+(lxA95~2bkRP)OWR4|B@dlCRmtMVJ&}Z(VNGp15WI1?fBe^(q(>6u3>N9 z-A|^JU$d^=n6mC3%+9}w1?aO*vv6iRU+wc@a0c{g0ODUr*>T&nUSy8cZ|ECw?F@_y zZvX(d=s>g;*$%52e;G5{EIw-e#OloU6k1)+L!d-i7z z&V1*A;Leyie>@~*cRfBW&aA!<^uwby%_bt-tP}ii3WN+Ku0K47a$ms zwC(ta;+H?*DUQ?kQq;({#ov?SYZ`U&$DmD7e1k52+hR{~I@>D66c2)t{D)oq zv#Ie&UE{0xh=E`QzG~0{Z`Kl7PF4F8xKYp0A%gc3O}oYvU&}5<0^u*EcwVA-%RFy! zh6YvFMDc7XUR8;rUwk1&zx;#S@~rkn*DQBi{sI{>5XS-3fd^4k?Y$o^Yv!lCoap`g z4$+qrnbn1MS~V+=n30A$5_^K;uRsuP^nE@6pY?WRJMAK0%GaMDB@31sWgh>|Th&`k z;Z0LWsqv-!lPS1AjVVRGl!ut|EmsfNX(3-qgemt(O5kWo0e6rw)Nh$mpi|=C5&|dX z7fewYQK>=Sz*wBx@p>%r*JV@PPx+_9HRHghs>gYr5em%iZHdVyu!Nevcc*ZING+4O zF;w)Q%Q4`q6xB4|sRrNk6aK22_BCKW5136p9~Y{}B4+9z$j2n;J^0hv~ zx4ic&2Mt*ZgLMQ-vs)<0pWMx%MKpehK@gall{qa~CH1A|E_VeG6m+H}K= z*aTxAl_$tk6f45A)Mj(fDa^ju`$Fxdl&~v$G8Jm+&%g0#M|7B~YA=UvAf0w)g8Jie zRr+I??2?U8VTxK@49U7xJ@6GeG+d~fFhR-t)9`cqGr;ucuPA6-At8ke|EH7M!#^S! z{2$-og`W{YrOpQYe^4Lb_7EBNC7|z!KmRBAjjQH||Cl83&$=-Q{&Qw|;im~u*&6;M zIuF17bMcS+=fPRg6vvhH1Apyx?UCO!Jqhp^Uhf4SZeohMZY+@hfV%PvAphswXBVa{ zU|k3Q0c`M&v~JKgRlUB`qobfgFs)4ojS33mVJ8i*kWf}pgEJu1``G-~iTmtA^^a-% zwbM^g3ql3~x1vB8WOPQ*%G*_0DjEeLN*wwS<;2%y{Nnz(ygilaL)QAWijJ|$7-A*_ zj|=|P&MsV;?AIu3p+jEOGkB6&=K8TkTRqpCy3n6_t_q-Ma*szcc}#lWZyS8p;!bhm z8PH?tj31xnZPP#-2iN!QcFMKE^^`au>g;{LUFfGIu?I=ivHND^kQgb#*%$PBkuWn-aO zJCa~G$_)AzvK`7#!kwXZ`D5J8s78JcoW1Qc8A<7R6>tTCV0?(Ns3A=x8jJ@+Pc=Jx z%)&mt6}X0gq3mJUtj{pN;|fWuV4x1RmBxL!AXCu^^?Q@qLz0L zPALlzf30(XTDogx-#NSvFkq%VI!An~qp9y6wH&9&WI|yhERu<4R@Jx7l<#IzyT5JI zN{O2$6>!V9I@7HHh{$Jm4b6V|4Bb80?QZ+^O5!j6I;p&&9?(M8tm^CCqSK+@_JnFf z$S(3$w-JqN$y6mIkyE$-z zi^TbkseK7eVQx&`xlsMzk^qJmUVmMDV_+OXr*kQG(D~lU*)pwL+&vqzC$%zbI+pqC zYt9Zv1)6b*Pi$b&4Z`Tj+I}>qC42Zl`$*g{& zPq-QslM0bkfW}?=saagZ3Paat9m0OC_e^n<_8mbYwMaLJ*Y`=E-j)#h)EUj}u$$3A zZtPDSJEH~74OFkr(g5NDi)qTdZY9v4q6VIAEI`fn)J{`VefuF~?iF|3?1)%$`Pt51 z`PPVPn;IrRVmfE-?7^XB{i^pIhZ|?@f>s2KaV*eM7FsQ5;#sNdBq|O=7ukgDb2jjl z3(*mIugp3oR5KTOL(7JrlwaL?$+TYM~*)vQc!!BH9;)y{MEq{S=o=UIQ%BLYkOA-qhiydVEw zT6HIO9sgdPD;c5uIQgYEd;kn>^LZN`jfZ9g1V81}FJ;s(Wk$bXb0#-xzUI(3A?UL5 zL-uaU{3j>X!9LZ*85Vj9`LS5#)=x1=kW-!>!b4$bS!zM`&XJ+oH=z~qbV;c8HkLrn zdZG{+dYzfOrs|Ah`z%nQHMKIwTD_WFVx|6Q+0*fDXKE$ZtLvG`)HM?B-&q`49s4!9 zjNLHtA+7P(CggIG-|`>8JxMZ$oHakjf1^vmAZP1ub7tF+venv*OgvTuLI3oJFzhDd@r;Fjo_E z>8?>%RGee??4eVBi4;to4$lQ)e~Brn)%o*hW}OkLJA)TwGETy+cjV0u`{ z9)c+y9ZjtS>A*^?G!}urt>24Yg_fNG*iNXt7}~C|5M}cV^H$F}vmmc&PQFZfa__!X z)VeaX43LkDY%Pd17ezJ}MP6dwwnnQc@-DP|apX(!;;4;B#$Uk9k3m!&(YRXA?J}57 zUkesTy+#C}zOYaQAj9RA_&P0B-S<@oS&{dxNDHT?QR)>dvP&+X{b|-PIuI=4XAPW1 zLSI>ZeztJPPqNq|!(wJ7k;`J1JqBI-F}3n4YxOG4+TRxB?!xg-xLqx>sW|dlapY~< zP_05=iDfc?_!G?)g9FLY#qGiVKK=*n$$ATw;KJ;K(#O z<;WIPjkjpsClWSdFAkwV%paz)svMUoUMFo1m?%FuF3rmOnkyk*f$UX|pdW;R=`IRl zFJwMLXC90nQKVwzFv^C_;F)bOg=IuX7&RI2t%Ch78&kxCK{0^YYx1CISfoTZ7+XOu(;~_xsu{WNzel_q3L!rrb~O zrSX-6ur{F{{!xh8Cja=%cKJt7Vw3zPmSQ*Z-D%ql9<<$}3k=UdbDkSsT8kB1CIUk5 z9Q2OikP&L>9$Xt2P20IyYw0Fb%)gF-X}>wBk@;O<9HT;3CSQSifXIwE@B$jknrQM7 z6i66_(HdCXdC1{|`pno~P?KLRp%PMo}1~wrVnTsgnI*Cq^32!hhutVtXVT3WJ3*1bOqW9M$>M(S!Nv1=T}|5WNczaLsT)shN#Xn ziON6b*(y)0__3@;esl1N<`dOY#%Hf(a7cp@zl&v?oU*1ZzVbUU!aqKDrY+U=O=!Pf zFm=vIXJ7HI)6fmri+uX?7+dfk;Ljqyw1`50gKCLUV4yn17D0kqnYgnNZ-aMRC)BgY zWBt~;P>qa+Kxr$qY~ub{2Zfbfj0(z71UHZ0$i*hzVI8_uBBX;M6fAsSDt2ghV{-Jo zt~zeCw$NtL4YGhBR4;a5zw`9qP%|G%p&t8_UVD>67_*tNZH1;0ZZw1m(T&J5t(Mr8 z^w)-slJ*F?tmZ;H4~*CCl#;j0gye2fb5T*;CACl*cY=OaJ;rJ%SpwE*#3!J43!*b3}f=jHrcu| z*f)+6rADq_e~)T|S_TWQG6@Fe<>xrtO+Nx#u*HX%3Cs%P1Rz15Ac)wiu7vN+&zY5_Ts8qfA1T=3z?ffJC z@6wO*+~|2;>^!@)N@z7rFSEoPwL^iM(>3v8@r9)=TOR>vMfz$4qO)iQc;|!ahqW^X zlSc6anIN!e@=Qku&#Xga zS>}GATfdmNBj6e0Kd7!*iPa7~9T%r6#BJwP1rdA)v-BpyYW5YLm3BFVsf1X}W!DHu zG~=DP)RU)7=Op?>OJJ>O3MAih8K9O!mnhbtMN+p|ec zpolU}**RsP6M1VnNc)GZ7pPV6}AoMWmcq zb!sv6N^xFuRiHSsBK~9%@L97AnKAk)G7s_H8CcZ;;P2$)a;Pc)N-FiEFjfMP9ha5!Yy*(RqecICT zh@!>Fhgef(adFD3E3#XLc_=Wrfa~QqsHwwf!`+Dm zG;kLhVBH@}-SG#p?_xE>AYlv-Z0{}Fg} zDGIW;t7#fCu%;8;Tpqe7YN~|XIXYW!Tp~PD8`imJt?JexPW5ART6XNK@1%r6N#VzwSF6bP=F@k|s*IcY|0mqQ8g60kf7lu314y=-a z7P!L@>ZiElr*QEkbT&QCWVkpM6F(XkTTa!uFx(~#MxW!`=L{}H)78WNK{pm2)P-s& zRL97UtBOK(nXtFi_BrC$KCihN(+{EA{^pCYGHLGf`EhgyE7c66C3#%l8tRg>u)U^BVeVVh zCDWlxbZ6p=;m%F0*X|rcLXaG|_Ro28;sE39om!apL0pD<46UZUvCsv6v>bsLAyCEs@rSYUE zi;MGCL$Kb4VD-$S@uiY+i5}}NN@m26Itmu%h7(Gr*F~LByU*MpsG89kwTne+?bR;M zIHo7=s@>8(`$ko)zi66G@zrXU?shxfdpq_(#-;#Ea7*?V2PGC}A&2EDDIt7_H9=4v zLmq3ui+bcFViH&)cAH~mINx2}A>Uk#hxqMg`R3Xfgt~D-tmzzG#mhwy9bIDrq(&GR zzNi_743IdjuGzJ@N+qpL$8~djLxo?-}`ho zunPv;F)`1wKE6nGF=g7>b{NwSsSvRLj(qMSHTGxW^FYzf$aKCI2c%PZm^sV8%iOZ?iW zv4Zt?>Oh_BG-8|xa#lPhmJAMISm{op`?Pw~#5DhBM6G z3E-faI1y=^e#8oC8zr9i3q2th`aTt4C< z2a2&(%{_xBXvhj>+43Nfb*`Aez}v#WyQD>(NU*q4%?;}Q_wfCDcoO*5nUBff`v5n+ z{{(!u{;MGBMc>#UoZ34;TADxW1fXdhsB{c{!t!?RwbRiD+nof8i-m^pFc!5#qmEIuVpJmBG*&X>fA2mi!ZhqOO&;=w#m)`Lj< zb|)UV2OX5U2OXU0iuh(8bnv=9=pfrU=-^-jQ56(q3({tOOi{{gF{c`Qszx76o^Vbz z_=h@Kzw1*C=((Fy4My-$pK8$G`MM(3N>`4`1o1J?fd(yV<}+Z3X$gi%$`75;58tKt z5H0yL^~2ufozf2v0P1A+2ppG>^^AGzX5qThQYh9fRS1DMNf;z=-OM<rx82`{4L|rgD zh#aZ+=J{Q~p1L7b|C#nN1z{-QoNuE?+0=IB&9gTc!GwwbPfwk=a$l1N=rJyDJgLex-Gslg0kSG4J#7oq|I^qP;^tb z$>vscbQHA}>1DLVR2jugT*l`t9mPh}w7=Ku{r-HO^PJ?Q7qegf$n$xg^L##^_x=6; zyg!!*yO;TkG*lNfRFi3l<73xQ>jY`YGLHWAzZZZgXo5>Mvd9i6<;TUFp^rK&$ln1;4@6%_=7{JsJltiP^3bv# z;kXP^z%v=71iZ@8h+lk&0L@&gV-TgIj4UZPmA2&y5)qEBua?cZd(yUH-Qk-wQ=olq z@G@?|!k%)oIq#V5q*ZeZzA>6^M5aQtGM7G1uI$s_$)+L>&`(B|O{Ib!=?xb6k=!Sc6 zp03F|879`xKS?&6LhM2Df}N-m%TDicYQs&B^3;YCej?-V^Kp>EwRnK4)9Wc>wyGSt zfKR<^o-s@vV;JbMth+%GK#EMywE;%Q2D6Wgny;>&xuk##7Qcvt*RR0@9KqKlYMfY$qb z9j}GXg*fE`-GvrmgJQU#FBE+Nn=JDS$6&rRQ*B4Kj+XEqYXs_tf{a_uo-lVees_k@c{opAnj~oDpl0tpIxNbj^lp+SQm4N@)|6F3{)Pdr6hzmqV7Ae`) zCk+HH3NqC!;jgt(GDltmznE7TB5l%txHj={ANw%Ehg_{9lA(Ep;rNa{`+&@0Jb-i2 z%tOHPyBbI2lJ8vh3Y9BGcpwj4+QYWMK1n80j({*kG_Y5#=pwhh@)M<%bjk9)Abuqh zO9U#Z8Ogb&6`~<}wM(M9fr^JEQC!WzD~ZS}Wsuhe_V;B(88HrrK;m+F{5aN@&Xzb;~pg*j(Jd?2PNJm+p<2x);NXwC9{^iz%yOAbgN zcOVR72(0atSP2Dew*y@{A(FylwA+NQD8WHox^AD5kUN=eIWT^Zs54YJ28iygxa-z17gt}}FDo}a(# zqx_~BU;>70m>7mgHR)$cXOXE$0KBQv6fO+n9NX?ZUIDpEnu~y(u-SPMKuiteAEED% zl9s7){NwYLS|lG2t4%j~N?BEsWd!Fm+TadExo6)O2;b48jfch&> z3W-9IJhO8+fhaih7-7NO|2g?3QUIoN$ z8zsbb0w@aguF&8LO;Yd+kNZ7wK;r-j4N+56{bf>wQ-~a#nxpFj92y6st9{dNTX$B^ znsuzyL?6_^h^HBiQz6>qn%Utkl=Sm2KgS&(W(SqR9DrGb_xqWyv$EtcOs2Y%giP?N zKP*VULI|>G^ZQ#ev`If|0qjYhh2N(*I})a^#cQVaUdZ-A(7Qh4?Ul5yJ@Oecw#Er7 zoZFQ>F8DmbE{>c$c?EC^L0xiyashON3=r88v(g@#5Q(Ok7m1yvtPGO{_EE`bZGOAZ zR9v=O?SyF697Xs<7{Cr_wocWN2@6;OagpXDXm4lQCMtNNz%U{SBpZbqydpwh>k4&J z@blmLKW81SsE17d#Xrg79FUJvBr$Z)zsFSrj7_R50mBdJRjrn9)S+6{Qz2VAk}$!# zNTcdgvkmD9pQ_`taZ#T{K#p11e%9S!JB~;Qr?Ya~+yCofZ-E7%pxOl^9h3mJu-L}m z;sNXVEMg=iK&>*XXtZ_s0Xjn)9>>v!=HnYq8maHuabP33GplcG8h%Iwv5J*5zHDD*g=ds#oYBHAEe-4}P zyTRW`9Shj;CP%e6TofNEieMGnz)NTqWnK^(Y>M;c`(MZg&>yU3XLfA_P8EWYuFy5F zh!i1VaF(qCG`$=cAgrh%7i6H`fZBi+nx_R75m%;pk+PrP?>(5Vj_g+CAc5dmdb)TA@Gm(OS}H5@ISRXWmSTZ1Gc0sc9Uu6MKFuY;Zva)q z*S3|1wq}}3ckj&$^BsJiF+JYp-g3u7h|PoXrtCv$SwnT?cvHqNzFtLzt+j_N$>@X! zc+tH)2gE_2&U|}x{8rZx4Oz9J$s6}UjI|63*D@in*1U*C^6ryQL2GbI(7-t)ZT#8J z(A#&rxBcRqcc2#o-Gmjsi`XGo=BZuTvGqKR!}b%ov+f3sOQxB_PIxp(LX&)gizvLy zE-C7~`HS3GSx6!OpSrjtI{Y(^f3Le=XyZJSU2F$M3*v&fyFKk0NEjR31=`HA)Y!il@7EQTBnD4~_90FZEw0Y$IMSul&!a6b@eAue_D zonhI;YJHhP>G~1XM_xV!jjDt!zN%kN^{%~>t&U#nO}~)^IjY@DG_&l-=wo0-@>Z*w z!CpYZp&e$_#hT<6Jj;SqwqN|Bobw0S7oFUh&44fH4@j5|7iCXx%+SFws3YTBSRRqk zmZcQfCGeYIL;ABM_4bc)ew2K(u4PR#8-WHiQ3D`*PMw?x<0BWvyN*{g z|0`Hn7Y6e4SR$Ci02NNUgbzXNo4T~9W&L;Kr;PEY9Ss-QvVPX&gMDw>M|h`Y{g2P7 zeF78UBF(JikG*;p)CQ+h$wx1}#KrPjdiAz{^je=GTzvIpXwTH7eX8pA%~*)qE*QVeELB!9K+p5|kQT$FC#udtu*DaJ(@Ls9V(mYy3S0XkR)@8RJ9E|^WRY$}Jj_9|lTE=) z*VCdtyO{m!7nzeQ()STF(1gH{CISp^NE6-wUAKTtd=Z?jc?;({JLJ>bhgv;UT6<28 zMQ>R@Gg8suwH{1Hk&Sz?;EyeuX*oU^_l+98L;eeRd~p~G>DWO5s$`&u;H*F}M$&lr z1_uh|cv8+nh0$43i}7T@V<2Rnb;bYj)f@LWhqFjr;w+|;pdk1uM9aQ&ue{(@Q|4KY|$TkXUY;2W)$p# zt+2YV1uV71#CXW=;;Ntsf~59^Xa2HLNk?4@&`JhVyeI=5c1qT6FtH`f!{@Vy?dl-r}#A$7CGl{(9xl z{3--UlKk(Y;I*t#TQOI;k6?@@%8sY%h>9vM{P`a514ei>`0TJzp*zKT0ySXy|2f(X zpB8VW!>5a^#<+G^dk#4c!lNmd2BIs+@MnSi!fZaqJ{@uc+ie=fPT3?6+ybQ<^=nnM zsVzb=X%YYxnfd6IGg&2=$i;Su>e8Kg=Hb4OQ0^OfnhgWDc3$J%JMb*K45n-z?Fo3{ zVQrMpN)Q~KCfY%D04~b}NDf-+@a?^s=9r-xD2u6YSxWL^CMn!{7XBH}0sJ#3o3NX; zXHyA#b@L@w+jrf>CReg+hd*_s!(R`K+CS( z^nsLEM~Ma!8o`&%bAb}Kl{T|?nASR6rBE*gf7F6JdN$gT7{~e4P=-bP)l?ss9gs@0 zpbBm;Od-FpO*X@l1FQ*aCeE==8GuI;KJhnojywLHUl#(W)8Bz2%{0$!-K;#ts- zHCfSA?)k;ZXCvPM`I>}$1p=uu3Vnr|0%nS6HOyU~41feNk_3ssIiVp)&mT#qB6A>s z76}yTgBV8Js!OpYf(^#Gi}#%y0nb!W+36~;z4TS$JJF$DFhwO5Ea!~jAeMON?hxf6 z-t@ndTJi2d-gJqj_~pUrt@c#oIj zpX8y{KhUzryNhD?tF}0JgASdRLSJUWT}Aj<_Dud66cC zLju}MKK(>#4GAYMrD-dOUdtK|2syr|az^1&c(vpEP6{G)y+VE}^v|M+6c&A?;3_i5Et65McOG=hD@Ev=bzlF%X;!_Avk} zGJ6D-fgOfoi#&gTbYaIE*m7}{OGelkcxfT9{WY0{6CLu)OLB7=l z1LOm%Gh3fDkl@k)n*|jQgLDw!L?FoH8RbC55_28Ct3$R$$PciM>)BCB+$Q}K%F=^2 zFu$}}um+(-vWPW6s%9l+RMej(+~M*IlE5FAmwploG}D}doB)UKlyr<0sQ}{iRgADI z3CqQIoN4yY`I-}HCA|u$_1qx=on>c=DNJ0}@8q@a3nP=>k0X_2mPn_5 z7Z&L@)(?jgkn47VQZ)W#$_T{C(0&Gz0se}HvR!fCbcCN>Nt~>M7cpq!$*OXQOG1M_ z?#_KfP{-0_DCj&XBmWI~s*xOZX4^4^wi=}2j@@=C10eZMdo=-~FJs{4DC>qR zDQFdxT!`;{8#k-uN^dH;><%TgLhA+k0$zkhxy05UspcO6A>w?ce-ey7XJUF{He+uP ze5RQ?IEP?obKr^ltuI1k-MSSxq&B5)b8O1jPde_|xjF_*K$QblKvYj4fs7vd!3ds* zJ`>uw~$ZTZS&5Du5YwgWP1uiI9NQ=Zvp!Q zF+nc7L;^Pv3PydOG$wR34WElJaw-oodVYEhhJ!QBJ_WrAI@1*Ac#0f7P^VFF-jGl~ zHAxjqSxJrSjlyY3xN`cH27|Ljslw+f!_#zslDl9ImgDXfUWm*j>Lk^(y)CCezc|yZXsF9IJW0hcL z;iOaD7!>f9nJdz?uU1%EmQr@G7skyqIZ)7|`R?V4D5k&NR8z+O7np&;&ki+*h(#iO z2%}0kpGq>Hg<5nbg*qwt#YKl%LG$fulaSKCf4FuJgseHNrPkL4!c5ft!p7#Xn<`}o zK0SLMKI*|&iM~)sh#z`w$_*HOjPq1w=M^sAnK3i_)~?LY%j4H@bN7}XGK zIN7^o>b^R8HiN^t62VnNg>ft@M(vy}&|^{QgDcFN0UJjg6 zv*@*oZ)V9a*2!Rzr1gF1wi(^hch#n+ur>54Pbl6fxA9kKF03!3e3XjJ;P#*kQ4PE) zLh({3pVQxpI0DEbS)~lN;1L$lgPKh|MPITyHpMjhZ=S!CP=5OfSgJcAbz)=!j@_De zFpT(w)D9E4j1wkk0pQ>t%N++oJ4!O>d*ozXt_c>nT zyVYs>y@q7aKFk$ou-gO_#%}?{HlV_D5@9%c&@qXzWRjK_7 z_um<(ZT++HDoP1EIzCzY#_|5iZ{Tc{*P^~lK?VkSyGQM$vM?IK;CTNMFd8!1i!3wJ zaQ{35m*Y0V8^M+E$`}E1*op2iR-pbYsrHM1c>Xqcjb|F24WacN-r$1SX|k%Ts8k?C zmIL5eQ_u5F(i0&I)&AIz&SRTA!UTqg+JKMvoK3-xVNknhhwP0(v?*YE1>Fb@LNs|& zMXI=KUn(iT1#|=`d=gx^Rqf>K^gVOT7yucCooiq`t(&24B7c?pea&mzP^;0 zNzdA8*R5vsN9(vmP3)z6?=SM6?b%Ww{k-JY6Im;LNM!y|h)8HD_aL@8w;4tbyN6)p zdf7M0w=HE0@iox=Nt__$Kj=>#Mk0CkOf?wsa%mfd3MsU9OrD}z#vNys&}SPnid(;1nqzvZ6YVY#A*2kHk;Uw5SEcj!8 zywpyDU4wfpL(S)_tk!sdyml8JQ0iu~KY!Q(GG~S<0a!RTTQ^)9%FfM%f$|GKuMR7TEavcCh1`1b_4DA2pI^HJE84XwfM*{1$FYx~ zdHyz|UCzoaU7@!OVzk>vDSTi*dkAzowm~%R*+s-ml0Y~NJ$*Zk9IoZKDi37uHTeC@ zA?~J3|gO64K}P2tf)0WkLGmk-4dN z&T56!Qgus2t7YBJ+g$W7oR&$QLojp>p`nf;wA{UcP(rk)ib86rAUyMnkCRQ&F8-Do zB`~=J6(OMza#tv0!Tf1OMx)dFv$f=+uG_KAm%pY5Fwz2>-y^&2vm-6*_u|#3X<>%a znHt2QW;-mnr|=szL7FTr<{j&@ZL2YXrrD0XrOTS3}+2ANBmPL!YK7 zVl`9??!ClT_}{XAO}o4QCz6 zjp4_ZNzxBQ%~r_g6Th(}DJBv57%7kdCZZEtfXQHqa~S>s69^U4lACE(o!}fO#$iQz zdtSexPMC|=va-aDnH=esQS?%=WY49~#MQj?E?t;8qY)wE-|@|A2@!k6hY}AL4uHtz z*l+6>4mr|g1Q$mTV_^dCk5mBRc`_RD9y?)IrmCu_1&^JuOJWsH&qN2i6{`5+ zVVWKr$a=8%>iLn2q0}J~=#YjaESPWOg&0%d?yCq{GfEuU2(N@@mG&FWkfTe=h$O^b zHU@HGEbLRKG%a@9C7xxBZu3_{HoT@m1ZR(M!?bc{Ea<{cjTFtJ9Nz)Sb~cQcXUo;i z68G@FE>{9CEW~M9N}4gx4BR2S0WH9M^GDgY8IbR`!$3a!LV6YC$6Ve3PW=p}-1ZIp zvE$!uXykH_f9>K0$Esz7-Y+Z~>sa;7uF9$#V87VA;R{?;&8Y|OYA=-^xRw3P3f;~= zvUCH^o?x`hMLUVBg~_2I7>Kk|TA_M{Fb0FeaUT>fg4ZO5Et3L9rqX@tN(^a_0>!|1 zj%F)NT{)qvV#p*G3;`b-6Ko_}byMRpb~)b)oXFICD-tn|fr9x(=nyPce!&>hK^&8f zZgEqI@h?#2`5TNz8K~j)8rH6*1gs^{xT)if6Quf#Aj!dtPKvCExfrdPbx}=*o^Zu& zxVPWy>RZG#{We3>ZxFF^p?J?gPX~c$PsXj3JN^O5C6^=2azjW+vd|d!e1)(m6%nxe z#f=xyA2`djx74?pGCa-Y5>9;zliM_NqTBwkJLM=4sx}Sl_t^psG_JV@D~qhM2UuCCMJhyd;v9uclpMH4sfLMYDjJxp9K`)218{m2)wI#z+800ixY5w<9Md{5?kZJ zc>QQ8Q~Ly6QnPmaW#<)C4>hfdUr1Ws}ax(NNmmxo0w zGG`{#kz#65?F_7r;<@b%zo;UJ)3gZ~(4ZOp^G6kQO|qCVBIS0w55%-xUUIu|HAl+0 zT(kkIR3YzYPw?Rjbm@Q7lLQJAN4n7Ytv zE;eNFMgfMIG8g?rC0UdTD3w|0g}t~JD1qV}VuAZy(3&q_6DUL8LM4kr@Bc`Jo*acR zUQ5db2J?k&9~AQqmPlS=G#?=G5V|db`fFr5W~^n7={r5x{W;oU&TA4aZ$=NUapbrEM4Z;Bh)dY z{vu?&QYRwbRz@d8J35#Qp!1aiEuKD>%ra3 zN-%JDhUKn}M#PY~Xrxj&V*_4gmyJf0XEqwCwTx^AI_4Emx$dM~x$n3>!=7A|u!q*n z((`J-b#e!3CNfPH49?>{EZb^cL4tO)2YBEY-ZGBi3&TzZAG@(L-&NqK6HjTe#cEJra6ZtZG~15l zj@!DKBfSeeM|c%NiI5G=n|`u6)%K0*{3VS=OgR7LY{>m~l>6TC2J9z(P?0~LpP#~! z02JFK_KEWfk>?d6AN3cOu9e<``P-+k=AN5^JscDuYzFG}R9NP`mlmP`IBNMIiBJw! zt4_*r9W zBEbd9W6r@@3LFW*8V0E(P@wfHOp4HUmGezTLf4*wCkxO)KfrpgKos;|?6oeyu+DpI zhG46 zCiI}y3>*Ft%^<}HQC3QDG3So5ww?|IH7T<}&4`6i2~4(SMpt5kgePL+Ub1UOLCfaZ zLJH~KEzJPEt?fyTFJq1YBID$SG?kt(bl>oj>m^`O{sX$kAA zh1m10IAFse?_tQwapfP&6|U@$Y8XZ_L68YCk*e8ZlDA8?nAq?TxUmh=Q6L1#VbuP1 zNZ6>k^~mg)rY@IJTRe|O&7tY2=Ln}XOFvKJmc=nQG0TxXeo*nD>A2w`Wd(>uxk**l zM3YW-@G6&}5>y&qGx;gLOSr%x2o}Q{3rhNQ+okFlB6~p=^Rbp~vw06fR^sZ28g*sA zc-P%r`V2Gkd=+vM(!IGQJ&DS8C@^fJ2T>2L4HLDL9Q0?{;3zjyFMJ3C-JNN_K^uob zgKb$cNR&459vG~})nU*bD))onx#tD0?B|bjsY$>fO$I)UFPl|6_4I*kpL)Tz3C~)* zCOkk{{UMlWcG+F)feploriX$Lim>k<6gfe@hzk~q@7$9O0vheeQG^il=Q0+|nGb>( ze*R0JvuK zOvmsyWL*d>qXRmI#g+mqaqlFwQ_4Nf4C&M%Z^J9f6%)+Tp$IPx2{0=&?@tOjh7L9b zgv2qFh?H2zP$V}P#IXtFVp_Mw1MjihBo@GDq_@ansJwraM;TDL>C{A)XuJGRk7ZYDN_Ef%+EQX1KDUvA)!_p7n$;Jfh0N**W? z>ZI3;Er$0M+l!fc=`rKrR`VX%l!JWyW4R(!t_+oN)ux(+$?Ba~X! z!{&Dir7~X2SW49Z68?z{gvxcHa=j}fB2r8>Zc|$XcV^Dnxu?x$yCM_3`uWAh8CxWv zWZR;9w$u6<3bTJwn0@!4)IWX@rj)Zq+F@==ojV6!a9`*+1*(R!gEes2+&Y^drm}us z*N-5JAssV5rnR*`gsyD(wwSV4^f?Z<=@`n1Dvj;GbDSCgS02xn|NJZM@&yC^Kt3 zV^$tUnG>w*$?-2{Hf7XVC?t7@_KhDm536@o!^z*0fH7b!*2>) zy)~cU9C8SFlRU&Xyb>RAup9pJ!%7OIDu5&_ki`{1R2#$=h^d6EsG`T<#kRTIc`;P( z5a!rH6zRtvXR;A~I=O)zg39&!8F9&dEttu-lJIV?aTp_Cmp?$hx$IhNTWQ;o_L4*G zfgJem$uh#*EWdKz2OCIdoW+f`!Bd+#Kpkp<)~7oE-~>7ygckIT{Khgg_@qU4vm%1y zI*K}mTX@4<@OSR7LUhGu7ue1sRQ-8!V+V<}6?(D|mEV$g37hlKqm&wIU@4Bd~I(6~@7=nQVh%09Gu!_Z8W6yf2AplV#Y6vEv zs3a7Eo}do&;`gvkf6ST8*UPGL(qVkEs=FwapSPhzf{p$0&iLfe?(xa$ZuwdbpcO(U zKf%YV38A#v%wEvuj2FZSf@C2|QA&CcDG-+@kTjrW=wJh>KE(wZt#4c}WT*7lV26}v z6trO#84WUHCJQsAqxxvzji(!lin)H(!S!=+5BGp(l<#!1X-+)h|G!Qc{{%$_$ zwTj=D;l`7-XmLX7>>ZGXABx>52&A~?zQVk_J<+A%1#HTq%q(nAK1m{_H=j-hpNdca z8hpYc7=9Xjd~yi*R0TfCMox#cn~e{nI-{7&sX%wt?+${7L!FjWDDhNH2cmP7)pS^D ztLYFrXNE-(@XXjY!W)$k5X9U(MlB4YNxOQaoE+#RrE&N~>~JL8CL?Vy4xF>6#A8-~ zV8BGT%N3(-0n3`ymZh|?OU&+1>5#^5B;=`iOb>{W12*`6W5WP36eak~saw3FJ$GG0 zAVnJ?SW)SPneQS00Wp!ex>e)@-dKMDN{An&JVP@#xUaMKW%gac$n9$E4a{$Bh>f-+ z3_$m&$Ug=*j3cG&7q`95U<5`_f)HA?B|ad z;$j?F8$4G1VNRF*n#BdZVjOu%+a|R%)J2RY&oMTl0-CLhv>rr2au#l|ZO847%Fs`w zT_$c7j*avj7ncmr9UC2c2c=X5M>&^%fuUotD#x)1dTpK_M^Hd2FeZJBm?390Ze9r- zX@J#OWL8^ju33R-xh%XzQ(JV|?OSH{>L9Ri=aOK+p-#TwWLNs)Q*{1b@`HmhDTa+i zB@%&Elk=-Ab>U}3W+@%8EzKf3&%%rgg7*NEF#VPN@GsKCG zzZ*P*J=q5ii_QUN;%yk6_q%Cy8n=aweH(J{c7bdXjQT@yXC>E^%RU$9;_a#qziJT- zu-X-|dLl&m^6Gr+leMRGBi25fL;s*U?xrSa+wDORA@dH=D@gy%a$Fgs+>+z)#`{CN zGhp3pw^=r^AwelOOc%?0Axlhu#`n{A@OZ7?KH&fpTDNwPkPYca@!NQRAo>H2FhT`p z_-6K(*Jppzxt;sKpg*-kFws_eoE@r=`#>N&$*mj`59W)Y!D=+42LEVH+Ct@-q4I23 z#wV+`auy^rT^7nbH4p4*LD)Wpjcp@F`+0v?-+~~r9$27CTVG^7!g_>*zJf3~#TLT) zg*%@fwj}!z2_Kpz6>?jWyjwBKT7`wJ3~H5zvvjBreNh_TW^)AdOFP(L>M4p6*-mBT zaSa<@qXN0ub&kAL#i?&Qi;r~9N`Sy%KmP1mZWmk2?P6=q*_gGJKp$JX29XLdpT6y$ zQj!_XA2J|hPlXC>kyKdCtDiqS&r#9Nuw{=`*Y)pNzth$?T0h+{Q@@=UWY_;gulj3k z{cc{Zd9_^l;H)qgMzS?>DLz>p9EhDd+~^NX7`>S*RusBK+(h>UVK8UG>RrwbM7#7cn*~4URezqXzd-Bn9jY%tXV?Ft zU(fzKZ2e`tX0!12lfx`@i5&$vHwzcsL>7`4(1rSRwLN#bLr6JO;DJU_Wui%(zqrc! zLCpSO1iMK-E0dSSZr7P&iOiFKOV7Xv9G?%|o*#w2cfLzyH-O>kd_KGLC=Anoj3x1Q zp-x}xb+CSYatv$N;TR_|u;M?U5y2#0yC5KG6E|?+YRsWi@NwJj?HfIui&c&#EUXb< zT7vD~I9#iXFU0=NpFr5qPsOp7_-RKueQT%2x4RabJVH1LL3bF!-t*a2rOPy#@Bqg} zEo&AC9p|cRL^5F>?jf9>JK7!;UCmdRIXDSJ0D84fd9b{(f;TI9V+W`Vsn_xzvPf4( z!_`k@!gkQIl>K2oPY1N(HNi}2L*r`1i{{l?E@{9`lHeG~XJ@EI6HvoQ>m2naNleNB zqi{KWlkld`vcnGnJ~*##sF#=sJ3%=S0YbCdH$UJ(Z5-7skdQu4TMvZ}^oeAvu$MS3~O1V8$rf1<_20R9QZXq$FiW{x71S-PZ#^cvD3+P(Q0zjds3Ct0Xn7W+rKt3J*RuY!!y{1>Yv^fQQbHLig0LvtWLE zBdr1n1b`5vA>WYpCCeMoh|kFfrO|f#kVYaqk|BYINKcdsXe9j`26Kc(1WLGCcSA<% z(1CC^qo|gnpvPu$v~ehbtyIRr$W)~9HCI6Z3{|=TSc%0YVkTE#JYE4P;}7K)0$DL6 zS)`LOmdB)de)?BT<-+4NfG$FzCMiHGI{5%bks-R%kOK3pb-93Dc*#|rpi@&|EeVic zSb2DuCws9ep9_%!hCm{fAuO2fZcuy#&{`rIP5(!>6I$I8G@X7i20=qbW?fxo%nWVS zSUY`zWT(Rw-LeEbTv0V9mF_z(pi*YU1VwO`$Y$I`y^|2@j6_^DGsEC5GAoV4G6usA z4y@rw%b~l@n!wtvC5>>eR>fv8oDJ>M8fHxDglLlL?iPFld$Ss+KvI~5eGw8G%I-3; zZfm7WIrXr!(pXrpkHu6ZjU{rMv8|mgN4A2|IzZ>2MC)1UI9wF`gn?Krg$>3ZZkN|zmEwE<|e$KmjA*zU7Q|7O46a+O`I zB~Z*&CkFpUL9+gh)-fP8B(a1hmkSh&fA$Z}c@315^emgtz*=!09xz|3oep`{p{pD= zz%7~H^c}HxPY)Zg+cUo|AgW{k9k<&v-@!dx3P#Ghq0?)9nxkem`=AV;?FlRXu*JvN zeU{hQ=Mg~XCEDP%?FLXiqu}R~-VCa3(`u_7YoFU{;<;zpB;_sbf&$Wzf^jBWfg@7A z>F>kdBDNUlO+QXc{ih%z;X3ujd>uKp#;F0>tXvdGL$tl1qqYiV=ZzATb_X{Eh6))m zj|3+y!zRIm$nwfrc0sHg{w3_v8p}QRNfyZJ0wBOY%4&y{v`nq%AD>eN`A1k43fkRJ za>_jTb+?%0j103~%5aCRr+8^SMT;6axmP{*n=wI7d&R82SRR)BJ^3PJUppdMV8|n& zvszXb%;Pg4`+olRFY6kOIr3xHDFT1$b^*RyoK7IhZ0z`7QR#Yo0^pld3Fiw>Q^>Z(%-FX9&&9?64LtZt z-{ndlgwPhU60fzv`tARUQb+$6@&tVrnMt*+Cb{62RZTPVfEc*6F1K+>7)fPo5fao-0 zK75$IFk9b(054dAOW+YV!p>Tf;08b^EI~L`@)1U|Y^aiU!70n;8r{V}pq1+WJq>w87{h=~>{s*}Xdw>^k2UMNNIV_BS%tOy8 z_;m!omb#9ij|+532Z8{sK?jNW`=rAM7{~vYbhw1a9e@re;;Q~QeStjMLX!A}PYmR? z2uTajc!4xZ5fmyNjiQ!Dw;v)jx>hd3uHpscsUg0#Y@^N``)5V1fiwbnWHT}Xa&LEo3P4;>+h1dEPm4l(r^DOvdKi@Iz6KJg*8&euRmGBHb;S^kky@S7+J1mav;$t~3IjVnfb zg)sekxeU977w{X3QBB1F`^~FXF~Dz0n^79F6vK_aHf11Qz;{Wg7;x%#vKR@G&Ge@B z(;`(euzoJRFRseH^jInKSP>f)-;FQ_{J!IRmfuO-dvZQ_%X&R-r-pfS^7}A~Muy*W z9lsB-iFRcovlmzn$#+4J0`s#qnNiLu8G}gi$k@XIbLI6qvVsIifQmU?X0X(VZ#oE_ z4H@JggUxm+5msk)R2CH`7$!6Bv!1~w>(gnlF6#x}$uAuJC1XF@GX`~f2xlgjn``~} z)mM{swh;(4Bi{62=Ds16i^&u~+2)``nSl@g2mzmG{F_U}Y`!)@9wSlTwj;KT79J3Y zsizY}^M!AZ5OB<>rXTO=JyMRF| ztk+4rhIV)A7=}5rhrY`^cs9u?t9&E<60^n^mSfCXi;~O9_R7b~c_;f*AL478m@{r* z&KTC)j;Fy%6%!6i|NN#7OP@st?5Le|bstlcFZuCfYW}Em_M~FrYs%N~MUvNReMorV zSi~HIV>5+w>2)DZC?esJW8knsEC)o;95`0rD9cVxfxz-E54cH&vn^cn67?QCv!o5{ z=1kRjT3gJ?907%{1-50Ly(#C-0=Xgn@uf|2cuEbPh!E9EfiMB^c0Qzfn68hrwW>;U zfDjv(kbo5Xg-3qgTc2#YFqblox{5r{pZO=&VyYA3T#qOfRx5vemm7OY4zwyf@OtaR z+yk#ie=h?sYa-9LCh|mHLz1OfQL;|iLnW)3T{;o43{P*1YGwzV5|(}tqUj_{ues%` zVl(CIqSsZv_<8PL@-<%`s(h7N`I?oHuO}?1VoEHVXkwI2XZxFyuT_V91Np)S#xU?Z z6S5Pdz;dtI`Ir2UB(3G2nEClp+OZFX zC9Td%TC`6|>yoXSJ&cW$G#-d!?%M~FhOZ@yq~(?`eja{v?ANxhseHYXOTP3_LXoed zMqBxkuQI6pS_oP49y_B1=V~U@X7pvty06)ktet}u#&k1VWXm9D5sFxe+3J5~%)ZmL zSt54QhOmffHgzK+R*!)@?ADTw93nRLgT6(q=)K$`X6A-P>_=9_RVMpPHYQ&m z?7eaM8oQbH>$p`aUos`!GyZxa;~%GuwDNUx#y|1{oUmWJP`(}}N#WLW`^t)Go06}4 z4*CZ2g-?hbQT{1Eu~A|gfBHX?u!$dRmW1sp2f?}FP06Mt?4CxEu)KviB z{VlhI?L8+fVP{$kb_B0EE!Z=%m$MHE+W@;|5~Yx^J9>p zNIHaHAoYvK97svR5wmkex-yY3BKqYbQF7p6;z^Mxx9m;Fxf*>TJ~bcMZP^iyhH^&t zCy)4s5>*MYI<^90g#ok(SHzTIhL_&;zcycrMmteM5ME$5Scg=iXmG^HA9}|6yL4}n zdmMkM2-jUtfD@He|Jshoi%JFQ|2T(oPt5$}e`(^549XPi==LEj1;_5A$dW)0@uBj5{s; zT3SWsV6I@nA6tGdWf5o0o`riaaR(&QR%^Y9t@BkqS1w4;U4cQ992Way5no+7(KsoZ z)YL+UKu9wHM3&hb$fw&M%cKmVzlixe)>cxa%7fuNT&0`Vc2nUti;ryk95&^S@#{0~ zp+m_|2ZL#UC);*8ZE~B*+@=E=P}YnM`^eF3#CHarU}M0@G=L0UnNR9x-oY#m!mu%q zQ_k$lK$|$SBg>Ef>ZHy7OsSUy5bF0c&9CPcxY|3z*6i0Ja4XVR%5}@=jDhk#9~H}x z4fNe)Hrgwdd`>^P4EyA}n$Lkw2HEH*A6LFLk#7x571U?=<|Yo@B8i@STTHCeI6+0y zFu%anCfa96k*6Dbtx*aVCGQ6;_+uZ~$qMPNxQ|`r^2c(RC%zH@TM-Cn^Y&IaUuPE( zx(@WmY?$FSkVp$=Ae4QGS#m|!16wNB+$XPv^8CxpFs=%aDA(p_b$=_IW3+UTZC1_X|IMo$^1VG|@lm>*v`+ z(tq`la;9Io0y6Up_ zGqE`VZ08~Q0hH?mF`O5EDSxEl_lu|OO5@4YA{3x#Z-S3P3Bh9_;tHZ0X3hm?tcdN|mM$|tl% zp&+!AG!c0mSExC`1$+W)v|6sp^>hj59?b@vbdtUw6JeR0V6XT>;?Iv*wb%LDSBX-(J=ts{ZDPH<8l+Ya0$X$C=%4B+0)D;G> z>v~&7PMfrKnrs~nx}Q;BEUTmK!P@-jaDE!G8-$Ac4gqYFTajg7M@N%jD&shZ+q_o- z+I$2eXK2GxFZv+0t$XP?!1GP+EnhHwofofc-SEhyy_(iRC!{i@#Cf~qU zp)Pf}N}*l~phg|30e0G5BdI9NS4}}Q>6qqomJqM#IovQcs&*`x^M8iV-w6w02INDs zsBF=1SxRci>g{$`3K|sFc3|;&7Y-Q?#Yrf4$crKb35y-&;Inho+Q2&5U7Ha?R6~Rs zP(>hW(t^r>E4Q(LKay054YUIC(sI9s?^6;5aS76a6%RbCjV4txYjjNUfPL3mc^LR+ zwhaT%egYD*l3%#~gYd}0<#wg(RU;$V{or6wO_{0R%L8t2>hGHwoPSP0A6|h<0fS%0_XZM7&@S&Z= zkk6BgY<`OJk7kUJ=c*Q1YBE+pk2?Z9IeeVi(7zES@y^5FaDAfNGFG^9^ zWmXHYiX9xHmoV8HX5l%`H~xw(a~TT2MYk}~>1s=d%4o6=D(`FIbUedrhsyLV)jTbw+#{ci)?ufvfJUVLZ1;18@M8)`9=x)|_qraTo}jMh2Vl^TPi z5%2-YYQGBKfJBElYZo4H{OILg{7ul{SbxZP!2yp~;8fd_SKuuyvaL?-wgN{#EH0|{ ztN92{xGJ?*qX_$x~5*>{=SYXTwfUp7@HVMK^mkRjs zhzy?!hTj=%&g3Id0Ww2@P2qXh3cL$&aqccHgPCIAEtl$ew@lyti98o+QM3hPB1=Sp zUL^f9NTiv5B?r8w2q$)?Z_Re;x#|4~MJB!m{Y^q&u!kb#HKcc?&^yH!EWIm8Z@7*a zh>%jSNpj%;&ijyEC0u4lCbI?bhpTZ$zjSFdN}}TqP3*P;Es$KGzU;`*CMZ;8K@&uY z8xC*lXyaTmNLvQdmM<}PUm+OoUjz(?1LZ)<{^$7JdX_Vr-x$Bzpb3ZH4L$Mu6TaF6 z4j$)i9)1!nZH#|(5Sz!pT@imGWeEmqwvwU>4yqtrdaO1gOGbt+f*@csd8%p=ILOe+ z*(>wvUYSOUz{7LA{TF#R^+dAs7lPz@+XBf_%f#ILdtc=fDl-YP1Nnpii9j$QqCMc` zr^7G0QTgmTL-`k>e3lV0NUB|7Uyqt>@Qq7<9`%Qw$U8JP5+U2vmkS`bF9Xk!s?X{} ze{CBpVLK3ZSzHZDpa7M1&Wi1qm>WiN`zmz;DQppF*fU}hUs}1uymGnF;zxy`MR!PL zd(p$M!j@(^?C2kiJzCZXYm;*|9P{lJ(M-G0jAzDj^%x^>h6gy}1A7(T#n!!b1>W=% z#m=t7P6mF#2haL@t-oUlo}w04Db%@w4WFsepdHlF#h1)l`NKYWnVB&xGxhQHTNQ@D z;oSX9?lJX~uMGr9E}Q2TyIA0Z^)7A=zYUfVZAqml#i19A7uEabEf` zEn*%0NR|LZnM0x66)L0v#)xSx590y>8+LaH7ra5i4sdz>Pq}gV(a0{6g z$D|83P9tQ$WULThw{7fd{4c>Sxda~ot4iq;g{UjkNC8kl;qW*E1vgpx!=fP&@J1F0 z3zz05&MSWb2<~%RB8UiE=b@kIW^&p5aBHZ>KYKkZLE}#gTjW4ZOVjdU_uqK12>VkT~ z<0ncB$Z=8Gw+5n>mNiXOJE&}fL^1BVP}XPazV}W-zn0LiHMdl_eed}f-C@yy%Ct!% zjKusIc4a4>=K~31kjFfP*0_hwJfk^v*v%FK}f)|KTNW zJmAbJ`wgtx5gktYl>~fs8?kIL6Q>yko;EpBpWcM{*@Cr-(`q7 z9>CKQ2!*&C+3RJ7o}^h8SZ1-&P9S!BR>2e#R}@XU=dmRHXY|>DR8;nO$jv$?QWRxO z1R8@O3{6o2H|UFT((k?cVi}<*$3cJn%onffnRS)y9EQa0Mzj70=SN8X80Y|t1?&%P zg=qQ3Q`xk1K)%=}Kq?#wyTRUy@JcoVj{5f{E)r3tP%A{&Mj>hpxkw8X=QIqIP;*u5}tjF(_zOPrYd|{_Rs9bT~{d! zkf!N~A<(L(8$*gO1*EWqE;X2V11(91Fm{7AECZc~gxZ}aj02tEv!T@ddPTp4SVVpzgOTizE1uEGg=u!~%Y3Fwn4lWH0_TQ2 z!QNHKQ~53OTj3?VKqMdoP$_fL&fT(aI)c$~|E@OnE2$_Qu=Th#jr})D51KR30~T=- zFozecB;d7j#>NZyZNzf+4BJ3g7Jx=z%%N|o?!xZ?RbUpu<9(%O0yX1b{-kk;Hiq9S zx*lg6$l|Vw9hMwYYM%U~`Wu|18QV&T)wK#e@0*0xf9HwJZ~eR81xj^7*-8Wg(Iu>X zRjBqhQX75j+jUQmS9vS6(V9JeHK*r+Ht$1Ls6x5r<#)8I+42Hr)&M`@YOO2Ov4HmL z0Vo(kUBHn7QTbkc>u>QJa<-RGrY6Ber3ydnr!0kjh}|P|QG)Ez4gUVOfmOrOn-qSk zEMkiiEPxGeT)_VFW|~z)<$P2!~~oG={~Vs!W(iP#+^cr zfgX_L(!%F|lR*;C)nc?RZ^Tgm=vu!o0Ko#(ZVum~`yMh98FXiwm$U9oV#9wnqz|x6 zwYITu{vy#!{x(qlF|^`8Mtnq*A>GGhKSH`@J^&U?K?nzrD{lchJfzOjd;#Dh^ILl? z1PCBwRUW|NKKRIyDkfcKvptYO2p%Lxy;g2iA^vD`Amk(z`UPM~7l&te0g;TNMG?t9 zWK$XxmL2i55?;Uq0OXbs8r{(kx~>&QST3`jtsyd6!k24Vtqx2-^&j-V!f`o6nRbD~O<=j{DmPW-jw~au;!7JO`~$sQ zZ0cxcV=u=|{4QPw&VB)!=N}z^hm=r;;daf1$>8?9P}XmGEVGsCK=LC)t?+A)oS7X~ zLhRFj;#?|7RH6O4p*6mpQ^Q3c5k3!Q(_XCaF3Ni;xl`88K?aq#%8 z=q^?KRw)w?qf?X%izxbcMjiW100D=5Xl^hEjg!7AW+@FlIphQq!d!8alR8I|^ z!uC&P1 z3(DFH2j#G8=$FH*9p6zIDOcS`GonT?9nwsj07O~G+qL|_!JQcSMU$(e@%NA^`f59G z`llSZ-bYpP5-FDXwDo=&6Her4=5O}hLEiKu#Cm--z?=SkmcDpKtKEwTU%oNj`heII zd#dZ;8((PLDIYo)(sDU||Kaf>7`3#JXgQUX2D)fqAvR}gh3 zn-oF{*ABz^^MQegu&>q9tM=RJ%H)E`_;F7t=FWuM!8_pMyTCmD?-1sD$usv(Zp{CR z&yo`Yu#Ev?pO_~s<}-3*?&nW7p`Q0(&yHU#l;D9piLhYK`F47Ze>Ko+eGdjK%@2-% z?1QHqg#TML0;P>=%b@X=?&%k_;?}VjP;r~sv-m&6YvtaPu0Qq&2(CXWB`OV`!nYDmK0JA!H#cseCLnPBrI%S5(x!k}3M|>+{>gS*0vuB&&0U~PwkXDvs?88t&vJhVqDv_*Xd7V?L;v&gX4*gjI>i>t^Oo%5ri(@0DD6=N%{nYo3?dGz*t&?c z&oXZzuTOhb%lSvN8DpF7G<$RQP713uj5cKu)Dhb*ntU1ip*fwOT%FD%j#+Joq5)!x zwi#L;T@@hCZk)E!V+d^$pPy7EaBy@71wc~9LJ$(x1 zj&Os1%qsP19X4ebvjXe!MFIALxf)yQ1r04bp^@bu%QUo7Mv9=D&z!OK^N*do1*m*> z__tx`%$iRTGrflMC+wJ{SG*+oiSgpP*VJ%466JUVqA1*_7m#Eo4MYSV9O13795EtO zCH!v1Jdz=4HA@Curge2zK!R8CJ^~QN9(&8{F80_Su?NY7c%yN24~5%(2S<5`VLkcX zAf!d1Noh<-KN*G#@0wN3rzAO^}@a{flhwrybUk$UP0*9 z%m+85b$}Ae^VhSLPPUl3UP3K|0s30#TwgCS7UKs>6;cIJ7;LP$CNV~@@Mfg*`HMaG zGWAHC0LPR-03Fbf)0iRJYP&%!XS?y5j5-o_Ff>D_K>Xr!&ZKCl1CzdxZ-9*lam_ET z()=5!@1}Dt1H>ApWM+JpjCOUrv{o2r$4hhq47e2m42|~32%nMRbTZPI zZ(A8zx&ccAg5faeE}dGs2sA<$;9RSDCddLH#k_+VXb;hel1z-YiA5#lwA*4)&H-MT z{9>~ZaMKum@Hq5&c&B>wvtImt{9f%3xr#$Zd_QKExSV5UY0{`gvrGC_CO-FC&%{f| zCU;wLY!Zu{uxzpMyZnARNj=`b7%A=zf@#gGfq;k!_WWOHuWyneTaT#vCq%Ryghh;%m(uy>+Oj)U{WyCXV5!>Dr==-o1d z5Ay3l1T=Unf&{O`9Z<^KG#w+S7{`c&%j5(NFw*^zG+-CD$(X4QY~UZUtaoLP}O8txQ3dMJ8;!Etk5ONcO803~f_}Lbuc@89iw;)vR z2$h$)vY$Vp-Hn!Jl(w@8dasP?e#cG$fM}M{Y@f2iwxNQBLH+PZAyECl+3b3zKH*?} z!hrfOeGyXO{RjZ4rhPE3L_cIS-crqaaRE^#ydaEx19Yqeto&m+ z>dJop!rL9~?5i}M8QlFlLOvlvoY@X}#x{Wa@4^YB{nz~F8<(%dqS9qcVm5G#Ja#F86N2BfoIxB#=EhT3??s)_*O8% z!6=u9pR(drjzmGA(+n)vFQa5FmYkWF+H0H{{{7DF|FgAs8 zq38;QInomH-gUg4CBZ`C3Qnt(U|bkkV%8wt)^)#Yy|4M!4}lr_K%1gn@ppz(X0;~kHGA)o&L^lcj}yIawTmx+86IgNaIV(WHt(Dqf%F=1)bw}AR!IZ zks|u0dE;GB{@;iIg($h`?M>S}dT?vMqettvMUSr#;@C!!5BUE;j}`B1iXM~4Y+C-R z9N6)-c|An%Jao`?uNA>w^!BStJ9IGoK>>uYWlaZVF*#S)9bquch@GZ(nLJmsqT>)) zN;5;g(F!f4C25maWk{EqNP^;sc)pxj7Q8om!dhBy`XDX!_olzbF=ia!J#BrKCH?N{ zh|fpJ?n11x+2FNK;}4ht>tr{rpL>bJ@nFOT4p>$TaExvNMmujtf8qJN!(dIoIUW;I zMf`H7&U?LK&(VVoz*+sOC z0xke+{ZNL*F{s|?KLbn#sqys#Fv%bPa*&shLjmLK2YIcS7-q`@yjFD?pstMQ7(|eI-cjjQ1~t!aDM2C|^nOg;rXMAx)b_o*C~z zf3O#aA+0!(ZWi!IhtiMuu#6yDB%oz!2X2?x_w)G9=Dbh1no%(-=F&~BNrphAf(U}F>#;biQA_>3#0x}?!Zm4g5ZQ0b;938L!y7;Wo<$^e z69<8q6PZG)?z+c zyvIw)WwPCDbBJt~_Saz~4DkV*6z4z4+u*tP*vX{_RERVe%PiaafnH)SWpsXQGMEgD z5f{PRw8Wmg-xlfAUh;Ymow`n@XExne_xH3fu(FDodo}}Qn@wSWih>y!r(*1>$}A}^ zP6xr#6`6&$E|eJ@Y`dMbf=nHH5_nY8n|KF5($DmGvGcM7ku;$OFMz|Izf7Ifb;-;DoC%hNUsy57Y9hc%~QwY z>jde=0n*F$sUW>hkX{@h{X6_-PF;l4mO^@@jNKI&GG2r*YJ2#t1NAM&Z1&p=_65E?Dj5<;W-EIr#nR5g<0aDb8A zrThVL$pYyYLlKlaq#T1EsIV}gXOb9(K{Otbfn6L8+YyQ;SITlBMw9cj1Q=Sh1Q;%6 zDHKhz`%!#`8SaYc=vTeOZ4_J^o~=W8_89?zv27d#$r`|I+xd^JmayV+Tp;?(@B+x? zzA@!a0pFzr{ zyhifl;Mas7Kfq_ZXxZ+7x?2S^{Es*6S#7z|c=IlGteM2BQzdS!Ul;{dc$T~dP9v#?VU)X~?Y*6oWCfB`l4fB7GHEjEqwtw8OE87rZKz8N|vJ6f!y<^UX;K5N27nE(!z z>GIIq@cET?Z*lq<^pg=bdu zqkeCczSG0+?XFLA`n>`8ZS%p$C&u8fIs&&nP9m(aPrWSQKaC3lw0-#y-;-jj(h<1r z9rdYz-)-G?x47*Nm|cxLK9#7XTfpxK-1cAfses=tZo311LThy3H*?2IxV^1W+EhMm z19_6|zrkuq2zf3>$c{io7>hVghQ;Ih{J9dJV65OhX5-Pa#PZl4Z7vF)WygnhXo0kr zx@7L~=-;*ae-kDgjmg{|VZx?kgiBrovEG6y$`A{s-0{veO0P=BJDL6OP(9U=n!w@I zijGikKul`mRCGYlM0v}ohdi<jMswbfu&?~$ihHFv?UNMjV z8K9rY@a9{G_jwy}eXHTstJ(Zsnw~wN}KVhI`7?T@SI>6>5tT(CE| zq`#J5#ty_UXz|~8g!k6-m-n>J!}4hCow(qIS^Q-=e;NJ8l;fkr2DO6Jzbv&6Zt z0WEXrBLfZT*e_l-fguLz&9McIrRl;RMo~zfQ1%rO@bhmf$3cbQnt5tI0}JG~C=%s~ zt#k|IT6VLRV!75N*U`IP2(=toipn5b6&Y#cO>|5bdD9)b1_%0XjU*-whHcksPY!@J zE!PzR0vceIup?sL7FW$g4EKm}hgU5;FLrs2etk-Hbog`8;mb(tu|emcbvB93nA_d* zA9P(taA1;{n+mMQh~-^Ro1ax^D#-#5VG})|*$Q4XH7mf5Ux4QscI31-lh1+f0wZp6 z1d)KXsH@sW@W>KJ$b|TT+dl9H5R~`_uMr2MhZBH&d@ck5HAUswWSpnYJiQzMT`qRd zfz(SrFut?ra}3q-od_w$cVaetz1s8fnqXzP(pIvnc0yY43Z8sD&|*Lp4rPeT^5&SwL@Il2MOWw$kTKF-~la%OZmPTR3- zv6Y8auJvf%>nzR|S>gvAL}e(lXbLp4>G~x0pF`&?8usK3uyTR92cQ^z!W z@f9%BW4?zEuma^Vu(Uiq9`^}sRR*;RYbVi&*i9j9H8pC2JQ{m2FK8KhC2=a(Lfb5T zG>PeG?IO9T!wgKWh`-~tRhOQI?MNS=FIH(aE`C$qUSi_C$6$hh+N&hk=(oM;FR(ED z+34^k(N-K?|2S{+)^fy5?67tX*iiz}J+R~aU5KXRHmt;OX^Qky*o+I4jHhi_>^(NI z^wju!p7+?Q=;)WH{20TnDW^w=zY!h&I^Fj%(Y)0eu3hSS5U$Ci~DZWu)95zcXqkhQ?tOwA-R0v%e z&~o2f;u6NLWRLn^Y5o6b{l82780!nrLY8p-^ihCh%os0mBLE$9Sgd-?M7Wck#5H8W zwX3#Us_hm_y8>4%Aa_=~JmRtkXx- z-Zn9h(gJ%^A5AW%bp>Y@@Da9C!Q6tj4I)(Mi-0fG#S(d6Qf94CaUv>uNxyzHXb`hn zHU@Ek#f8S22d~I%S-z4+uTDGjhvv~PoE`KBrwW0m+eD;+Bf93>u0G+6i^}oQ(kvJz zS}MVYTO%|C@do5r%)FchRJHYn^feT&lIs%rAa+eAxSP02K9YJ|RLd%0N|#Z_8OQ z*KeEGPlKK1>FdBBWP4A+pv*img7DMuCU|~td_&}lt;Oi3r{T6`Lo+H@dbdBDo+7_O zX3vwtVO|0gCU}2h<8x_b1~!Pba_Qn~pCg#|lMOi%epS zo-QSmkuz*uaX3E)NI5tM!={bL6(g_@V3Tph;Wy=qE1sCTskj11h@$cTDz12c)@H>O zg+gKW6{QS89dg7K-HSkfPSn7OaS%pDMR`kbANzN_8*G+58fJ-# zmW(Brz1uswK8bgaiM-aWB#b=Pw)6p(8!eoo$^_~Z?AM6h8{v*MFgoYuqh zjl?Ir6S2!T9-lzIwhW$Q`he$Qe58F7@LboiS@3w%9#nZpsL1g;Vz?T%T#w`h=28#F zk0X|kST*9!#B#5diFq9V09#c@GgnSijXd!p&zEm3q;`p>E`gEabQBD*nK8`e%f)n{ z8oU)UR~qJkn&yrBLW6e@9XV`<=I(e6bg)EM>crUNkU^=!`U`O8?2`u}KE~OL zQU5foqdpcMmQZJbHRC++Lv3TyS#7-4Aa>LYgUw+j$7~tC*>NWVVVk?~tI$u9f$GUX z>2%qQVmE=+rGFvq2e)#(Sn_qO1L~SbBUcIbiIIy+!7sf37c{h*eXf)Byf_a<{T*F7 zEMz5bOUyf0@CpC#r_Hu3-1dlT>|inVPx2^k2>FvAiI3K%qM5Y&JyiLxXZumb~vAO-}D ziiipt$U?vXfk`66Fo23HsCe8!#T5~ELLdZ@{irO8EQ&n_5fxd5{P*)z^>oc-((%0S z_kY)a{nz2r%uILnUC&-mEnS6&K!_9xEQ5znSZ8uj6go>qUqQp>pZ50MDEc-@&~>@A z4`QZ{iO;?vNp86T{lpmhaT;IZ=!<@Lywc_+7e{(ye;+Tl%RYhInkN!%<{iW2-WC=( z7a2HS`#S(2F@l6q7&UX0EMla-=r!4LyVMP}?P5ui*M5%zl>}c%);xWaytcu7nL5C} zkyxaSomM>9a04^3v`Mmj02X8+KaZtOQSkCrFZvfmJL-8Cc(dL`%#G6jk-;$;X*kvL0( zvWL*}BhHDjT%0db+P;hs_Vfj3)| zd5j!W@hr_d3ijRwYZ4vBH_}D#D5MbR$MAVdzP6)VQx4T8LBI56C56ZqLlf|(W8_W8 z^r&BC`T!3}B@aP-ON;T^dX1y)aUCVRp)c+gkm2GJ^$v;iwrz*onr{-FSy&QD4o2qU z9ReTAjK}vxZ|vXqaEbWh9gdQ<%m&t1Z`CsM`T^y-|AwG&RKd4|%=~){RZ*m(EX2v(e!czo ze;Xrzva50+x@Z9_g>=_{&H9_Gt~D=4~O_(Ci`A&*=#^Fx9z--MIyu$ zyi+WTAlvCJN#My)ww*U!b!&UP0p+!yyHjXe5F%Qw7fsvwykp&H7n*2q2cwbg^bxl6 z1mB?qK-doU^A6Y!BG>8rqh9ToeJV$l*Y6{@aY!1w)-BK@N=y`}VN#4ew$Uj^A6 zG9pSV_?-!SadKgN;q-)V#nTo20mN<6J0dc*ZT|sfdiF}R+5^!ytRsJPlx`st4$~hN zTbbqdV`@=98ffbJlWIh~U%|E?i1&~nqJr!?jHd=N+Z=C3V)h`N*yKUV*6lfA&F}(Z z&1Y|UMcpp&POE?mpku=Je@AG__GU)i7CYX+f&Jf3_D`8_&6KSyv2LigCe(Whl#;S7 z=F2W*4t;l>3f~aE%u_2M5J`GxRL_K5>d~5(M z0OwRfK%|Rq4KS!j0J}~$EIpOK_-q9annP0>6;ob7YVv@hbJ!MV8sxD)+x(S^8(je` z4Y_DCJujw%z!P`O#8R_M&*K*;0?9-?{HO@`=^r)X9RHAYa2twFMkYELS$M01dqT(x zD4&o`4RxJP97m7<7)t_(+;x%zWJ1SXy&kSF*lA{D50k$D z5F-NY#5C=RDl~xE96s#t1P1VmN%8jti)(oUgo*M{v+df>1a5e?jljDo;O&UrB6^bW zH>B}v=G5|J!;cHf13f>V?Z*iMNQ9VJe#CHpkR1>k>WbI5P8U5x#5#5)ZUAZg#AjP~ zpBb~zDh9=@%yEi+gIy_bJxL6nvge5r^w+Oe6@Ym=yx+IOlvxe7NJR=;pbCphPTNSd zn*U1}BIfL?s|lNWP6}GNAbVOltUzmLTZ%?@wYLW zVLgoYyor{#iiAew@jkDbe_}8(v02xsyt7KTf_LHtOWW4WbTC&8;y)mhcuo9lLr~aD z_zuBN7Fpc*7DTAe)^WV4n5+=Rd@(k>VxGF1=M7S^x1oPA`UXmqNkqWr@gJRE#(jO{ zIO1#_Di+=!KOu*!HJ@@6Urpxjv)|E>7(hC7`641rc0dwCJ0P|_W(NcfGn*oH{!>RF zYNGRB&MM-8c<%f|O4RvpkK0D)Uv}JK-)iT-`W7yM&VSxOboS$M7cE6*5|Z;|Z|nha zHwkx_nN&v33%vt7r7Un+D%`!R)vnUm{c?o{=4QI10oq z+)3ZTCBUpdk=1SQ++H?1rydi}LLnk~{I*TqjZRJzMfcq3M1nsW_Atl$9_mwfOVQE5 z@!Ho6H(QF(@xJ1AbwllMEJ^a(^Asqh(Yc*3yJ{wnUj%itUt3H-D5fTlkMYHjMrXQl zF{IJCMmnG_~?{~)|FO+$W(WbRmk5l^2!`H5^N8NcZtWm~Dr zcg^^YSd&E0P`d)_N~FexyAQs$H`FKJK!>@}qr{x_jUl1F;s3_;4Lr^fntUT+nDC7% z+J6W}g-`(BNaN|d;^AnWD9(wxhd8}$|GJqy!AXN$E$FUisM8z!17Agt9>bB88IrYB z(DIfIX`+|rrNb1n6E)AIL~pluQQGB8i|0LIa;cbSC~lKWWlNWuFN(mW93@w9iAiW% z&=aOH!>18K$#eO~E&QXo=KC~(-XGB18}?JLXyKk8(pD1fTr7M_@I(Mu|+#s76&#?5%CyJuV6q{2qq^+^Ior|{NX6>%R{g< zcITY|Y0!(5-Zbo`3ioq)8`68FnJ!=K!ssRu^q#4H>jFh(si7+CZV(T(aLbx1#xf@j z6)O7xZ2_q)Q&m|zUiw1$f|vBw4`mVCSYL-I`C)xs!&fmf4)HFdt4PeVaf`xUJOUdO zH8RoLHby)gPs+YiJdC@fr&Ot@!$SyuB#anS?XvWh!0y~= zIhM>32mFNILQ7?C+uJNxVEvhakrx+g}u)30OU;G3}pPD@&+n3&jlzzs>PGn zzF60F#9$!nn2^Y2e1#ZaO4Nbz7%F0%iqKl~VlyZ{55{=;NKP0a zy6DW$Jh8nF7S*4k-#%OKn&xC|t_~Ag#t%t*5(p%O)6Iks1c4BO);^fN652>X^Kwfo zf^=;GdZ9icp0-_=A$`_5iuC0R^$}sNiXen+NsoJi>T~f46aMuy)*2YEKgWpda6XTBvzSJn9w1a7+D%&3P*xRyzvt_XRsSgV%{W1Rr|kjr&*5!j-8BZ1nL~hwci{?+E7c3BJ zC@-nqQ(dNuM0^mH12+5kZpa<*C8oB zsDn0b7t2jPi3QwmHM9-0}jL z#C(XOcsnPTau+;WM4Gb6Q9MmtME<@JZyu0W`|Q(ClQ|$yOD`slWiLj)d0^)AmtrM8 zCs=T_Yzkb+L#Y>Ydw+63M+t8xhI`{VC8pjC_wf7Rw$Z~EyIFCnn}{qc9%(P8_uGmR zJiXtH1I@^Ik?I<~{ImTSgHzodWF4}nkL;G5js}i6#!$G`=fhYjS|bo}Z;jqZF4>Vc z1^WfwOF<&JIKpdR&WJ;th$9$n=C!0a{~Zl68y~uY)DF@=3c=*N^p8fhPUtY+35eP(7D=CXj+azqiPK(wWE0%_mURO;-BB1LD&r|h}d ze^~QC;})UYc}CG$D(UR`zCvf_5L1(Xuo|QCw8Zh+#{htI1`>qMlqF^D*^J<%79>qK zp_(gDO2j^kp$u||EHz@&lCn0ma3K(}(>){*QkSx%>>9oZ>eTtk3yq8Z;Q7fYiI6Jh zHFiFMK#Y^9)WOzplvMdNU$0#@5-XMBbjKJZCywLwfl|1M z)cRo%h4OLV6pY15u7~guD0mlOG=)tBbfSs=(f9rQO?)TX=pXe)*U+b=Pxm|yOIk;R zmEr7%*ZVukbb`;UMdXImrMb8nmj@5EM4Z#s8$RJ15|7AsGZCt39xa}}K(<=4*Ss0~OB9^{_;50*9bH*mc6y}d*P0tq!D&q2oqq)EWIO;UP=qtNPV5ENjous+s;vU0m|T6n z9LD5QgG}xw&fG#w?mE60Vse)m7eh?WE)k^3?VAsidqy?6aQ2puz0PXBZ!2O|?v2pc z&yi9ubd8Q$g&UZ5c?1$t)_+i*T{Nf;XCPIgKF~2T>F}q9X6lmBr0-hXC2#lao zujb}N^ex&BN`Y-**gl=`JYY3;v9A@bcf)nfmmNd*Y+fiAa1N3nRig2rlSG9HHS(Tg9rl1$=DC86=;6-y8GV0~V618~MIv+TQ# zry-^y4g|asjz(yZKZwELoVa3at5o5nOjW;$M1W@tXm&;{p7M#;0c$1~$3HQ~;B8uj zbSFHTEgD^)d}k9xI`x|p@gMO5J?49VjNx)#0ee?J&-W_kBI=1M23Vz zkT&Lx&;s~S)agb+@Odv%UCbR67f&)p%bkc%`bXdS^*{QKmYWB*jU#z*kIK_Ok{LZi z%BS+yWd%OfTg1=S@=T!nR*F|`0>f0&to+|m7r;X~8V%~)9j?d{D&n($7$qa*j9kS= z=TOx?`>6A@;J~_PaN^fMkTl1YXLT2GQizVmm4Az`J5Ih~KzZ${00%{TV^MyPbSXjxO&lG%3_j zBmGLN20T#WL}q>)6+?d`RvjCB**A6fJbUTaMwxb`qOEGPl$qE z#bOsBrm`FJGMUzMpod~;By9V@`8J1V_Yp+G3CNkT9xY4r_C+K{^whiqAWmwlyf?=Y zrwB6`t@7T6NVC^5|5x^X1YYkX$RQVU^F53W0e*0}zoI+7Hj7CYh|MBSVkTkVDfEK6 zUCX^7N6B?4MH?cMb7FpapH904FXSJtea8Y-xz9$VA4(eukCndRjBhF`FuG{@P z3TwWutEl#5+C-s1C)Jfedz5!0mzlge(DZv#43j#+&9+I#MwHe(*be<)5N5k{F;A z5u&~u)%u{3^s-~3K4ajYeEgFCpi0_4SWn|B4NV4WG{~ae&2@VTZ0%_!VG5ToIZ8dW zmcp%`pXOL)8*oirM9;{4oGd*7X6ME!WqCIJtG`ZHSJbLHguWyN*BUfASFOL7+aN;!{(1bV)NuDu)cI=t=r;UmJ&_ZagF9oOQ%D_t69W^8 z(D%0#o8dVvj(V~!egyf7tt1JtA8r0BJgIr?^KlXJf5F$GkiLHcnaPk{BxHtw94H`f zx}BU~Qh5>Smej7iYCm-)E9v>_o|AE)GC?XETDEblyJe((SIM8oM zA`ran_XDj~@z`d$nT3idqJajD@k}bl=!vg>TPXaAh&-~Z=zb+3EKcMaslOH5mma59 zjbbv=Kgy4Mv@n|6f<@HF@Y(Lck{1)47I5NX;%_E+v;yul!GD@<1>Qq|_Y4Q#_-zyX zk!wxL#rg!Me2yjfp5K}BY96#P#9|YaKX^0%Zkx>D>4;4@?>n##!QPRRAnv|+VZOaxUG`G z1?5W^oMNMW5`))9dHFFG%SYIv(xhC1KefsP_bT9hOz@VL;Nt}N3+Ka#<>O5zcy|T- zps_5#YyYr_#8MmO4F&jZLDnJ_`u&>$aQiczOqrK3I9tmo2CvP|-~5fm(w$f18487e zkwW)x4S?G^F}RR>9#RRu2;LS|%!!xYJk}SZ7 zg#+(Y6#%!dxyBUBN@I14H`c@8wTWdfW&A$dnX_Ri-)d5Be?S4h)dcTk2|h!BFAoPk zSpmOV0Y8KFmXtXmbF%4zE(#g? zT)Oi%-U7s(RzY{N>COmo=LqZ7cxD9MIY(B}UJEghVE@6f{9Y(P^O06^WQS zD%AMvU+fiyAUz(0B`h~i{gWjW25OA4Q96z;AGP-Kt$i4_Q zPSNhDoK?GNj&~{_q|{h7djp zIzAw1{kM`30BA`nLEjm;7b5#JQ$afQDY%;+o_?GGR=fO>m~szKEWovFGD{(MXoTPb&LBl!t zEP#H`QC≪g*mQi5DPwX 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

JN6lw0NZ%SJiMzRCRhXUtN;RB}P%eHM?R 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

N8 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

=|>4?_0 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

aWvIr%9UxQg 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

?cpN997sV($cH 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

S24Cxa~i~8fyj`%H4X;sKtAyex|)gNRaeU- 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�i23^eS1bo6R4g_> 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

Nzz%5qq<wgoF6sV3^0mm9X_O|HBo&9wJm z3BPle26UfhgQFacUP|SeauSAL>O#qP@rQf*&`ncDfeX*H)zOX`7L{GYj`qnb;whIo z#^#ET3Zh6YDZ#fSq|V?2DfUXy>ptl)Z`f)&R?P;*(lTorm3%@3OvV+;^ng!ToF|;e z)Z^6TTzQ1|ILjwS6%ZRPmOnm7md$3r8bCb6i#1|aBlnEXJRztIzKFIsF({plR!hJ5 z#G*U0>&LW{R6Z^TsS(knr!WKa3C%I556VO{&Y(`>0|Co}K?2)Dn{W~ZxE+~5u}og{_4!N=Lo zeP4|%N?-dDi(-*$!L!e>)rwKseEd+>HPMCC;eYgiE5qe~`nk%d5A!t(JQOh-?SL-VSG=Ah?`d?pR3W=#DQ;Vkq#1r7aM;- zhjaPSD(7jG$_Ln0hhY=AI3Vxz^t=6CqX16F#_2*GEU}F)&?L37DdJE&y{uz&$cy!M zzEG1~yzY~92=;{(cysEjIkxa0_^1(@GSVu(L)ZU9 zqgEuA&w9Zq1pazO8(*x^(psRZPLA*Vbej&~wz$+K8cld__Vdg#pvdZU1B4SB^rjAD zpz%^KH~Au*rhAYAO_(IcoV=lfhtm`5WKG%XGB0@z$E$1ygwcEzD|)%75KR*CjBp0F zZaNO`9j8U)XTi;`@RIQ!5|L0CY8Tt*;kZ*5{&r=k8oNS>_r3eoV_?!|*LW;0w^{vU zDWZ-_39CC7C=%DrVR;$Q9@l#5`wI&qbh#pMxvkuD58*blGOc)>m%znw+Yd*#!+sg4 zoTp>pYaaL2Ih*pRo-%|1KP#d2uJ6x;$=;bD)1m;$hKx-F(P2* zXQLUG@*^1ia}m*%H+pK=*_Wq`NZ}PsPkxrN-Qi$oSvzRje4o}~Zm~{!)H(L?+ zWBy#n(|{?s3|%j8k=~qM(c?+l9gBuy^{WN0w4?(4N@2J`h?ZBGPsx}El^HP9?nVNAsqI#Z{wj0}6y)%9dhxuXGvO;;LGF#}xbsbFGf z2`O8HpnWZ%n`*>Z2wXs&PY3mM;qqWQwMNW$3e#%O)UqqosgnxFbh;K1zUlQE2wSIk znp~zWp4H^ylxk52+68)p4&t)>K?iU}+vz!7PH--V>HxPAF7>=7nRqR&I>dQ1C+R@h z55823iBO?OzEG1D%VRk4TLai%TISXO-K7yx1@6`%;&uP_rJyp=Z5L|9;vuiC6&K3s zeoOQqKP#Z<>f6yL+9!l|f7#1L>{)7g#S^r<(NXUXNKx#x)~g;@4oeDX8=0Be`XfBlFk5((}6u1}jSwae`9en=FV zO!cE5vZZ#J&VJ9Q5OY>s2uhFmrQOk1+Uk!dTO!`=p#(u2}bdWP#z0Uyh zh;{W(G&-Ak*ZGhMvB#~C>EU5o_fwrlG3e~nLbBPclgY040=Ks~GM%$*M4)6_0@6j=kRE}6z`&_TthQ;VJ ztEGqm=v8{i9)td@1H~}3^$Sg=JU}>E2e{*aFAb;|k52hgqf^dk{-(pcQR!zo*f%hp z{gpaP(AOq%By>|@+ zQRvYh^qSprH{i0nd|V5Q;plch>NMLU(wnrHJt$q~CrvtMT-s*<#rwWX3-Y4Uia%>~ ziszrBMZ7WUMLOIW050>3)5D1`G)`A0TW;D#mHtm+x4M`wC3p9t@BA$-CHq$;t&3KH zI+b`;|j76Q1DsFotvoZ-;T5*1GK~Az6vK zery=SX}52Mk(9=}{i-3^i57f(7{hMHUyMp|#`S%xg=8mNy?Dqs$4C^ddSLYst!QHp zhT+`4*IOe*0XOn|7{P7n_m0AXDeL?uBq!PC^I;rr_>YAVl-A#{W=Li}7jRw})9(jX zSt~>-k1FL?w*eoIzYqG|z)gBwI)G)@R&#Mviw?hAkBLTqt{$_S`)7JkY3Nhd(PnEm zaXls*_iK6-uT=Ks_3LU?OZ3<M@f@@DuxL)_=`qJ!e6EKTKhd(DHgDk} zPSRtxZ}?9L=y-+Q*4HXm{lU|tQiLby+(4@d4exS2!ma;1J;d$4Wkan#x5fY2h$G9l zjUYGT*hX5_3>~kBl$QOup5bfLJsWE?@VDmMO(eG+uQpy)Q|9?lpe1Ka4B3{iGveHl zFZDZve$k#gO{m?X&ojYFoBqbc5v_XKCWh=~yFSf?doBAT6GgV|oi{aPVdJuO-)CYu z?R)Lb3~EFRw@j$h#&0wclvcjd=7uapJKw{E+AaOoP}phfTWn#-LT&Bmje#WE`=(nO zw4wPOV8Xb~KV|~C)o(Dtpw(^n#SjLvzB2^o2EN)vLk0{MOrX;KpEhxP9$?!^hHU&k z;5;+U^#b4cIm(75cMiYHR=(U6iu40#n+fa)J~6_=6YQ|HNxkg~jx*wlFL>KX63!sL zjVTZ54GuFBJa_Q2kt6-Vc6Fv)d=B9TBhB#$%TG2b5-wpkBkcHu%Zv=gDJ)rU%0+mE zP9uzlaFr3{M)->n z7+((Ixveo0cUIfPYFt^gwef!%uiT4Rz()}88pU(m1X!LMoxXCyr{7t+>z506({hWf zY@Fu1EX|sq=(*W{K*TU zMB!7mPKD(s{mMb1B*nLc@}z&+u`w)1pO3jClx~Ul%017(+eMUStvoc$xsHn%Ff@1W#YQa zOGcx?oL@%cuw$IPV_1I7xG9vOxX(>?3RC5Cp~r<%{ciM!QMj%vo!vCLt4q<%F3aTV zQndaQK+ay zd9H5LmazP!t2=xQBssqtH!Vz`TU?7*sgB< z8DaTJ|7CA*IC?Bp@u(}cjzK9ig{wO$lnvkVWhjAN-SnNqGGteGW+=mTb)Sz$gE`Z8 z3Cj$s*pZzbN@51Jg{e_o-P};3&(%E_O7*+C=Jv4so4pm;vq7xX?t$`+>JS)Y$(at# zXaCmoyb8L^dR!3-Nipv`gX9}Npe>g`v zy$${lny2UW7K9U}+k1H|Ea~_5=nT!;aeUW?(}X)%t}9fPPE&l}t>H}J{8sA@ z&D8dO3&uclMtbj!i7OsBH+%HF?P3-V@IT>nxSXyzp$gdrUKCDYANWH!#dU(+J)yaQ z2a_%tmBdbNiCsfgF~tg}D30)naHh`_?yy^E#(r0L>1bqk*f(x>$H{5;vxo^QVj|6R zX(nF?(qkYQd|@oA_`)ss2<1s%xZfx&9{W8V&Jn(F!k(eI$%$?_N%4g*hBJjPtlKLz zOX&*_4QF}2@bz$_^o3LR4$agz-MufI>-fSAdP7wT*Dybvx-0Y8`nF?Px z63(%G;p<}{IlizX9h#|7DEpD8#!MByaJRlt&2T)og)`U}u9gW^!oDyYPH}zV?W6Kw z(r>b%`9T>wy1C&jraTr-QG8*e6`G~b7hV|7_4~p#`$H8gOD^3#a5lvlPDYv~Z5}g`bAA zJYP6tZfKU$7hXOVmTb@4%nQ}%_`*ZOX~Gx26wYycVKg6_qv8vX4QC2p_+~iA_JuQs zLbH_q&7KzDJSMJq;Oz=yQOi`}3-1Z1!|`lh3{}X!a3q|rXEAH^eQHatXc2~mniHY(hqmYD0q-wY(+a>ml!cu(VwWCmlQ(S&Qc&^ebrbnT9 zZt=EJn9?t9vM@Yf-yretqmUiX_~R%%;VC*7h3D+}#!E-xDb8`(k#Lp5JMJ|K$##$T zjfLfm6_fjf=PRA5cevbHItqpFYH<=nWdd;Cy(c#lbr4;2Bo_S$1F=l76^f-rtD!p8H( zj>rD5v~>z~Km1SCAqL3e1OG=)+bQp>{N#V7Q0m+Bp#Ot`?%R>OblunS(Em!C{W=;B z{vR19)Zum9{6AADi*Mo~|04^fzSGB~uZn{fu_#)F`yxa$abLqv|G!%7;?Ep9mWK;5 z#wqq!|GyQ<;%PbT|I;F==dv;BaePi*gl9r;<9Z=m(v2@GZkca%_*hIEt4jL?ocO=j ziAJ#Q5&u(5Wsx5HKh-LgE^(x9yr`T7J;)FEy<69?)uCwk%ulQ4+#1sS_iK}8~Q zmi5e&yfi|}$BL^bd%~tlF-H$50_8d7lxW5&9zDyqCWvq;$0<^r(jB5(6@j9}9w*T{ zr+P|Cxq-n-*I=%{Lc1$s+z{BGThxjx7Ru#rM1Z906)%6Jy?Zr}@v#toRMaKJF?MUsxYJcV9>Xpw9{p7-))Y3m zOm`W$Gm9luUS6GB;|#sF_G-S88_thVuYq7^hg%7_8PKdV^=c4)dC_pBp6*p}DQiy` zMrf%V&l0`<1g4}QTkI{$nhV+z$>;0f#};O2U$B5h>@?^6V}F~S)gexa9Igi{um zB(HvvCryi||3kG{v9bbu&;W9D8$l@kBbeI0uh9-wK6J5%3axaxBC*TbmM?RO$5iCq z#ip+2)>g{uVK#&AGGk8iO)vGdBU;E5L}nBPK>I4d?1GSCIiN&qUFIc_a$5azPlhg~ zf=iFflvRX%Wh-6E3}S1>O|?>dq+IC=Pl0on%(yE(S+3k#m|jW`59Ts$Io#9Jp<;ZM z`7i{^WY6i^98XV=xwzfgijL1kCtamYExS27+=Z3I4)~@EI=h|iPE|TD+UaUXx02X# zTy&O;`ckvYZXUF7*ToMmK}qhxyI$jHw?_r3y_`pPvv|m*K*Jsy!h~xBI>gAr{}gAs z9HB(R_}*p6@kwki;kMB!XRdQH;KWf6xWxtRG?9p%1~p>S>(w+0u#XGaX_685k-cL1 z#3gZ#TFTxxETvxO6iGVw>s(L+z=QH#-yZ|ui-qgDL}jMAH~N0tU4EJFbj2b9hX`%t zB>C-4G6@<8hlni}x}cEucf@6M?4mne`DRH(B^VZ*;~mM6mCYeedw=&J-#hZHBgP#L zxdpg@_oZ88%K6n?W}Zm8@K(oA&g?q(mtvpTxSm{cfo&^)<})8)y15=9>zsuF#fyn{xhQR{cp+OdjeBP5Zm`L=X29RmS-)G1PQ^0v1R?1@?jqe>1`p(e+Qs46qBx1UK z>HNY)Hh6p_=BbO&QFp(au>wggb0z59sp!U3Ys0;O^r8tB*V)l#57?T$#J*b830Uo~ zP|+Nwn55CwE&(2l>!BZB<)41__PVEqYw);cW9S1H+7!y+ISxqGQAt=hqf16*!Og!G zAR+XeZOFI>{l)^2xlaxtT(T0{%>c1EhiEV-#L|@kOuP=M^Cc4o>z8@RZ={=!GmHSN zCEGlR>yYR=M~d-sW{{S8Sd#Mg?aF64zwNOjk4F=aND5}WIXc<-WsgK> zrVDTlk4i>2XJ#n6w=FQJOEPfGeQPp@f%XVsr<^zM8$_J~hBy}g^B@JaYt%ji~lp4R)E zQ~|%lm-ul(-RsCiF*Nn_6-{eBFL^>X#X_lBH0Tqy@KOfd;>g-D79Dg7@n=WcgX?Ot z=@Cah^#xUJYgtUu5BCYvePw#lCxIto;hY!Mw1|;s(H%a~Zs@=07oSKNMNKdHQ;yJq zK8ZAv?)OPsyJj&!b6!?c<2G`9U%1^Tn^CNm=x3j(Jy*cwn3`Tu({_oMK!^B*-rJ!^ zd;mYr)bt3g`l{41wOYcJi^YOdm?I8=Y1_0?Izyi*0)DaWuLV5 zbjBOMsj8XX-AuhciRg0ZT%QbI=RWrdn8Za%4R5L1L~}aMCz@TzEuzP3M8bcp`L>$4 z9c^?lou85`q)Q`ogoEJ%ax~P5b+ZdYKEkT+sEMZ+`{b3A1CHED2uKc!?{y$i$}+#5 zyJpR#$?r;KP9irq0blRHYQk=~S6cNwQ$his>cHYXeDl6)a(4-bK>2;OeV~fv8kQr= z<`&TS58X_hf}dCik4OVLK>FdUb(r+_g^x4}ZERYuRIZ5kc(;z!@4&OmR+iTI*r-Q* zy#CI?MW@4B`P=e;Kar^_#g@WAK35(T9tis(rGC&2eg^e64Q;<+2<7{g(m0uamu| z1{J;33SR{h$&M-$l-qsPtwFKufR_F`phnd8Qcx=Tmz#r9yNg-kn;I23!xR)c9nFbB z!0Br~3j%g`v*)(~?V`u|dr&GnosWZZ+3zI23uy6r13D;(Ila%LK>&`MHu*lFiT(Sc zpwMygKL-JJ+EafBsIdL^F+nk0_gg`k<3y+kkE&G<05j|%S&ZDw*I9YwSlBIe6I_8evf@Qt+%w2PFNzuMOQ5Ii}I2gM%whe zi-?R|`3}oCie!qIli~sw5h+~xisO7Kpx@pxla^r~wj1BaA3&3FeEF=pT<8d8zUne< zJH+axS@G`6I!3T@qmZ8kxjce95A%6+2vghIe6ytAE$5*;D+NxMD>9K{V%;=^aqlP< zGh{9A@g>IhFSz&vwRoq62@j@FtFE9XWo1#8Uey`043%1IQK$!m|bfe07P& zuk7WhsutyNt^#7U%qlFPu2nofI;yfYtI)E@%Fq#td|EZ1??~f<<}FwC$T|KzG^hxw zLUNlT;kfu>U6RK_a_rE#nx}&Cj!H>EuToGuL3eR>_cVM5`Bp)ML`l`Xx~EfM?q%+0 zDTq%WvZePFP$cu)GHne{E2?^-C~tBtAQ=dc`f%(_Yr zSetLl^@&1!UXf$X0^{~}e5OwiSai#8y%a4dL~b>J=qp9uj6D?l_dqIIj3z0><>4shsG$ya?Pgj6`wM-+l;YMB>hMYo;&|(GQ zRxWa)2NWstV6$2ac9~%2J7q+g65H5Q3+r17*;)PKvG!L0q~}pR53dv*^rfG|$-2?I zQ+B+k6G>YN3v#7mfiK$=cVhBYd`tY!N8zMR6}<31ESr>D7SV_w$C~R9F2`-lVQzDc z0x5EQWi1UXpe;7>6wApJKHZ$GNb!{Rv#XD?%BEhjY58h-kS&@buDmbP-U`S?DSeul z_AR@am$1_s;O2-)BA(!CKOkNTPal8w%l}ZdO1RLozsOj23!kzUtQp$MW^U;NL?V0l z>>?UB!NXu(GwzKp=B;-Aj5er1qQXj$R+#9enQARSD92WOcqvp$#XPM($-^d0;&R~O z&BQu&M444MV&VS~2$YeX)7d*+J-zATJPwgV0T=!KR;JW+nhW_8(x)yU#w(6a(Ra?+ z+R>*Z6396~9O{Hg!Z$njAAYQZJpa7?Hky>&D%eFI1yJ+&PN)5z3oG_G;FLOJTH9n7 z4*MhdI?gpro!XA;B z_+ZSV-`iaXnXABNkwBWHGyFZqMMM%;{yF51eN~L&5k&T$Z@>y)YU}UitpQ*m&5qLb1ds8KbYYuydmiUj&XFjcb)k z#Zo`5m>flCwuCJ!G}AysxzKwC%q(WzGn|$T>7qo z#~U0J+IA^pc5Przwer|o_zyFQJ1X>l^qrZ~$@>j$MOLFRx7I=#b+joXmaiW*^SZ?6 zrS-QpD-ze(_UG_!FEq34<3V4U32u)*eLG`TLdmR>OTE`XbzgA0(ruN7u##RWmT2>^=>|o5z-XnIVnb4VDXmdU`aB}6Q{P18JS@AYLYWlrC zua0854*$!EcYKP0G!q>>kGAUg|LA=K3-dT^;$rT^x(aV%*>OjGo+?q!w=Nw6m3M21 zZDPGUjjmVRhj@dL$nDm)R2r~qlS!vX6%W-v2BOIPb|bMPH*EPbUp&Q>xknY5KQjg* zXU@s!{pQiN3QKpKY9iWg-)HNYV$pks<_Svx4v@x-T5jT#FE3BA1 z-K5vPh?_l_G{mZ))zHhoCP6p1iCt!lISYHBbIF(!h{s*Fb*%cu6Q60Mv$Z^ESm?Ua z^>#L?b|}7=bmM30;+*!lC9qP@mKl%;v&Sh&K_RsS%C?1iBNMke2w=PReX#y}OhuhVJD-P0*D zzuri6U#A>&oZV$oX%l>gemf?zF!c}JW6>*&z12vyUysj(wP&03s$^k8aZFTULdzVJ zRvd=#<$w0*Op*B)qw_@0i+hYY=gV?fAbi6!V<5`vyv?qo>l8*FG6tfsa+BRm8mHj< zeP+;CM2p8n76v>wCaN&u(LGEiwD#NC3)+QynrNNr!hkGL!8~{`6O#{iC@OpRHW7J= zhUeeD$G>fibWs57^o~upu=u}bvgn-!Y3d*K8pZca+9It-u~$NN@H`MM*i*QZM%6y=J~CJZ-?7T*WszUIgUn^Y$6NB8Mzz`xlLcMn8aUc;}hj>5Rw7KDYUYruswGT!iawV8mlFJN(^TM@aw-aZ+Za$ngj0q60 zC{a@(oR}H3GV^%4B-r29_b6+3H|4*$JT_@azmM~iS)^ydZPIb`fFHq^c_ zoL3ySP|_GFE(+&ieRqh?7zrm~37n(Ih}t-ApK$JQaTrsiGVMMJ4@=D8(c1=^SPNe5 zPo}&uA;pmsXDuhkJZ1k28kuhSm>zd|So-FssAa|WHRa09+}(6@w2{U=CJ$>S+G|Mf z7>V8*k{AW;xY(4jM|7Y0Y$kipyhm&=;{&a|pF`yp{}AG_Ow<$$9~&v<()hq=4+ey_ z9~sCh)h>W(`;Sen`)vO(B=D(r*~=baQtw+&5k_YXT!m@de20NJVUj{ss^G>4>Wxs? zUVU9`AmglqyIdyBecnKHXtu4B57OtYs&h;0SOeKr=`uesFegk>m&$~lEeGo@@QAjh ze>L#@DqRbHHqaHdE_aVZV1m~kbk*3IN7DT+*Wd?S<~E1wA8f)ThawyK;Rd2Zv!DMp z14~usKGF7v>GO6~y3ErIOjK5H-9Wsk&kanMXWO~U;rgt73f=54F|a+QE_K->Op4vb zCzqQwa3#}gPInlH6DC>iG}G0(!I63k9IB^wp@9jt&b(Qa=@SN?WZ5OU#Zmff6=kl8 z2OGGKLYMfefymnnth}7t3ma2M>$7)xwv{IsXg-B*_MaKpo>G^(%Q5==QSp^IwlMXg zF;QL3%O0!O?CG^1?T@4LT%ETYxDzHh({W+xTF2?Lwn=uja}69%m7D7W2C7u&@-{wR zpRK1-E|rXoN)*%dCyg|BVb;yN?gV|_lIb;`BbXTOj=eQF`qE_^9J0dQ`$WA7A}9_% zsVhU2TMSfBoBfj3JZUT{-9o4s=!#mG`;>t@VUn_BBWlw&C+m%HdA6;G8fZR+ZuV~* z*q&0Cy3;B8{C$dL%{qH5Tv55cWoCFi@YXgdd#b}W)B}b47<09QRgWY)=ShFoQ$3d9re1e(bzQF(OnRfcClfuvn0{knOuk{IjqVx-^{B5js_ZdotB!2yN$vi$b zuB*HL9Or56J%_pjD7vTPWeKiof7OVNJ9e#?gQ2?=LSIWOtnV-YVS8|$z2EzgG4bX8WSV@zShe%+cbxA-M!es-O!F@sYs#()f+~GJCORLN z!R~4Pr+s#-Z2!AlG}fH3%hL|!vD`n#nqUr>n-A5QeG=kNY(V)pu_{=q6YH z>U?Ddxcb+mRA1wc*Ninw>|4d5Fx$`@#+-_Mi%4U;mT#^dOLp*mC|HpU$1EPXZj5R8 zFokX3{nw8%iTY4eZWv=CzYm*u<5-g6TO}I0a!$ssHf4HkOvy!mvF=S{$!WqQc!-Iz z%h>nVBnkEdE8YAn@)KRbfxjjNoS6N#;sx_Et}v0nL)PIGwJ?T|*y;Fd+1d^L;l z=v@GCb40F^?yH;Bhf_S|I{Vz-*12MxIP_McFP+5vv{{^Dyyr$*w@pbW%%5KLJ;2tr z&qRA6kr03C^i-?1Yb>azq)r^Ay&!hpSvo&} z7lw#Z2Pwi{)RQ^be1rI2Srn-?%-_!C8>CxRqI!PyZ68qLQ?o4#aJ;37R+;H#*lVAs z<=~m=ETw9Zo;1HT92&(bx>6I(^)p6>D@_?h)cPe3ObvU2n@I~?%>=v^WyVdi-vs7RjcJ9>n(miyDN6NhpLoLtBeCPvKn2fBIvzjQ8!mgd8gXG8K8)bZQ?xaN}Y;LNGvKXMFUbVb- z;V3iMU6fe2ip|NDDhSQjl*fi3+E0UUEvAc9pr@+|HER}j!R0xCBBtVHxLA7G$I-l| zmAVz1)C0yn)KCNQNn+Yt6?0cI1uGea4jhLnX6a}J%nVm^*$QsEQDSw57Li{IBm;fQSN0npY0hcfn=P4nYBQ`TkiIf@)_Co@oF z_5+F(=QFUhS4s~t@R<5rC#pcdbxX}3lvD$($4kFLZ|$=f@H0}>Hz&$kqiwY268X0+2dI>*o#P& zhz^!gWFm~(P%&GD8R<%zvI>SWp+l74cxZ&z&dlS5zw8v=q$ZwRyq4QEJPs1?mCdIL zL+o%HE*1Mxkq`>eqV;!`qlJckt6%+(S{$T5h!h`?^XxFivY&`P^2rnn=PL?lj0Jrax1A5|nbfOntE@M9gJ$op|E0)}zX zZmx)Q4G=MCi&=fXLZw#(5{qIumlX*8tZ3QCDitvTr%m?otQ5_-SrORvOA+7|q34_5 z(M(4vQiujRtAzreHNQrY_YIU6TGlYwFDO!k!N^zxXwG@;J_NS(o}LBlluGWM%rBA{p!j&u&c*DB@gyI%6SL#XS00k@9^K zcp6-Pf#~He(eCK46b>a*uW2xQ!gsJlF@_I%lg3K>osj;5&g<(w8$~0FYpu5Rfbc`Yy$nY2q0X^U>>3Rh~Q(-Sm zFZyNk>3hE*L+htK!;mo&((e@!e&acZcmQho#p24BQiP82iw72_=UH@hjSwM?o(l-+ zn}EQcOVCDro=MUZuyblr#N379?09Yn0hfmq`9d^YI!+Nt-@xgwhuC&u{rzf{sHfK* zBp$Q;$nqICjqThVm|{Sjo&@DKOx+$epkzM zsDuqjD=11E%@dXTFhwX|MJq-}Jkz9W6wL3{S=}2()H7(!e$QYIW}lH^{Oh6v`m*OKwlMILqlOjYnjEhb1IxR&gT%C{}tw_1ADE9X@_qOB7F-W^n z!IW`#??91jF1qjc6+)RSlq@VjzsY%a;k)iId?;5Q47qnukX(^FOP=IWRuT7NCZ(T$ z<7>s)DiJgMsrmd=EO7Ap%LqLj0G)Li_Tz{rE|)4wwB%gRyk2Ey-Lj~M>J%(p#(*`; zGY)>oyJ`_$WuSu{{V7FW78B7*u_6|EI3JqlS?5PZ;>ik(itRI> z_EbPjTSQ17TeDrzVq$jUXry7fPoZS6GN7dXOo0OP&rau)!=`!f5vrB`NK!5`@QqDv zTphbZ2y~zVR#3A_m0smFT&bW~f@Kptzw(L#a^07)w@S3kkY|ycoA4w^w1S9&$wY{S zJ&`~;ztD$HxSw4O$(m2 z@Cc~ewtN>wE>GQ!u$g5=E(%Nx9ec$r_-_g(#QAx2uOiFlvZ#DKv;9DoV#QGu&MHOE z6fxZu(m14Y2pEk!-8TPAdwWR4j~t5AC4qMq4zDq_r{P(F4rz21S$LM-tx<#UCCy3m#Gw*yj66Mg;oif5fq z0Tc}t1*J=&h~9R3v1_EvVPIMPfeNZB5X&>Y>}res;?vG8DiNh9EftUPu7WvPI3=}4 zRk6@Z=e3|_g}@76Y}J4w>q}?tT7?;y+b^B25ZF!9&5EEG^+NPE&Dhh*>fTks>CG%! zet~CJFUkW8wD*|4O=-mfb z_dFI9E`sn2Rmc-jkq_3UXv0OGUD>{Y1$^MLNs-Arb9sPDIYo}CiTE-^$0$wo&C?P3pA=R;WCCD+K$dQL$9a74t|1 zD&+Fqt+4niMU1Z5u5KBxalN77cn;C$BBN#h^U170jgyII|%j0C*>lq9U zsE{%}VeDiDQ#vj=w_(Qp3WJ>z%RW$LU7`b(+aPGo{X9#du-j?Fw1Wa*Iw3O?_9=)W zK28y%$mBQjWPLnAH!DzZmR~295eG6**VoKQvTo}Kj-%-;tV>WGQLBw zo%?I#!x_3TAjWWX0n;DT$U*-~5o1KlQ`%lQGqn3UwBIrh#4_`S(!*4DfM>IGZtUg* ztgOPSeSrb;xe9r>+9y6+V@xEcs{!(B3fX&M0n%>{^o(Tdut4vBim3qtHe~n-)c^r2 zumQ$J0Y)^D3@}~{FcOiV87m&-w=+^74I1+M03})<4_Y!mK#A8k22D9XKuJX!gSI>$ zphS|fRM40e5BA#|i#8;K*6bMIBom2P(42CBgE+eN4MBtc5gKkk7dc$G68XbwQ&)SSMEIRDTrl=@Atcax( z6Jznu{c?*h_7lMRhkG{31Sxis&3?H^Ab`9dU^f{_a*9*^fJk8@clr@dVt=xK-w%i+ zHnPSMHD=i#^SAQ@B8iPyenc1+6(%3=M{LV%=oSUSbe|LPv;5mH7AaW1{E?nn;zPZY zAQ}YRBzr0dhG@Q2M`$oN;q?mGAB#FUz2XJ^_AP3lBNcJJ-@*mJ z_H|&L*$QSzH!5hkI*dyFvS(DQ0$c(Gn8R~r4V?A ziqYWh5Mf7R%dBbi0{*lc5$%wh^;Sk%|VHvKwShS}cm%CDB6!nxVY+)}jt!S@kdRfv0O)s)Y<35QTA=Q=mwB6RuFYz7t zES2Zaq_waB9~iUl9fx?TVoA;t-l{Q)tCYRVNbL6Imb&ioLAz0;9jLYzHP=91l}t2H zDGW~0xgl_4gq{e4>*<#e7()P>e1cMR{vvV9g3C@Vk22EuseB;LrOS`*7uT=~xZ|RY zcMM^F#`7AKW5SE~wDgHe2K><-Ju3DUw#aHhaTOPJ1fQ|^qD+}STZ6NK_y(wOPOssJ z#pYyOJYvM!L4=v@|aza?!dB-qNt_UbdvIL!g#MXG)ChzAGo8|ueDE{ zmfKp~Vc*KjbiBudt`6b1^7?!*!RKKH#2aXnlS2%QC#kar@8?y@X0Zgce+`%}XL31T z%fGgUQ_k_O(l)Dthw@QBt)U8s&pt$iw&#|&$thleAv%fbI=V&*6>QN^+Hx<*evW9% zE!Yxif8IF3NN}6_y?RP(!JhiEO<(INGcBX=e%qp+cvz)TT*;Zz~Gb(E~(>6Fw zYrCRswkYH7G4RCKl4Hk0jB(cg)H4yThtaR}XbWS%J6&ruQi^xpp@&=e?i5abfB_eY zFV}x-jXu`sbJMQ`k zFz#KjZ#E0X|Hz^I}D( zmpE%Jn2ByzIk)m}pMt6Q2$(KqY1y;XEO|Rxo%a}VfP6h09;6+2X)WTLr}>*FKgu70 zi4V?v1M6b^;G;PBHce;9zZDa2g9uNHuG}h>=q3DeI=V?pA;|MJ%bzX3r}hQ6PsJRh zzCNOUXsxHc93&o#`H{mNBxXe-QLDbsN=1{|WMhJ^c9BeAr|HW;aNFBp-EeVXq#oZ6 z=qE>_Jk;<0Dp}Zh(ACuvrzwtL8a|nq0@LWC17c*z>;U{%2W~^hJsbcZ0f=%!^_8Pl z`UDcS2=N7p*WN^Xkb~Fpe{&My1Paa^?BxEQS;T=S7G+!!_RJ6E%Hr$j5fG}X`NBn2 z?@e~1U2^$6J%hiom?{<}l_Nb|J$_NtI25QU6s38S&+(GB@lJN$v&0E^1%QWb!b&Jr z?7t^W;>`;a>oR;VBy-M!T(yzmE)31LmbFQoHF;9WfiEfKgkRYTW#ix^wC=gG9t$g| z0Y9NddC$8+;$-GL2|M9*p0l(6qT}pjVsuuj4p-<(2wZjrlNx%`rl1kv$ESXnul-v6 zJdrbS{xuoDl=K$bO(#UdcpH=XarqCf5mVAxydnPHNC(y6UGs9o*b+pS)ga3Ay$H}3 z*rJZNyb}H0du%_<_j0N=Vp}l%3|QNVsT;O;aG}qw!M%ZRGDT-78BOx(k(XdOkyp0X zfgGKPJ|0bl7dz3cr0M+NV@#MN#)uQ)2Zs4U%3wG(L2IcSV9K1!KS$Hit;8-etJ&y+ zps`+=M&R6L0uMFSiF|3!;@r_xC{aGmTD}=gix)r4tfcM2QJ%&PzGv2P&S*N^z>Q`d zUyi0jjn!&av&%)JJdQuEj#<(9P~>YA_BxK3OFvPA^$*Di5^}b@ryoX#FO$m#S(Ie!jI9*ffhVR*EGzOKRH8{xD0I3=PBW0_05tZgm{K17g4f7DTC z;-XDQ5uH@S7_1ECn}&wzHZ8)}i_v>pXnKWKyEJGLYip}eqZViy#%)R28fb30t+;S@ zAxFp8K!doQ@A?|)+_KR0ng$T|E_+$fthr_0N?FFT>L4XFD4u0cjTldIutv;FomM87 z7SoRFKnPY2uWr0qlU&xkGOc`h&`PDl-L?kAHYe_1GBp5?tQa}A2AR>_-ew1Y5`F9) zH3YFmlhb}s1MS?Uq+IukpsDx}jmr!<>C_qwy8;;)ssW0^j8h?po2ly><}>-sywN8S zTe)8HiSlAL`*V%L*_~}llq;b#v0FQZgE1w{ly(S;?fX&1c&|+JJhX0VZUCR5j#VVs zu7s_2l^hOPU8jge)C#HK6-90@hSD#JsAmw1=e^<+3~hOxYhYb7R>-A>nTi;DTCG{7 zKA2Haq+&Ui*H7t8MXHp?-HNywpE(9_U>!EUuZn5h^-A^`+Fbn!f1&;?Qbzq*rh}B9 zZFG+MD^GW-KZocw^=FZOQh!!xgBv_6+N!jj^0S?GQ-5V>k^0l3)6|~@xdzc~sQxU{@;7xl5#oSJ10FzSNf!t^gMb}m7q(6M*2#X zAmOS7lX%FJPlD^9cuYS$a&7 zG^Y#cEEil;ADSqV;IrD#J{;Fp6zF%ic~&*2tMCdU4I&1J66{dn!8A6UQQ0pVqEmbV zyrp>v_HeT*#KkPwQU8ihgs?9e`b8Dt0;L>w9S_mww<|V{V32?jXsb_FLa88mK@m?EIT0ZIWeXmWJ3Dn=xh;s_r8HAUDmfaov$>}o|@^$yRH7L-XDiDIg(GMFn4 z!;)PU;dHB58sM^BtP1n#0aRpu=<`)EPLe?MPgPV(7b=5k`p754(iE+Hr)SOd>fAIU z667fA6PAXm^9FO&qX=ifl7;@?1Jyj8=@(TC#UkC|lVL}5f&Q(EtiBR%^;-Ha&x{$l z63VxbriqHMb%=M3r}Mo{*fpKTVlhbg5V# zWTkib#Mp;SZ}=p|xoG!G-J=*YSk0yvqFvHNMcS4wQmgMbCZ;q`l~}{rVM@oTq8tu2 z(p5f50S8NZo9NkE;S~DbCoETK{d+yT+D0&$!BK0Uh`k4;6;XS7Fg+K3fe!Nt^XZW^ zJMznX(n6Ns{1bjz4o_i0>o-0z4hLa3`}+5J_Ox3F?U?IrPmiG5PxS%#X5G6>ZeDs` zHAe*>QYv!u>TRy#01wU@{Y3|=jr&oRki$FpL=|9*39WL!Vp6fd4H(A9RVmg$yVc(a zV#6i0NR`3WUi{c(tYAx*TPUm{t5D4`{zdTJVKHwQMb6%0QQhv`G z7{m)`S0(x0=D{4QU&$xT_RgrHlM=4~tN_wlLFbjBdjsN`*b+3zO}URB{=WfKd=tpf zy8rZyo0ZS@Ld+cr?G%uAVb$7GRtTWo)zUmzaH=XURR{VtgT5 z%w4LuoX%s3-Su7{D_Ez6hBH8`KI9qF$@``#qDZ>nE#VqbY&||{wS-j*cw^d66~hg& z6Fbi@Tfn9MfGW#nvs^ho^vMPa{2h&t6Rz>FXA%NpVVg{vlB%p&O80hQ{Ro2_>Q#X% znz(SchpN(%JdOnR&P)%W)4jq6pweaNNk!C+t^?l#=_|hsLyv`NTJI6hF3~0|+94q7 z=I81Q2w{fj%KTZ zT%W~naKtA=;Dq$RApO-REDcr>$mkwLHk(@}4-wu|gmcn4TJ~R_6+L+Gg#px7bpDeS z`EEIysr(Enb8Bnw3~N!ZJqJBk!KUQ0xn4f{jSwF6umViwRkM#&fi;Zd z3z+_8X^qD`)28AL+YgXZqLm%WH2jv-I6 zM9&5AZmc7vOCug(*~dMjuuP6=dwQ71S(6p{&WLU0KJBgw&{jkU0*pe$p-3FllOYP} z7=?rDPtld(&fn%RikW+zE1nEcL&79MYg?^#~SHe=#6Yn)tlV=41nPYJo^3LHinz6kVuCqS$Y& zMH=eqJ1r2wj@C_I&{-CVCaK+kq-dcYiPh7&1|&+47?3!9Wk4Ee;}>t(HJ2>iCA0ZCC#kD%t9Y(Qdky8%hidj=#$tG}YPEft~d3`mSD1CpTQ4M>V^)+3Ge z^p*jM(aNuCZNo;51_RPSX#>(oM{AL2eT1$zAaQ!#fHctZujy=y!so;c2tq*{kT@M~ zKpN<31JXz@>yc=bmU&%kTQotF4M+p+rbpmG4mKcBy4-*y=y?N@q9xwY+6H&9l>v#- zYy*;@{S8QpF4iN72t92;;`EaNX`n6tt+hJQNPo~H=tuu#K;m?P0ZG#11|&t_=@CRe z-}FtbZE(u%1|&%f4M-!Mt4C7kFAPY6zA_*w+W0N4ZD{qa1|&vh1CpS#4M>XqsYS4< zmHul$VzmC-I@@CP32HGQDJtp_#Cbi#fW+ut1CpRm3`hg5^N!ZGNFz1r5w!Yw1|&hJ z8juFMQ;(q4e_%jj^qY6Jw#AaPg8@m=fF6n0(}@NoMz)J%YBq><3!g zQgMnHkRJvJN&^z77Y#@QE%l+!Ha?rWjRA>Kj{!;2fd-_JF4ZGw+s_)1 zIQ?Qk8ffB2TC1b=)MY?owAg?o=^_J?q9^qT&MN+3K;pFd$6DLaf@c|!6piQ+wBWxR zkSP7jfF$S}1CpZOeWJAuEqE6L5~r#GX`sL95wzfk3`mr|Fd%W-@KddA$s|oTASs%! zM=*~6ivfw!{RSjXpBa!O{q{4hZ4HgotVb}yA2J|uI?aG!{$oH=^pPGxU%%FWw6--y zX-5MRrNR&!?AVz=D0|~lM4Zc zztfu4NIPl)Ofm=cK$K3@197@V4zMaaybg5_F*+XrRaSK#IQA0yy7EoBXJ=H-crZHUko)1qLKR z=NOPAJ#0Wy^rZo5q>X;k+J=sEh5?CD$$-S^ECZ6H2Mh?-j}1s8t@pFmHVoLO8jvUz z3`mSlHy{bR$AC1@#|EU4*8W9n8wUA18ITywH6RH(#egK~4g->+_w@+6?lovxH{y-= zNh%VL()I=kKVTHEl|bZY|=r8x#9P6rr}Bwb=a8t54V(nvq+5iER6SVn6#ra+wrBu@Jp zkR)AbKvMLC7Kx%?_}+j-X|r)U+oJU`nrT21w8(%Y={y6HqDKu#BYmw$&@YT%R%=@% zMmrmj1XT=3lKyHyQuLr6f%pI1fJA76<+Qd%V>Hcx#A(=oBJju9Yp$TR4L!#14M>~@4M>tsG9V3fn*nL0 zcl8LqBCoch);4@a-qwJ`C~H6xbesW6(oF^=MQ`d6^cX9xq_qtnn3D!1Mt?LQ2|CJv zG|+Vhq>*0JBbbOTx3bnYEMZ3tNSyXGAPG9mfHcrm1|&r<=@Ik`ORu7}4HJtx0}`WM z4G8w97?31gWAV?dJhiUCQ{xOKI*p)aX7AQ9T#fW+t!1CpRC3<%~w1_bk;-)e2cg4EUq z1oIyQ5~BkQNP;dgAW3@0fTZYW1JXzn*3(%XM_u{HXtb)zk%MiM%r1AV9#mAfJEu91|&`o8ju8i zZa^AngAKK|MH^|F9>E8tVFMDSGYv?L?lT|>`qY3l(7GFGZNq-lDS8CGOx}RR=+6cu zPInoQBzGygBz09BiiPA|1Bu2LxkOaMJK$5iDc&%-T6m4rj8Y!zs z(90ZWKw@;00ZGuC1_a*+ey6n!8)%Yx1nX6QG$1iL%77&3Is?)`uNjaOEw_o*HuM-# z0}`b@4M>a*Gaw1N%78S`O9rHomflor8|D~w1_bjT1CpSF3<%~w1|&t#84%2WHq+Ub zK)*1_fW)ZVfMEV(KrsI?ASrrEkHGu?Xh5R0#pYV85g4n(fFx)i1JXd}8;}$|rbjTx z_|||#Xp=3pwqcIZWPW9@Zn6NqlKQqO{SLTH6p2Y=!|zQptd%=qv-$ zNDt@{`1t=AkSMJ;L2Fw)PE!p?f(iztflfCdDY{3Gz{h`VK%%tvM6GR!IPGLWk~G(V zG|(vqq>=8>BUpQS-+)AEjY(SDaA0S91CpeE1JXbz7?4J~MUTM8zimKbw8~am+Zy7O zG9XFnGawCgi~(t+8}tag{~HD*N-J!wwJjB+xB*Gf-UcK|M;MS4U86_v<>3_r5~p$7 zXl-juQoR95(e7F#i7yX_7?22EVL)Q^f&od;l65-UlJ!a2+JK~Jjvj%JKLCgm@zV`- zFYi!jE|xebZEIn;T4_;&;@^ifL9P-J>I)5wuxu^Pbqt$Mu1(&VUWf>`E@h6MqG~x3 z6pk4;Jj@}0=^ygvgh|802>F|?WClABcR_@Me+HQIjFap%TZ?dWd@TnpSsy^{TSn~I z+Deq|ZNcMI2=7{+Sl5l9Hp+#%0}@1_JNM3$qooWtoFly0#m=v?u=hdy^x4G0z!3q! zj_ZwoyE5rQ0cWI_h}hZoA)2>%3ACw{WN-#Q@7$+6145s^a@l@HsKF6mJm)?#8A6~H zONar3OT$HYyz``7d4u;$5#QJ%0!_Xv1%W`{D@SeHywBb#H2Ij6dgLgFz1tmP=X#ZF zb!cdW_EjW9R%Nhg-+s|7qZeMP!1EB7aAtZ4fyJIwq;?|vCW-G9xo1x-j{Q+FFJlFX zHBh@2!3AZsP(g6NeLJqzJ5v#PY7+2Q_i2$7MjW3i2uFEuD;DQfhi!w`i|fov@qP;h zK`a$S$gor76}e|YB#!;JrzsFef1KV-wzP=an#pehc_r$k+QQ;{lmr*NKU<)qfQ#(MN;CMZT3K=w`B4OTz@XUSOabgVWJ zu6L`an+y<6JiVnrnFVl7pX`@*+tS&7DPnEoJUG+$^8-*V0^Txo zaSh~MAM&gprN%e1q7-l4|( zBB{nCdV%j8Nyd?^zrB}D5uw$FaCI;3qzF+KA}%FaiqI=vzJKa?1<70e=;bZMgQgo4 zaTQfL8Mn=PO_4)_7(}!ByAe-h+zy^8S&W9_R0n~SJFHK(nzQ35e)zCG$0ZB zz<@;QH#>TUDHg!j?_fX>FWZ15=tKjOq+5YFO-5W|WjAqgS6wgy_&2NtSB^|ZIGCYa z26u+w7G?HJ_H~V0>}11r;#C*(<@PG=9F$Ssk?_se&3Odls)_*qr$Fu)GD!q>F7b6H zR%vVT12;h6Z+h5Ct-P#HrOYwQ4!dnN6|!9m)5CD7HCKezH~AmLpTd5kfG;YKnxy82 z(Hllhf^D-W zE`g`+FfnV&^e7Xv*3kPw6_?+>)#E}ZRE56hfb1a`sWoWoJmP*o7I&mX?rxD|@*Z65} z(RxavG+iS`n2UlV=3=z3>ZFq#nOB%GjQVcYi5ut*M~rvZhAA8(sG(KRveTs*i0Ou# z1czyYBY@{f=ixGFXGc=4U|x`+x%e%Hsj+NdG!cvSTgg;^HkOUjDISuDrEtHI70+hV zR-Z+8I66FAlQ_lrjz*k_(MmIF$|i}39x+EOOq<2Au;(};_GK{6j%&ZKBi*Nn$gDgJ z`Ku%8OJ}Ddej(in0lY5ml}YC(%Zq3xFT~`nxUf9AWDVf{pwdX)F4jn$2(ry%u_arj zRq4LIQkj0|{8Zd%izD+M6ESoeXhT*CuEv|)LJ(ShJNkn%WG8Iu4|58MV2cAI)-;9-SEw(J8 zZv#-5RpDE~?6EaRnZl?8(WtNxg1_4lkE~4F?c(Lk+NN6-IA>fA)nDwPK?N*}Yl_Nr zj3N`+V~wI>b&U-5A?{_SEmxS=Lw5x@P}+u@YHhFeNdROY-(yF#4#$^7OyP3^&@{vkPFLEI3PB=!=6c)geZxBLIlo$ON)a0FiGbXIn!^-G_9-G0!tIcwCOVYqwG=#DsZzzDncdaGT3psHN5jRn3<>c& zDAS7pd@5pqv%9opC11YFZ)6X`M#GsPBI-cin$k%4fP)9&d$`Ja|vO{n=ryjgmx@y8RCz6iv4Z zm||xURDZVs%rBv^AXh3D5G!A<1>r@X5TLP_*6|(;@cinW3$A*IX8WxY4a?2e|yT%vOWXg7l8mWR-m*^@sO0J&RtI~UySRv6&QwDfL%5I8z4>g)dyb?hJ8nmTQ9b#4XFwH9Sy~E7?yM~LAk3yAAyt`;8cw3V|bm}(z zo84>8M;%c0;ZBMI?V{mvJ*^=gq9NKfLZ#Ziitg5sgIXo^M-3I@x?KN=s+Vo;-~s3e z?XZXc$vUk8elM6_aNC_%i;7YKOsCai;@T)~dBA(*osJ5?Vq}Ro&x9VjDS&d#b-{N6p#5^Xv8pv_<%eU@ zu0nbkbMFdmw3pvZX_ zwxy;?T1rcyrVCw=mOxrsEwxQ1lgZFzW;&BJEecdnKxHYeAeCPg6-30kp!`Io$|3?{ zML`tQDuSShRYZ_Q-_JSsoO|zgnIr{#pa1(l|N2Pg`#I;HbMCqO-iPrqrl&t2gR8h0 z93$wWxhqD<($lsQ&1Yh?*;%@$8bifH)i*>!(l*Dm+ za<{oEi4*_)3c40QPtqvN(vtaii~>LPqI24{k-aggGioS#F;`hH)OW?G#eotg!ZyWF zgeg}_10@Ocl^A(mvC0K?^>Xv8BndGnQQpK@iuM$|vMXv20#l1hBZbaN4kC_;F;FN! zq+T1N!taZEjz!7XXg-l7&F=0jWB7qq0P`xh#^^{5s(nyA2TEB?UoSUL$2hoI>qGaI zEJXd2jhYVK%iv2QQuTCljJ(8>$wE^9fg~9ux*t94ncR@%nq4l~ZVCJEu^5A0{YKs^ z4Wfrx=w5E#)EzZ5!eL`_VvGfK3myoj;MDx#p7%UUI-WX#;w2tR@3qduH z#fWoD<&A{DCKt6b80_#i5OZvd0aBR|dTV2nhf)Md+Jl~m>vSwPUkez6Ij~;_aDS;A zD-Ok69~O_s^myZdcXqGuEEj-Jh~ib${KVcKh5M^RRDGDCD4eB12e>bf!b8>8)j)5K zqTR(RRGL3U(L%YmuT1#<`G|qlTz0SmAv2AwkT zt!c+5)CYF1%N8)1M8Xj8xlx1)rv<3wwDpdlNhcYI`Sg*Pkx^#PZ8z7A#J3o)$P{R8 zdueHTp*x43X~jGD0cO<~yF=+B|N<+m;$UYtiAptp<(qk)5M8&w|Cxo~Pw6$~5$Fd+nF4 zm-LSy0?#@OFJbFQ5|$MDhL`a7ktEDPKYVx*#}-G3hHdzU7xJl*grG|{yoAR_l+ahr z4KL#Dr4eGX9FMULFXAI3iCEM#ynqKGAT2wMpSTqLHPlw<^`T2a1?ElVbXLDmGkwN% zvvfqR8915yp&DGOwp=QstX4_wEj3uZ+LmVMeXa&uP}xsjH&O&zT5;N-2W)6@Cl6No znu5?50It=H`qevXPchP_#hk^<7TK)0-28G>VX-c>teD$?x3clN3UBv2xUw5M?Eq2+ z;cIs%q+J)_q5ao)CmiPF+@Sus-3dtjbq=}Q%&YE36s@5W^1@MvJa$7FlagsOv%epe zj35^rGB6r*!@g#2v>{v<;>zJdV0n~QRs)kB20Jt z*Am_u-~*UZ$BV9O&GG=uIrQ`Z#WQPN%=*~?%sKS70Ii^#jkWGS2M``PW$ab!y-}p5 zYFYw>HCN5j04ib{qQXH>3(%a0KNG^tcvFCMVcqh<;5$b^-H_7-sH};cPFA1=GmhHG9fO3NUHo)>((lBO&HwIh;9SVq?(=^e%9Y4|LQ`+HcRlqBH z&HqRKedStX_F!Azhe*8t2X*G?!D1El9ChouXPJ)zSzp3n@>2W&rL!m3~S4Q>v0EPhPn zU(4th>7H(S@KfDV#DoYQgg2)J7`cG33j>T>#U7mF;3WBVP0Ditg=CvI-x^hBjsUQ7 zmFh=@M&};P2Ld+5Zb-p?9%5837yr=9r^?D?0k~9;n*IKeWHZ;NLx{s)2gK&B8}Vyp z%PLK*mCn*-*^o@JO3{Wb-BYh1Wy#SWV=dGHq(Z>85y_ z&A2!lw-G;AuEJx$#ioUry3Xl|6musCDe#}t;XQv8M4!^f%t#>ZKqj(C40^0Gb1JYH zbVU-n0T7~$IVSTkey&_4A8)%|C1N(J$IQVe3*)bQB43a2S9zrksRCYe2c%6&i+&qX zrq58uF8XYl>hg;g&kKNS9>ONV`PBB&_Lt8R|5TS|H*xUR=?qLa591TB6c#ys%pP|J z35t!erECxS!+2ISn`_`4FtY(^i5=G2wfddw!MQI-&1ad2H%c8tK1+w4DiI<1Y_%6Y zT#Mc;X5D*wR2XnVx;iTrddj^P0hWa!&|dcDhDw#bZjVOP6^iST@w!o&Dnqr)8(7VD zuE&I*i$fJr=R%33w|I8Ts3HdH45Y3wqgn`KNK@<`BWE^ak^A z0(l~2^&&6b1dNUwJy>{KXLVxGC z{K2)8IqcUFE4lTmGN!69MuC~V^jPh!Af&*D{U#Nj4S1qd_8kFBS7Bg1hOT(J^ZZow zN}$--uu?TiSHio}wz_{H@ycV3WMA&_+W^m&2W4@j6gNL7 zsZyw^_IZlFTUV`|cEk}=rnx5X;NKHh1Ue3os_dsZm8!Y;p#=0rKr361u#!*+eoWt} zeq5}pIIqNgnJKO4^3bWFQdasl_@=hg_jKO)aNw@p33vels;#ymG8aCYfW8nw{n|mh zAppw??g+rVf)4?7`7dvt33<#<|Kio<%^!j@j~xAkTVaGW$ff&^Il^7q-ru zH~iC!#1`!;wl+*oLJI(`^u?hUpA?Dl6HLYbJPSV|b-MX5emK{mw?}8Mu?TIx2wZ&- zz&}fe{~Ai^&vv3uW%hc?OAu)C(+Ow+ASz_e2HSgCM{ujFi#VH60i*p9W@{iON_n6r zg=NT4N2s0WbqUUjg$ls9LFT#Ov~Tp)^(B|x~jM{L*7 zZ;fs*4G_%6Ab>^Q`MeilkunhSr`Z^ghOkX`ow+uF+ycb5;#76-^KX0|;Zt2o=rq8b zS)DcI38o_r><8$X%vt!<2$ao#OeXl+e@upS1^pS(b_@{`He4X=$Q(|A1h|1nDfq*L zQ_G&gJf1M5}ZBQ!9ZnjiCrVQ86` zd3pIPy_vqeRKX1FV%lBS7$FkDoRfqu51=7bTaS$0#!5wP$yLpC>J9pc92=`dte3byy3kZb_dN&7aok5>?UW2|`r^?p>8GJ#d zmh2h$c1^arv!BLaGaK|X=0$XGzD!cI@uyql10nG9S{GC#5q825?&oN5iI|@mn-$Sr zTQVDhVIrnEXcr&0cnQ{1LjNp=X|Rr5f2ZqiRCDV(X#czGZ{UF3S{#Na2u_(cb!G!2 zIHcge`*Se{Z2s|dh+Ht&$;0-3I=klL8Dv1jtG_(3F`d+dt;RH`Qk%MzhSuu&h*;7Y z^B~vfOFO%w0T7MsTA+QonGH7IRU4?AZGUsplLzc)M{b>q6|(H{DX9lIs=$^sQ$Tl_pVKw5~tbXxi%d>Hx-^knTiVh7eHP)y=8`P0KF+hzds(FjU>vGpd=h) z4t|9597eg(!lEgq6TPjbtBj@ zJ#!kmXb(pD1zognM6{sYKwU{gEyUBXX9lc_eIo_?F)*|MwhDR-AFh6&-0L!n&E>>J znF&(}%?&!-m_8Hvt+KX);z~PTIS7pc6g;lfRdryI7D(OKKs79+MQR@%4F@rben^4N z1Al8-p|KkV7V|L5J_(AeRIu?qr=uhMq$!%nHncrhI&1y^gkKHgs00P2|H+R0r4rE#*_EUTSTsf*q!fG?a%m zl)??CqrG6)4KI_rq==9vS{S@KFhp5_6VB$A4UzAGj-gzxOvj@%);KC`rz*KZr;i9V zsJ+Xb*af$wLj&?B%Cm0{5Z7|Ea~*xPM7~-hUkgf@N3(uLE!h29Uj}W;nIS+gp>NGI zBgw1jSF`*86z7D)%~b@q9ubTs%4P>JO_?e=o2Oa&4@^VP11ifM)6JFif&PaE?k=of z+?mI?_Gdv@2eyv$0v&ifz+pYcGX}0w%V*~l2C69ERKFxp?3twVl}SRmf<5=8!D^g> zRGjd-pw6`7&0Js_CxJekgsuQYb11FNQfb~!qE@yXIRpQEH?3=s_t*c0xNFef{QAHK z;hzCaZ4l@iN$Ac5w3Jpu9|Vl{q}f`AiRZBgWegveHm`HP#^aZ2!12{A)}2wq4dl$a zT7-)N0uBh_fZPcc^i9lNHSj+Jk0!2Gd%dSonViy!1ZaK(Y^6@6%R(|2O0=dm~azR!Z~u?MqsBR~{Rd%r^n5a|L=V z3Dvy`V%QPpwfN~QO{6QIsgOgAg( z3t3;vZKyYTJr9M}KD_c{-LdjbiNo)$ubbvCf+iq?|gYC z0JyE#|E=Cs2F3%Jh!t#XdN1ZD%Pptw($V8Vtx3FUIO6Rf+IcG%{?uxz*u-Bn2p`Bz zLT57Y{v^y5h#AUxLV2J%!Au_il8HJKqI_&s4Z7iMkog?Q2_qbJ*Ra%APskYVp*LaV zOw;Wjhy#}akc|k_&9@zuhWsa#%^d&|y2%0NRTFDbni3T3tm^AFzo~&g3!D>0mLVsh z38j1{rNyOmj`B6rQ9|!IfmT z)J>X{hAxPqMI50lZ^U)SQD%Wp6WFRU*F-t{P{oO<2ctO#s2!`CGJ5=lqLzE8wA z`)mSrM_lz|*44l-1Wv8I=llYYLaB)lt5(bnk*~XmoA+=Yk1K_Ezses0MUlRyIC3_S zm8+PGE*>&JRu2B!Z?f?7*P-|dc$d;)Z&M9fEcD|f^bjCx9ZPzKKKn}frsGTbJaTw_ zbH)UpmFVX=_?%d(Hu0(QOYxzn1HS|iecBmZ zl+gYD34OQNZU8=a(dUuPZUXq#Q`xo-zEQ}Gk9^IvUlePqk<2e+-;d)v5)rb@-QYme zBIZj+jL7mcuwYmhIRMbKzOz!G=|uCgX~;boaZSbzPGvei=}EI|lR7~Prr9DjyZKlm z+wKUP-kuIW02pQ2?9DS`5`j$zhAvb@xsAj5 zOi{vI+;C#O^_xJ7M-M&9%l7Eo1GL+$j(k<{w#*7AoeZfXRVRr-A#=gaBI4 zq1FWsn}+WoccjIsL_x6rrLhW=>fnFaQkbV!*%a7;L)oJ4R7HowNK ze=p%NrI7M@W>0Y6l_DJ6Pg&tHW1#hrw?jIuWrbQ1U zSVn>U?;|{=RD6l~lm5Av@Tp0B%v|6}wG#=Z)t0y)PA0+;G5^5M_Yt1VC|464(+cjN zvG}NPz|RrfnpFChc}Xeo!3hK>3+M)dXT+3({R+a5j3pJc-bHvUMqq!6V49(c<%Gs# zfw#m`1Y#Bw9xro{vw`_zE(ZQt!jl={4uWaEG^X}R!edrK>zn2SZi(TLzL4;Eeg$4- z{-kq0&3KCMf5e2OJx?$mixwHQfDD=%BS7;zh%hx~DFUqL05N}pe=FhW0mdD12jR4P zFLV&({FCL!aL74$A^0)#6X!pkaO!ZzVjk>bpGT;_IPLTFxUv3=nzl(#?zT)PD?@`2_Whq(}9>T1lVGGZe{=D zy)c0$22cmD#_>6Mb5jj`X98b}V@wAu4!j+DqlO=yE3gnub3O3mCWuJ!Qk>I#4}1ym zmjE?oM5GzFB#E^EbGahTPCNa|+mB=dh!Y<6eH1~-z8W0nN1)TJVi?SfJ7ENU%5EPH z!GTwo!7L)qITvzB`Dob9?O;wYn*XGtuWyg@^3>bK>F}2UyBK13^~rX3_3Z(-NB@(G zzWzjrV9)au$7Fo2L^l$Nf=NDeB0ljmORq8Tt|Y$T<}<12cPOYEy4IcKzEDjak1r07 z-z%7+Qt26jxmaHvFjoUlq7S8_ri08xHHpdxn~fXkb2?kirlQ2nr{^Bb5)f3T13#7q zUdtjV-cbp^B%HcZ&}9BaA6mz?EyV|KqcW@LXRF`1wTZsb|J5jemcFO)`Up$+k^Tu$ zrc(dhR-;dF$SH1u;J{^|PdO3|2m9_|9JYlqyCNj>8d|gJIm=FM^iD!Dg7X$1J(Zh^Rv5QM)&*iqb zz`Mv*1R~K|0CJZCpVQ5W_~LBHH)x*``MNk7oORQ6*Je8i{_F9`*O(O=CA*`cv%zYg z+0bPd3sHwm2M^HN41**D&7}=$K8a5%_7V?18u@+8!ih^o<{^9|1$fD^>G;mmHnw9E zgBkNqie3y{mIjspM#9t8*dK~<5_VS#_QxXurfAb6lXXF49H$0dKG^)(`Pb`hEs&Jy#`@l zNH}u}Jd$#R@=Xq(gGm%K1)t2tUnfSsx`{P1!T(+tctL3)@7uGJlNGZ?L&gbr)FM3U zWF6NLm9^I@u_;cNUW;%t2sW~FJ7U6yG)#hWWlhShBo4`k67A=-e+Mv*z5Lz8xXP-g ziAlPH#2f-N0al2WJ?;2D3@D1+oIvg;S+2HwmV~$isIOX$uSoW3qKk)V0@JjBR)chR zZPMQp5+!5P9VzC3H8GhX@vp-X_v?&XDnaRxBl~OyI3o7O8EzYi;qe*_B%TZHtGd!v z;9_iZIA~Zg2AlH z7Xiogb>tq4EHKw#&F5Vs7&>8(Q^jtF<&SP`m*nk5_(CIhYaqXhOMP=@?}FE8k%NJx z$sO1jZ1Lcem7*(R*31SvT28%BYmA=av-*Dw*>0DHRbrQw9}CUk*4yIKPYuiq@MQsx zinvg;Phgx6*vY4(H82{ll?KcXd^`;tyEX{V+gQ!PfYRKNZE%YCfDXJ{2t(VWIcL=f zeUcCDkC;NlU7-k2u!B`DF?}2qSuEy$QDraVXz@*qO zNk5 zLZpz7T<2A!kXHs|q!CIhmX3$gz>5JoJ64k)&D8;)Mb=cjHj4}aky$EaU~>sRos?eG zLuOkLgn^Y+FN1+~0H}tb?u&Y>i-K+jAr1dF2Z%A>L(DPkkb%G&7C940M8}#qupR(S zkaDtqJQM(vxUg&sf+%+5pqH!IeZc&62CV*X5r|{I_xixbUbILRa|j?c(jrra;>dA8 zyl{Kd3PBnUqe;HV<%|$SqH?ps(YQR286mu4gI5+IOaQ?v;KQ$TLa48&NS)48g75-; zED2o`hNO*c=H?Kww^;ld&xEqUFQ_3PXxMD- zL&$r<>td=Gf0)15kdSL|ynJMQWhP^}r0XGGs{};MzoF@L@*kV*2S!%$qCmjpb@f zyp=w9LJOP^;UmpL^y4c7G;7viMZ&@(HX)ol!nq7zUPalgrEkqjxEFmbO|bspTe$xc zgf#r78u-poP(I5?Ql9~qW@Ri(<+DRRVQf&?oqOM?0@LXzQYI0`PGNqZnDz?u)nSnI zbPY*-(%ow=)Aa#^Iex5rW2olsZI8G`zBVp+UXZ-{AYFLC0 zIXm=!V1bznic5fyu&x&2A`rs8!(oJuMMnHVjetaZ_50Jc5p61Hl%336`k^*qVqY#( zSrfuI>fTeKtJB^aNOa(g4|p{W>;K2PiY zM0XLY#ttEe;Mk~nG*G43+s^SeDK$axnd$IlfU#WwtC#Q+_3O3+NHaX8G41sk zkQ;Gir!wBU(^@vxQq!4}zRn8h)MrQBFFH3}Q&Mbj#z@+6Y+mEz$9&r5HRpv+qz)}g zgJ~vIo!Fo2w@)mX#ekFOMITH*?Y?Klx=%)kkzm97U&=ge8PNuLc!6+Zb$H&>f~rNghiBs~hN^Q(RK$itXbH5kJhG7)Hd%|Q0- zGWX1@WqWj4KBoAFE+KFArRmm|(Al#Gzu?lK&sCn;kdX2F8ZzMhd=O9*xJlCin%c9nuJF!1m5knKwZUnzCKWq=%JGiNg}R6fC>-Mm>re0(ld zD@Io{Z)6geJk%N&(3kSqykSqpUK0}JfZ44av;`YoIQr%Rd}Gl}Kc5$JwB(xCZ(*(& zItM6fCM#$eu{b%O=C2t4W5ln9<~Go~SD4SEd;Kfj=2f5e#Uf67d>GoRE+^Bl!3}0$ zz|@RSRe>wKT;FwV4g5Ud&Zf@pQwOU9+)8{Q;1A%s|MB7jxB;+}f)~+o+{zpkunM#~ z2@L_lXb<%bt?7S~zWBO7`uY}q9ig;e;AXmGQy&QYTo+9XthY z-c^gRfx?puvAN?z^jm`mcQalU;`7mQG}{Al4E!MuJOe=MQuM7p6G-NQNb{M80#$Vm z>`w#F1*p;*`pUdciy?>|BeYDL*}yMu`kIE$8|sB0D2!u18>rVizurKgi!N>QsF-OX zBR4OUpeF%UJ01AxH1Jy~pj|;XufHNGL`X-0gi63pveM{cH38G6PNlO1NSf*9901-_ zx&at=wS)8X#HmH#u>@BK)p=&`&&5<*xSS53516(bLowO%Wqd|eb7*_^V@HBGo3Fik zoMd3bF=U`HWem#1Db!a$T@qrqcnw!bd~k`gXCA1xVCGq2V=-r)M!nZLkRj=OSyayfSca!n`v< z4Q$8Gr);hZNlK|{j>(R08^+hOh8_g!zudsv5^YBXv_tsbqR{+EwjS(&RDfoyDWBHoaUUc=yJl9*E znlc^--8n2=cirbp0m04OP6$yqOM7gH25XX8!u=I)8~D@R;dTLix@@Uas|}h>6i8mO ze5Vx~+?cAoqX_(}YeKC-VMt8=a;GS|^l(zGz$w!u+(Xm3AL>L$*B-7QQ5siwm&=X2 zp&&VNvRm^p&0ntJh@{*RCS*26B<;>rz;+7xf@dJ=t_@u1W;z-|G(Os%OT^)Z>ZcNe z%alR(7)3Yynn>7}@Cue!d?kpe-VtKnN~rI79nGJv>vbZ3y1rKreY$wss5P>Kcv*M=Lv|V* zp_gbNXu{+dIb+;^ex4D=&_XwZpVK+xS}SdFnww? zOgAU>EwT@MIEhx}6A5YQe3QNvH!Yp-oe4hsl&ASff-qQIM^9;XpG>QN=4&I+e-Y5J zKXAi*iq*k#xm3|uTA!Q$ zO&XNOcibrXh7x>y{^VF}qoK;=6A5zHMtUULJX(wJ@^8lt?Ao}f*p1C-D{E3t0|i}t zcQT4{HBF6}FM@zUXEa}1kKIe8=2X(lZb%Ww`{ky9vNAQyxi(A_?M{l?k9hzUTLLi~T6DhXb`y7*rJvGRPc7 zh$nYD#H1UMmUzZT&g!vGJ1my&rL#dyR>U`+PqU zxj=6VQC-7~)sE3!y;P)Nb{1s1c^^IsrOCJ?bD+@I)SX+u1egArPZCQK{sv$@mN(t} z9AA7oYcY1K_L>JNOnAG^GX%&@KYXrmzaO}pfB1WR?E4seuUr*|_#hAx(cU@GYt!>H zHjD>;9|xY6FdgZD^{_H=?G$j5<1fEzqZl=D}P zGm5|bX7s4!xEKs9mdxvbNX+RjU^4;V6!RXv|EDboa)Mvn{XshX8^FAX!M#8;<`%DS z&PIDSiKcNW87lquvZ=#w9hqloz$3R7{v&mCIbhb54sfzUCmXw==UO`RZ96T|JD z?ZmH&xz8PkD&0PM-mT!BSWD1NMAU|D1f@@kQko_lf%V&W`1WrE)<1zYZ2LxFfAgJI zvb1|6aDRHYxOadX?OiQjjrlPwjU--prs}X-)b>Kzo}*g~jj9z{RC{OW`#`8)KD1me0WE? zQ6bMaz~j1ub`bMpK*%t5`%y3;#(NiOe&9=%$Z$-~#yD(6hFcrtW^;_TdwyCYa!!o7 z2rR=YG7pT%@v^(qWz4}+c9tKVH@A<>@^`SL##w6^POmrpEL~TG>F&`mJqITAT_Tb9 zRd~bCK}|I$k`))%WDC=MBXLC(X(=7-@5)s;Vpo7?1eUw+8Ik1~uw;2#?FOtvn!WC= zp?E&s=*fCp!IGxebNpaLjz?>$ncIsUqO4~BU!<$?9A6)i<5%EFb>pJ$9G)!42+_K7 z?0xCFVr-ut9ovt#FoXIY7u^y zLRf}QL)E5jTT**}Q%bdGso z1coda;vIvCgb#^?pf?bq&--A+BRn4!8PUc*!m{UY()t4tmL{;ES&v}L zfJI7T(^_08YWe`jY9c)=dx0nlyJtEwwobqJw@IHyIj#ps+^JEHogyRfYLwx!oe8%_ z8NLsO6u(B99up~1$3}V9{4UM2QJxQiCzv6ye)uYZv0jQlGrZUDVIMX&&^&?k-XbY8 z8T4VuYd{{pmn?MypNTF%xI5fefIF7@p|IPCJZxV%r>$RG0C1TqBrze8ornBUV_PM1>Ww1Q3 zs8}8xutUZn3O+L1=ZLMRf1nBfH{ZgC{%&~0|8Bu=X2KYq?lNB>H2K^d{rsE{Y0sE+ zKI%kSUlRaC#E@xIpuHI)jd_UYkH} z5yZ*)bsTsC0O}A-`aF+c(j~(-saO12thDuvtlqs9D0wUbo}yqCFR7b9M82MKVyb4Z z$0Tso^!uNu<0mZ-4&rGkS>O6(68ee;0EBqR0Q7*1^KcLH<-mB2(Pjc!ZoMTH-AOXl zFM1;S*+8gb&AYs%iY)@>1M6H9$N1EcJwmy)CgmYed|ywM9Pzh631Wl+E{`b8QV`Vg z5Z_t@|87zcn|gnOpW!KgkBevc1i;?NQ12C>IB#GG(br9R)@%>tc=YL1^wm#5I3C`U zH3`o?iwMmrgaQcE*>H-jMPw?kfc?)fbY9ZB7YsH`!+RQnX#>jhezpA#{|MuToXWnK z4%FGI;N~>&YJlEr9QY{`nWlL|gNuxw*PZZWx{)cY>%cmZbARkXgv~@yYq?Ia)zr1X zQ{YF_;mkiF1?v=%P5a8T5W2w_t#!sQ^~jYv5_^1V>9zZ~{{f>E)kXlKbYmXLDc z?d!)-kl-rX76yX5Xcsb&dKqm2Br0U%k$0r0dO;HUJRn$mWGTK?d`AvX^%e#;x_7Fo=EmX44+do9FaKUwi}}|p zyx3XR13n6cc{db1+U}MgoLOf>P zEB6WX*V>PBBr)mX(Br}ocK?p)4l&xz!x?>3h$4Zpx9HLkl5IO*Ck$6#yNx-wTfklW zypzA9E3GmW%WH#s?h65tsaTz;MKi`6P2d=o;X5NS{GN2gR{%s!xKvyJsv5S~n?Tu` zqrj79O~7*h$Sg0buc2vP$wqo27}C@z{R<<|@2I6U2E;OE*|jHRWWh$cJmlQ2NVX zldePQlR!^b(1#c1Y1w#bEeXo-`;i#NzP5&rU@t~%EuQ6t0lQn{UEoN|d5+-=BQe}r zOUI%foAqi45c1Inq#GdQH6YV!Q|e;f*+fkBv%3lV8e&O{Al*~_lUhWqvi6%NYEda# zJmquHfe?-j18MSE#2jKsZGmeAk)hoCSTf$qc_D#sMqpg-GkLJmXP?WZ`w4zY5=Yhf z;=$6s<3`z4WA3|mi#zi=YFC@(`a86&6D{Bx-o^MHovr2!ud0z4~Mk%h>Cv&^^fIgD!NnfS)x z?PI28V5+H_Ire+gaMm%)QDCv&)hQ0^)*Rzxbm|#`S>{qONHoHblWMS!d$W(xX!w_a zpCdOK=GQi8JV(R52;6Cw+pO^|l2x1h0LV$ZY|xJ!oN9(8UI${DSWbn;#u`eQIv>=e zP9{A|0c+6Sc!(ygo%xz&W;0?F)s-{8uV9ubgC_P_cBEvS=RxqOZ)!5_d#G4jljC-9 zSfgvQJOLJ)Ep5Fv%ZxirOHs5%bGut+nZ;m{DA-VwYO>x2R*lI>yw8A_T|5%wci*D% z8j15S;Ivgj)IuE(;0C@~=FqneADsyEXTUscgd*JcfV*~-BCMYpKWwBTymx}v)pTxu z$Sm^|@Myvy^9J<%goN=?h6}+E+8d?LpBOVSN?r@HwQ9J2$1L-C@I|d0p8v4J6IKr& z;1mQ1V=+AUp_5{<8lL@~V2@gF>z(hDm^8vp5JGD#`{uXBv|9MffW?P21x7P4v&=mJ zqmp_0#}el>CG-Z=9#BK&0qLO0F$)6PF`&5&Hf`!Gvj#xa1f)F?ene7IDUX5@s+Its zYL2ND{CeQg2GXqo%rcKKkt$Sec>J4qv&`#SoN-YyCix~s5!>i~3IWvUD7{vQyAgsT zGdlLmS~ZfR!KMyMv!AR5iOM%h_Ow z^%8mgYL@v5Qz(sG|4~+rW|?1uCYi($IoKrk>3CNh;p5_{wU|E)W{%T{oF`1vxQ)oV z39OnLntpck4PpsedQAMr2IZZ2WX+f)nOA{1Ehb6MgQwSsNs{#>u-cfoQ3MYR_>!(! z=4_CoWjB@W8B#b3zVS083fe5|$R*VIM=;q=$#7h+K1vPO1UQ+_kj^r12O(-ojA0uX zV#dZe?gIyVS`3JhFP<4QFh>6t=(Yqzw|~qs4>E;H0P3_Ut+ULYM>}Jqypx1s01Rqu zI>#1p*g_lGYoY>{9izsk2Y(Of)>zSaIRj*4G{7u#J1F8==A9I0m_ExJo6fNY9Bgbl z`E_qsW7Fwx2i@jYs(z?-$pVR{wo-mfveHS9gA}H(2HD!C>LuZoa3cuP^vLaH0~qq+ zYP4DAF(%ncExg$b{p8usG#yDxDAZ|D*3Dp5Ta{Fc_Xpr*<40orz#NUuNSxP!)4J8h zdzSeXkf`sJGHaNYRbfGh_Hq)74vR2#f z-4Tn_Li^o|Z*hVJ&IDjJ+wWD!IV~12|M%ZZ>w!rSw+D+HYX#T0@!!c8)Z6d>```ax zd*Jj9FW2-RlP{SAjHdsm+g-fp9d*ir68-NKyzO&J9?KeoU36yZl&&d#rTi(lw~=nS z*&|=VeVB#5?n1XwDMyR6F=h{*0$!3EI;nF=_F=XO@znj=Sk;(1Ja1v@w(Qs2*#4tB zhBEw&8t$+ev*iYb&Zx8yQ@vvn*$Z+5cKNkp$|CXo`>SMr_zIy`G%mZvimvPK9OxuL zYaEop`e>@AKiy`-h^Fxq>FL=CP0)BOLTnZ-SE{xQ9shtJdbpPUWzMKHlcuqa8VM&T z_V(&$Q!S_M8_p>Q(crDxVCcj7v&kQtQQ@PNPG)vTy%xdLo(h*(xF^cV1ekl8BsbWB#es&udk zLKa4gB9L~E6k?`3L$y80^c9M^Y70{1VQr}xVQa=UI#BFucA{Mh6^fW=v_^ewh8ibj z2t~p9NFbDiID~=_hfok4Bt;bEz(HIvkoD+cZu(b;XHxOL;6Nc)rM$NJjK)W9j~2>H zf=nqHd}{z{!MZBIv|w!uFbNuFac;Y82G_<*D~H>BNO4!TH~ z^oTb7+r32cTFN4Q;_Ojrk=Qt`Bg7{4G4Ezkb=|Nk={4}(k65b0?V{+kIm5-#DU>+6 z@02*|EES%TqwLshHi_sDs|qebmuiU_MG1XIqmq8+BzB_Sd?BgcGo_U!?i5KsJod## zyl2`}mbgPC{qOu2D={k)w~M4B7QASQNESA-O+;PyqD695%`&%(toB7O*34o7eLpld zELO!maNLU(i^?OnZm_ej+3XZq52wqN3d!ZG;VUGTIo<3MS$n@D)y@|n6ZJ>E2s`{G z6N(C?S%fWo$%LW?X%}H@UoxRog_K3wIn`%Yw5K&LOXpt!L zR-`%J=As$$H`Z|MMsCW&k5*=z$a>FK4D)OwR@03auAmXS`^kT9Jsc zBJc4REtjAB&aE@MMAGsTH2NFR9!>tM^xHSuVUzoodZZ!fVrws?(1SOaAaRXIx}!am zI77$8BGG*hBeAm&1Ah$Ac8H|MPZWt}4^?W<;Z+Apm0a2E68g-OR5J}SgVq&quGk@i z){9yYsb*2!{xWGkpu2GK+c95;@CC)5n zyC~YXBWkfzm|}4#3@2^ya(QlcvAbiav#e696Jmc#<8?o@S*WgGrg)a`5&$n%5=(F6Lyt->>nVn*g!d$4PIj%A3iauR!yqun zw2KJ^H6;VJW45SH&o8#qTVZ)q7VZz6tP!BwbGpk}n)6L8)ArdhOpRkdeS`=YSioT8>- z;sLVWFZq*2!<}PY0%k;dP^L>gJ*01(%MlrRD~O;52PNag2d?Lq${WolQNC=ICN0mN ztnmpZdB)WuwT#@mAXSkV+0f_^o?M;oL?-Q7iiw@>Idt0DtPw+6*Qi0&-a-#g27Uwi z{wB%b8z{$L9~1;UAIg@tx#{an%u<&$E-KFgetH&>9tV%tK^{gOr4A`{kI-G)pdo^+ z1S6_wAX>~;vEV7SBoh%Um5EBos9C-SND4J3Z)5eDqQ-8ZnbHDjtH#x7+V(tat*xt~ zaj@y?Ad4VLU2{0RZR|sDS*D8%G@R&r92tFZoqX$SD0EGZAY^<>JxqQw+axMqEoqdJ zZ5fio`3aNk5I43_jm#j(u%v>Xtw) zG9V(izQybkb(5>2_QhpD5{gl<2;1;Ng`$bi<_hTXP;7kmNk+hI5*0_hN8M&KJ32|x z%pQ78GCTa{9J!7&NSjMi>8LF9o_z6{zl!3U#d}W_DL+t&#P#5m5dPo z76*;Vf2&Byj&`a!xiIb$6NXNIfmtR~?24vqCfzeg?m#!YVUy^5a&)?_BERn9D$sE* zp=;=_ohpGzwBBjXuwHnh{2dc1a;Vu_D6V6}-cKNbI>-$Ya@GrzKsAVIldxx}%JAi8 z{6yY|IRUTstQ*V?=FDaZaKV|Huc&aq;$BxaGV4%>6xK>h=ho%4=y>6BDwViv>0uo>+Z8vC(kJb zoocQEVoQ`Rs%+p`Z(wLbeWRM7E0<}tW7H)s{7$iFpAV>A-2Sa;{KMnw<| z>fngT{ba5vU4S*FSwegzH6$F=Odd>gkbew2YRfi}^wo&OWzui3GN;JvpV# zZQ-!r?Tth0Y#Q3{HE!EarV!W=c%ZXb$PQJ|AZ!y=fBA%3UB;YHkWpo%prP}7lY!!@m8I9u%|Ovv>&>1pZVhhQe=CPbF3-a1GO6(>KiW+ zuV$~9i-5J>SxeO<*n`oNbEWz}#ne{QASQnD^ZzHAimF5WoNU*S2dtmpVYZ6V zhg}sjKFAF0=XRIl>NpeoY*F{$_q&fwdP-EQg?zEaG)p8d_-Ys#j4pqBMwn{=>^#Fq zhu4UKJrZD&bAj#((Df*#R4bl$rt4SN@tob}GaI#B)U6dJ%tNTLb!%HG7$%tpz7|F$8oodn@kJj;Ri44Eu1!s61G@~NmOKT*vPtf|sIyh9^G z4HL@iML`|2krNu5ceUlO+rS9+?mC2`39nJT5L7YDhP}IvO=~CY-BqjVHgclxIKwB{ zMy@jM3lWlxYRyg8eZBC$DLo8&9x}6~ znKh!C2ILJA@)#$9j)b`6b^^3WLx4;TxPDm6>YmOjj_jK@k+IJ`8Uw0VYgKwaE9r_M z%$-7xth+1!R(AtXqM_;$g9; zv%nqkU`pQ=Y!&6x2=mGum3E23TmBY_%6HIn&~ZJt_}hc-#id zp`K9++@9%2t*MU6NOGYd`5iE!m-k9pjUtC)7XjLjX7OhI-_@&}rkGBa(~>?R=q-k& zt;ZT=y+wm?dDM8h)tO++3m5ZX=7G!ixJKRg7gw>!>=4lxKA~1ggX*-#r&IFUAs#^xtgvt$|g-{lXPgl=~!m+7TP--2yFL!CN(zv8{_ty~w}lxte-vI7IcNNNqKnMchr#zfiHMewJ<{ zXHc?!hlp?a_o&s#Zi;b@N&EYHssq>$S;ktPX%mSL|3@U(NwrLj13p+b z8umdagXc(kU5AQS_pV8JlSEYeak7EV^1dJ(cLM&;OQImVO&FqDISdSR2sT6jy16j+voK0 z6Z=ud%M+Tg?|C-G)RZN5|9W*=EdS@sL@Z&0(==GM&Iq;3q!qeRjt!NN&K+u1Q&(QC z8*PKRTn`4bxx6?N3{)_^wVL*{anV;Dn6(?TSDbx-W?R|>_E*{C#(P||eQ4Qi**QybF6i}*Q+59$)5kS#x?3vKYHw+< zue&$bSI+ZZjI?IVWI`nm@w4MThnk53`u= zY1A6IjxP#8+G-SN$3Ju+X?6R(An2eugyYuMsP3wRqwp}%0&-Tc8H^Ku%odk?$-zny z3zDbhDtzc5ZM33R`lQ4i5c!*8m(F9%kIHUvF< zSAVEuybZ{lrLI$H+he_`K2=SK@25^{0i`=&FDP8S1gBcc68yWnBSsoh7}Hs);AyGt z5_tO|nxo0zL7!O)j8-n_s_;yHq`)L>n{8!_%mWX75wgW#Tv0*G-CPHo1`&9+6C64D zk>Qa|FzC?wq~4`(m@FFxIy(EySW4e4;>Ny3vj%R(D3rK93AzrvPT$-3fR<+3x-n); z@|X$&Q~t*NCD!VC5&LN`o-&!=7@5dqoqbqhB%YwcLiOB1l_t>oM%Nv4BlTq7kC}mu z(W3wM2|+Z)QWCqO@!ZpFx7zL_50**nxt?BEr2jh>=d=Btm9;}%tNYCkvGMa0H49by zN;Ey`j)lmm&wI!x?GT+W=|Vm)TMD%tMd0>;; z_)>|+akqg2x~vT%dG_QNt|7CV$9hn7!vr?%qWcH6Z0M=T%|d|-8B10|*a$lSbE-Km z&1nZ?*uhnL^fF6Figt+7Y>PO+b_UVvYV}-)4e{I(qutf2pblxuJ*A+gsg*SDV3BOB z4~`m16%#pZBo%+m%(9qQX!T~IUI{j3(!|hGntclz8kh5S(*|iET>lka-#K((s4UtS zOi?SO>FRZ@K(uR!LzTtO)!cE7RJp!Ffez}uPiVr5UZJm#I}~%Ni)h+KNm-R;=xQMC z1Z0MK3)$W|n5&Ie<|&f3tGTGyo!ekk+&?%YMdL+t8@iA}@ib z*>^_KkF@y%@N{RDPdJSfxt9+{QcA+dJ0(gRj#gjM*vPAqlUClqq{umgeQWi|<|Yxd z=_C$jw$O+@-SgBg^?JL@PFy+qyg^y8-etiW!d+%#EoG6u*Ri4{ zCNh!TFgXJ)L17puq3=vsgEK2da~9)*N>p{dsGR-ZQSBOnYzfT|PYtw-rkze>dNr#p zbuu0uxdCnyRl@8gnmE0@HRZWrO>HPKdBhnDL-26&sK{*L03WAzz!MJbt?Y2>1~Vv@ zEu6cN4ulq2J2F`4ia{M!Td`tY2SE(^t7w2SXvagzFwvl5k0asYZq+B~2O1-w?4+@oiyt5}m!by3vbFPmp(U$57{Ka&g(`97yVQla4-_k*aeo!HN?YjSP-hQ^`MN|;_&TR+n4qh|StU5C z9gjzlF2P}K={43nXSw)}bDd)JM5flNL^u`td7jU#k(eH~QhjNM_BvtZ(}B8M5~x|2 zKj;F5Q-VGSstlP;w4Fz@SprO2rT&#(o%R~*60@~@{!Ojnhz7HbIsu{muC&TJGy;`o zmFC1uvly_;86xeaR#g$T(HLQJqte+op^2l$mA*>3qRT~#v-9!3M?hU{>I`#ygG|ET zYg`+{YVXwo==!PZo^(U-up@QIZ7U}x+@DobIPdnkdrG1jSp8V1K3zVgJPY3`LeI}> zW}$R<=Ej7fRNEB-%7?+6PW&V#F%~ntv{=12l&ujE)=}F6XCYYrf8_rTC=MH7~h5*ZoJoai6 ziLWVWeB%3&sx%i)5egzGwTF&*GwWfE``~2v^`B2!(n<>z4WetWwg0c^33^=rs4R19U!1k|-WZ>UH5nqh7E|9{ zX-foaXzboMJ{qP4Vg$&WHDc5=&N%p% zLIoEK*(OPst$jSRl^nK;vlvsgaXUx;;vojz{fWO|S!Xs2>17+#4R(&|w0Q4`VYzE4 z=p^yhR~Xjrd{oDrwp6OC>Uw04pgPhUg3j)ImnijO#Va?dHPk~vKP^}u&0x@rRB#6j z5e-RFm{IS}*?J9N=$0XUy~thlK9L`-9^!R%d}9=+x9`w-72_xN6gF@V0tc;m&2)`u zn0mIxgxCK36ndrykvQ~B$yctXRgZbudAroyCW5YhzY3)8q||oF-C)QB-8jpeHQR*$ zlOND zpUhRL%`)v0>d12?bO!r0{L)E=?(9cuj&%*RlO}R-FaZbhCG;1Z6dqN`c0(Uz{KR~g zE|9O3=#VBYnqVmx3(l2+xf?NLG}|Qnz=zcuY6VxuBhr*A2V)y6Ws`(HaI<=3aCIl; zT@1T)iKwo3HLr4G+!a84!3YLk0mK0@>~hd@$l_wA`zz`euI^ur&ID&Gzdr}Cyldi? z(HE{>YO4-KxVJOv==EXgijK6P&TNpV-E^@=v47*Dc_h5srBoeG1#4Xu={Js2A(hsX z28*1_7R(jJJ4E4~A5BZ4%<3{0i|Cl z4pq|(=)4kk(rgp0naffPB(9~oN5w zLe4D@5)BV{cpAleDGu5b0nd0i0%tK`I|B@Rf`B}dK=9Uw3r9Wy)6)SYTQxTYFA&J1 z1m^`1O;H9$ZpKR+;#FJ-4~drqymrS+093mMdx!~7b{w(E`d)YFqRd?^MOwBbpvbu` z3E0(yU?_2#VRX>tHzb59H78H0!1=*u(W==Y?*H1ADQRZ;B{y#uj-_AL1S=G?MY=SE za#1iL*q!q*2GzQcnyW5OE3jjitGWlvV|+SxP2*aPdt!GR6_qhtw48)dq6m?Jv)5zV zgX{P;V&D90#ZI1|)v!9eOwY=EIfyO4rd`7SPUXaJ_K%xkb_wTwUsn(1vr@!%O4Ks! zh1GO71R|t92qkq;b~igk#DA_+Q8WuW50zSHG0SuFwTo>ijjr;e@m|%KZ(2!5e@i5W zY}9q;l?>z!tn#!8&(YUAUb@1wNxEUHaW@C;45+l1N_}%N5HDhXV4Lt>qhYwKki0*O zXFJOXST);(^_&0e)M!U9k3n!Bmj2Clq5bjO!c$ko%nG;Kr}(@jeqPh4e%5l}d!Au* zt!z#Tvr7bj@P>pDg@ID%yuy03SxA?CM{Ot|kK4M_H5OEa$87n^{Zf^?lVh&=k{}J? zybceO$2V#yZ(~pYz><#H)x{lVt0>KXPnD0T+irdw=eMZJgjqw1qI{N0&`G5d?&rzT z#jK_*ir&55Dby~T-@wl=k=5+Rd7(V5ZPtjW?weF(eAE&z@!k_uu~uN7DNEpg-l{_A z$+9^e9aIH|H$d7-5p$%jQndZ}Hs9HIozR8uNP>@1yTdY+uf}ZAOoi(?P<3G-p6IKo zk@lua^FwRl)$(^trmGoZ+~}&P)q_v%>p%d@f3QiiYP4 zP>{20QN+ZAKisBH8<2A{E4+KG^ZjPvq)1zZ>=GfLze9!DYv*V>+ST$DwRSfP75AWv zK;+shnMBEFXY-ai%<7?pZxb!&{6w|k`9AD(qHEHS;#Y?I0S8LbN~0;%O0}+vU4qm! z5I6Q1I2=9u0Xu&O0&G`827VZ`MKg_eLO#13BU~6|t*e^NV$mCSh-D!!Hz9NKb1ONV zFft9oviIE@39`z~9%5-h`(Do4v}S>bsIG7eYP|@0=sqWq`vB;%X#T3B(XB3WB8up_ zcoI1y?6=7NB3Uj35j_{jZReE%;@zfoXG^Cr;w4UBE)-fwyf4UT9#s$7e)uji`N-d@ z>E$dHL^5g1nL$^ab~_H>z8T=*!Vb?10t?r5cr#nOyM!iVNAbAW@cm+~jRISEh>L-3 zmFr!(@;38y3tB^%Zra4o5APIvYh@6*F-?MP7WNzEReI}d9$MWc*|KBRu(g-)2j zxfix$9aVcvwygSQEndKS`Z{rM7RR^a1J(yVcA{~KX%DoPwF5|LN zH5C0UnJiVrn?WJ$G*yG>zy1-mLswRU`Sw$7m7*=J?S=(&r_qfs!7Q;Q*k&Ha^}38b z%KDh}4p$vVV}uDFz7$lV^2$GJl+tz;@SF@f$GR(C+C%ppjZ-4BE>1yg;W=rL-P#$Q zW>b;FmegLnhHC1?;#WMTmM6Qfp+q13d?mM0qF*n8uluVAk%=#72EQ}PS;axvL}p#> z5VwnDT(FCTw#y*k_-Nw-q}df@Qa0??5|jYkEhqD8+r`F-|Ii4_gjO(9$O#i96ql`F z7)MRe~E6M4oXbhH8D3$Mr;zsH$CT!bB;fWO-xrC8xeY)SmCu%PhMu%QeNg?HRdZb+D4_7|NA#GmZ%Q*7HGpkomh^ z-wXS!{GL5;l#^y1xn06f-)oK>X>*Hs@Wai);UAj32XspSVFGhLS}dTq1}H5mE-fv@ z0F@{|3@F(?LU2~v-I9hL0o}(2^!76vkJDBSbK%tG1A1qGvcdTr>%-w{-^ZlA3*g1+ zYL{rNI=rHa6%iM%ZwZ^}69?=OkxK%oTFzy$v6oe& zqw+OrZ|ejn3Fxah2^>FkM0Ew6GZuJ|_q5Yl*RSngTchqBtm{;4g~K9A9a)_9^BOwS z;g@TDp6JeX4`v6Dv2tbUsJ2OVn76lNi%b>ut?j4=jflOan*+A%u@hexc?FeRp}%Xe zg2~4~N4v;=)ae++nkh}%#PxVVGkC|N(bj2&w%y58~7Oad(`8C3QyRYy$lav9U_Fk8u~P_8_hMZq48s)&1cwU1dxH`tT0Rd={Et=2BBBruk)>duoQ?dnjJJ3OG7UgG8P$Nd}1dgOGy1}j9&2MD*G$)z% z8n+e)k4+)OAF8cotl2CkuALY$wat%;UQ)xtgQBku?VUP0dwCwxl*QQ2!y`rqjI;KX_T&B)2MPLZ{*u9ns1n@ z&gKFdjHTs0qo7E~cbAOb*U6Eht66A-L7Bj87fTL5BGuEJ_G4YzXK>S-L_WELBr2R| zVw*+kE2fP`dP;d#J0-K$i=3@TtN&y+Vxem)?6!5kNCtl7YvxJUu`hNXC=9OoLYMWZ zw|SS?`t%8!n?i$pM3D)w$WIq0$PL4$-3E9}{>C2W26(->vobVLU>s=5y#cj_I)Cwk;L0b(lAkL#zJ$8@89`a8(uZVsGPw z*U8$HoP`ahSKOIXox+dk#1dpF%Su(*^Qsh&y7IZ&(aPGuyFDOlHk}$iwp_~g8nevC z-~%U1Orpw(5f6S^+Q#L=gXC|98#PXmAam@U+?#}V*$N3$r?c3>AjqB%yi-yT_cskl zt?Q~}x1f|v=J6A4KEc4NY}SaHAFH|yjY%~S+sjo#^Lg>y;>C28%?=5E%sVxv>0++_ zU|bALmu%Z6VT-FY=9~qB20RvRb&MbPVPc#eQQxTV8`+arl$FLO`s2+hWgxeXPvD!f z81bMQ!>8GtR6fHo&TA2OH#;3ZY4JEusb@8IB<>PXJKwGGy&3OV1_if?MId})qj?)|8^e?;f#$LSM?o5a^2XgGqJ2KB^3} zLzJG}DaxaHD49%N3NLKt&`rX$qlErSHXeohl2Ldh9tH2kOqMqMQf;MOvJ5}2!r55M zhqnMnnzC}!%r?>7*P|BLW%aP{V^@@ehXKPn*;RwyVS1V|?Z!z~O_i=Gi^k{jfo2#S z3?4A+g15ac91O8_UF?gG*vqhVCrX**nx+ zav?$MxOkOAk!!+Z9ujcRvc?P-r(gtbPmS(8squyj;vso|1eTM*QZJ!C=|ab5SiCd& z;V{J7o(Zg)trFy@b*eZ%StHx!bnU~7Di2~%%vRtmB$?4BG7hh(7t&88_IKE;gccRE zrdfFZsbTb<#-N4KGhN{=khXKE!vJrT%ASX9ex_>e*dc%29gr_jHf@gEz|$hKM+cj5 zMf6(-G|F&Ab}eOBWB|=L_IP>v#;HZLJ*clQ6lCN{8RzBztAJ5^>vQTqCQa zMemb*_9Py=ggWp-n+X5opqd_0GJJ5eOF}(5B%w9k+8dvJQg%{CTBQE$Lf(ed;K)nzLSzwZtEd#IA_sf!nqe72n){pw)d=<;o}61KlbCGo53 z$DeevJ?+2H4=jbyZXcNQ4Zm(;acLWkCG98FE%(Y2#&Q|IfbQ~-8gkZq#h~a;B`oFD z%ILvXvG%!UvxMK_&00hTws9MEb##Ukfy9;LBl2j|<=or&RW6reN zUa?91Q8&bM@@pD*JSu&a3Ilj;O90qIMfAHD*&LWD^9Xrt<5w;efKO<^Cw@9PVf3Kv zt*RHb`@T=re$2nJ~C=@66%7eBqu3$XD_!3ZZPOG&{Qas4vrN6% zamG1n51$=Cca<9dv00MB?qKtKR($)ctNGpsw4jC;e(nBM zI{mUqoG^5*Izv-7INlx04E8a%vCh;Co_Q?FEs{E8nIZonAztG=>Wvt}giC3NHgI(J z;GDVHB)VJA6C3dS9*uFdv}cO$DlpxkjyUqlPDA4bci1fK#rKsuyH6<7*`CfmG|jYA z0FAlGKIp?5&$W26gA&hg!tf%n{E4AOmTx674HBf~d<}{goNtyv@UR1`Sh$C$Q0!sP zv^D8E^ zuM-hHiPl*A=h6Px&7$(^i&S-dnbqbWk`{D2=qXf9m_T$1@1SDix5&EpVwEWeD1&8H z?xO`qhwamtJcH#=e0s^b4VaPLDe_+P5s{n8+CyVW$MVH4l`KTH~IIfknzR})o z9lsFZH#60xM!APO#Jcm1j$FVc!A*56)Ypw#Esb-FZ$36`9nM!)v31;R72}@zxHFP6 zX)q&PC+=%=bHsc?3+i!{>6UQlxx$^YzyF`_Y!UI!!L1IR_R{XHB6R5|HNCN_9SlTW8=Opk5+av} zuaVG~Iw@${$86DaY*EGbD7e`wyyGrW%{9W%_Q@*M8>T^6mtCsK7%PF9hzOlq@fpY) zf^&+b>LudPDrzf5Jv#!MN^_fi>m^|AA{ zP6K$MgE%``>_lr&7HQj5D#}1}kYGLtv9lq{`rwE`ssr6rt(#rK`Q0sQdZMR>TL#8# z(MG~IjT#qkhRAF-+eO$xpBABXQ^9V@XfX{E_B}OZbT-=@uV!d_mNv;NhP9eaBJBRr z3hm@^x|ivzA=R6R{uHxQq|dxOJ^BgL6IwcBn=YVsDn+-!4M!4cr4zyuu$rN4&9$ItnVNyUv0luD5YTVOPa*aaUAUXI(FN zS^a)>>UXN@y>!nd;rsi19}mwn>3XZqtxlafb*k#rLr6!bh@;hs1B9(J0xG$Zlz?De z-);Nj9R6LBP|HR1OG-c~!a7A@o-RYI*3gyo*IG}s8(xj(F~g(^Iior(q|S^re}ji zS<05;T4twtok@pJGn%o@R2k{2jS?}k9}wBD_otDTU664C5dKuCbs}ZDqEwJ)++9(jAL14EqCiwN34-#~u zR(Jma+{}#%{Cr)5YSjak;hq5;IhbIDV{XWXhe}9QUf|d38q_k67f>11z>huYO5K$nB>6TzOpPDU{174GIJp@=;fe?6h@>o7@t8n;&_AgxKVDKuTs9); zOu)Jxm5JxwH#&TP1dVL>%3)xmB#3KS020&DAE$aUA~<#l?ib zx?=KF!l@G+QHgb*^$BfbsDVJP4$g1XQ5(-{;85xZ7IX@(TtU6B2ZW zK`VIT%nk>sBUR;3IqK#?3f|a|Qw{A7d9J5_*p_*MEP-WLM|K065F^7WQcB*T6lIVN z$7+I~|1(`pIKyp~QRGUT<>!~(qWsN6ur|ZgR)4Yp`f7YowO^hhr0J-c$f}Tzi?zh^ zozEyXeX9B31y-eUa$>B#sK!M0j85QsJA~_j&JfriKTDtu+Vobf0He>@dJo*DMA$vE z@lfAHyAT`Db0$W+pl@L&4vDO7E#6Gx@@Cda>p3C;GMZ0H&&99j zwHE=oE@RT7cDB97!4S}1@E%N>kh)2wVkI!a_ID~AkF1+Qn&zjMd?650%tYkvd9r{B z4@FF3)WNn#eowy-koK|m*1gCZD2dFKF^wdxSXg0;_pZ$t9GixKD-{s??P>W#4#ZtG_8CC}7TU>!hgG+t3Go}drb6-^~ z$e?7fEG8^2gAIpBaIlNu_IypjCfyECi?rfXVjZkMt?hiZUI|S^`sIJVu8@<_EbBZ4 zcbHAoF&)VgwCLgJ8y3(W{tfcMNtL02sDqzwX;5V!@{L4O{J3qJgh?8;bP!*F+Nrggwc@Zxuh?y~)CfHObK3(`O}9v0~FTe@2)7G zQwX4HDv<iFL2NTX9Qp9p+RAzkQ$yE{`kV?a6i*T*EOdnL~qcTekTSmgzqdVf7v*)--9L zd6ga50(z2NO z*=(3~5ZmnzYkYEu@sPF4-`RD+Xg{t4k9H%&_B5e<Pc;q^NhBI zGs*Vfx?kal-_l;xcHD&ZZwuwrdoBAq&U@YC%JODtDG=WgX6Fez%`-&zYeg&BqSPx< zKP78o+}GKSQzw{cqn}ucx9~3mGehr4EZr`B@0dpuq`Ah9-H4!?VEto$N+EfE zKuIs+v{8YdUjG2AH1s^oxRT}IIIBMT=T7uk0CM|9J-;l&ph>d2k;L0BDt|SXgA$v+5CgEDNa!Xk1!1h>6852^GoFxgFY*sZ&km>YDfHPp2XQ< zt^?W+1{`y}P^^B|`R(2=vw(&uh~)zgn;4N`W3|y%pt08IObaNQWc$s(R;sh%q&)~e zg;-|8r~NhtV7J?i%Hevhv2Vc*#B{IOd}mpq7qbk#xH8g*{f}V;(F#QKZHKPm`7P5e zsyQ>P{?`v`U&if{TL-5DWL=$jxu-g~_w+j4RVreEU@E`Q28Tlk%#8*=Sc7m_?X&Pv zuF#J$pc$$51~_Vj{jonBA`TcD307yR6R@g?CW+_0f6|VW7bW4JxM6A(^TiU&v|$Hz zz3f3BziSvDg!x5C!^ojGnj|U5E!o604xR#NRFE+!p#%v6ct>EVyCdMmj!>dm6ZS?W z;`p)Rio@_N&`q`7eHGl-hdR!(_Ir;Yg*vNdt?>ktYdXm$C;k3fYw+~TZ z8Sk2ovMC{gCK@BSUpufSaA&~uWvm+qrBPcHJ;D;vwM>agSr#u;xP_bX>_9oHvG#qB z(N?lH2^F1T4ab1|E_=yZ?{ANHLu40k7gOANoS4LRb@o)sW*xBwfhJ=7_L0QwYhsG6 zb`3@|{PKy%Ds3r8GsU9h*!77+T~t)lQeynerdf+4*P}I)0T%hhcKhSvScBEK3DjtQ zld$+lJv4 zAnBeU*I!~o+(YgjuGR*lS%P}?6XPJWXfZCku!uK(ZS6PywYI`7LOG-vq#NexGq1Gy zq5gsDemvrub%sjAww^%iyb~c2eN_?0H}-uaOf2XC)_UBNlsu6FazE-p9UMEBVfpf_ zxZD<{by||j)a(%$lZOOHg#6VfD~6OR`X+dUuYU-B6r6Zge?Xi0N-~VmAN;cP7zLcL zWJwKou)&Yd1>@nGtub6=t3@q@`1_|3asrZXV$N_N3RAH4F5=&qIjq)188BYP`1zQk z65K=*!lbq=u*Jilt}T*aoB@sonRGiggT0%ol`I(HLn37Nz^ zXf(#k-=4dXIhu(5byi&eY!VidVycv)c7D3`ISUp6=rR#c9N&_dz!V|;$MX}AymsXg z?+-R#8lS?C0iGqmE$u2^tn&xWEScVX4;$_^$72yME3@5CwY`@@tU5e@le>ME)&6v9 zN@!tqd)hhLXe*s_nlfF7M+-v(4mSKCU z0t)DKQn-LphEpUBWH14W>)7~=w>=%^-d2(gSh3T3NEoN;?X8dCxUaszbd-w><&BNO zi4fV&T<&Ou1m$E{!3o++u(!vgx|<@;uRM#qC)_$?;Dw%a7xeaEGddb)!{48+!b|!9 zNr+8))zD;e-b8yWuuESY2O8`N81?omHP4ov63^VV+a8q~BZQ~CL?NZ-Fy9uDU)#J| z=SiyqoAqdOUwQ8?9L&X0o*F;BHKPg^UU)&Wb6}G>^FF}}w`Wv@iI`^b|D-?H`+Lp# ztSCCiGV$Vl%8cA~x#1EYSL*7mo{3CsMlFLxVph-iOpIyUd{5Zd?QN zG4Sg|Y3F}YVUCF_KOk#6ADyRCEq7XJmSfPeLdLQh$J6S&%25YdepDA(PvCS)l{T2h zPQX7jwxxxwpEsZaG^xlXm|*rMY>D^_qOR2l-|{!uNOVA}_33IpA4HSYs@!!6CD4Zf$@LCC<&e0Dh)%@XFm3sgVM z^MWcC&yj3ibeltzHP$@yfKnqXDRe-vl0pXr7hrnL8qF-kQJh*O1YWyT@V3fhSC@+@ z3zsPB?#ciH8;}L29EV;G>Dvc}pg1l<41bbYl}ySbt3>YOkbb3LodPlmQM-p@_T^*~ z(Xg{MUhbd>rw+QNfeIp}*4k$=iw$=~0wQH{_A+Hwf+s=3b_s8log&#Bg8_=PCu5k& zx>TZ~^AhLsz-$020XJW+Dq>YDZ82o+Vns8>%6nd?)QiZ&^uqn!azpK|%RLAE-QwjU z;jn68jz!;#6`4*#5@KJ;6#OVC=raY#NUV&>BU~s#PU4_b)|grd0R%<*o}er0O+^8$ z%?&ncZC84yOqc3D9Fp%wpW=wKxmJ}Ho5@ZPbx=^BR)IANwe=2E_hCF;V4R34R({mq zsgz|U-r*#ZFfMqqUQU7r_e|Y#Htnd0hiqtTA^2MrO#*D7Hb&EhGFCn54RNJO+atq^ zS&3d0wX^Qy->BU9M^s!#A_E}}s4Fto1@THV9R2a`1c~0jr{!-bFl-ixxBE?s-}Y>9 zkvL(Yl1Oa*rG9=^y0SLDh_-G{NY{w+sy8d@eVrr76=bydV6pU0hD+nlTgt~oo;t_? z{(|oJiA?+*RS03NsgdR-P-!&F29JLS*|9ZG>>Q~M_WPH~6iE`g|<%+X5L&dWR3HC>s2HRZ$x=+fRqbfKe%IJ>8=Wt5?k+9D855mR}RZX;WLN3 zE5jyzph=L|!FunxTKiU}T;I2Oe9Z%{3>hdV^`(mK=I)s3ecEu?9MnD0b;t(%v$ zPC2Lh;ET$kH9Wyxc%o`(qzXku8YM#e$u%mS@Q9vDCs+s*?sDg6d$&C-b_8PUt50mKilU7vjx# z4R_kaZh2SciN;bNH!KM54hPnR1szB^%eJ(5)-lO*OTATTKFwy|)aD+%xyo^>41jfO zae>fMecpRWy{{)ua@4^O7kz*ga&nL2bAg8{7dYCB?_6PN$@Po+o>ttxQwt3DTm5g@ zhu-d{_1yW=pzL3OmB&!__}}bdf4@8@aqK>KlHOB|s5LT)nrCs$lk=-UCmuOh@AxnGhM)HtX4by|JuK6l+Hy0P0BCY%1u8mmu|_(f~Vr5k64<?P2OiVD0pCur zZ$C`naUx}>WyC7w5O=y88@%28u)G>;)9B6 zU%HrzBICv8sGUeY`cEDi`qihJ!65}Cz*%zb18O$KC0bfMVZd5iF426xrp!5lLrqS1 zci|~|WD~C_36n(KeVfYkaH2G^tR%)7F}?AN%5*xocsOY=QF?RtI2tFy4PR2kiRHFe z4S44pJG*xw>tpA@8F+%DolWj`O~q61bA~Bs+TUA;MT=%w^%Y-MY`(4@~2>438jcnR6wU z^;=Ey4478{EV33N`PHpZ+>($nCaE(!srEnfxscbp4 zJ4ezc%irpL=i>~!=|>sCmK!%M)Q{0I(OT3xo>|%7l(X>BH!YKY=HDgu$giJ!?C;Dj zH~TdM)!x-n^e-03)A)A@l0A9@;l5{>clh9&xqHpKA2@6-owvN&6bzWznAhZACAWK=9CqIW4JB%rX^-MC;NgC`H7Q z85GWHKNem!0=?in4meN3`tVx7j>8h>51l_sdB`9dBd(k7R-BSwtv!$@Y1o?3#ImcB zUkm|z<@LpAig-VMkK%VS+v_eN<%Fh=Y=nufvT8C#a7TYX4i*FL$H8lTGD;DyR#769 zj~d|vdI;PyB_}>0WUUICGiq(07{P~d2{F>wZ=a3E=-1e;z3+#CuaCRrQjg_XEV~B! z?ei4vZcOG9U-q~!b_}V_bY}7>y^-y_%YXd6dUNWMiSCI;7bv0DnUthHe}(S>vr2&; z2T2pW08k!mI>~Zvk26cD@tDYzi<1=lF=QOk;=B5-SKqsx-RF3!#Y zO1JFIg?%SG2wvwap&CeX3!E-nWodEKD_I4! zXa>HP;+5J^R$0s4W6ep@?c2>0r1zsgb9B2`qF)(o(VA=X`bzYb0lBg-43)!r)UhC* z7^aFhYZd|J>F>D6%-MpDq86kdlIE$6`5m~kePNSiM3dy?T@R2WyAV>{hs*7RwbThK zDV(~w^@l|jVLa-;4h5FYq1!?j*Dns1IpbRI?dy*w+5Ra%&!)*Ju$XwK!*1Yd4|#5l zA8(~cjthkP&R?iL;93q%uD|D>v(KG%xa)^3=yL@Lp_{jEELBQF*bjlyI)_K=d0M-w zH5?g{$RUZ_{3|6A?uBY1o?F+pu!_cjhHtDxfGD{-s6#hsB1kZ9n;|o~17w>aE4eEf zGUOOo$V~1ERku)l=Vis*yY2YY)P;S;w`*cqY^L~AuefG+P-VQ-0n3}dF*5UUe=m#S z>gW*mP0JL(K^25NGN8c%??-5f2VhW&EXUaN)+ML$upak(4R0U3%tcw57bg@7m_Qu} zMFR*qH`!cyxu0yzohQ^AzuaAV$_?U@E-%0%GwF|*dpazJNz5vSRng*rm;M3CusTH+ z?od{I6&$EFm#fS%FWfblW`(PcP@ctB2J5-rsv&R5wf}n!O>7UtetOi*gRb`>rOJLP zCINQk2sl0rd?Pd0?K1K=PZiap8tbomm=a{&4kO+m&?mYJ5x7}jygmOGot@ma`e|J^ z$;#=X;L#j8%?(BKudsPSO-~7L$ofv=_9&6Q7S@hkNG6ZOy+g2?9jvh95y}mNmRAR) zvj|>^<3?UDPAo@6!-6^-t)UQ1%uMF|WRy5a6)J-2@R!SN?-n>fvHKzx^FP0wlQDpS zv)YstT!U;@F#yTp?aFFC8}fHwNVpJk6zdSOe32GJ&ZSlU_ok(RT2|^7HkCE(v5t8k34$?y-z zHtQclu2aFN#ghBW$12%4NN3(wVGPAUCIdl`$-u&~ z#P5|Q^`16PnQW%_SkrLCMUS&=KK${@t|4!JBks`?w0WF5gP@jJS3fiYfs3Bt8Gzxa zg(&Y()RN*tH}3L$rb)-WvJ-AI_|>Hu!v^T;XqwQjJBkb~5GwGju~S3Zr*h^ZnjrMw zK0(DMVIjZmYL3~PO)*D)QYpn)EYC0&Kw@m74DKj;qJ{sdzg9eM7(1VIF3bsg==%bg zjOtrVQ^auVlN6H)2|^KqMZr8VsRnvXHYw#4LI2y66-6R=8}BL!(s~_I1t>Uc;o+Om zHWCKaqZxuOA59eV1ep%?;vh_aq+lkp!7&8Vl0lJK%?+9N&9&(RF%as>fGM76QAP1g z8JE`R^-xt-BC`ZA@f4LFM`~a!Q#K-37rpB!zC_0=U_vd^_;uW+@guJ%QC|Pl5H)OK zX#R%8AcnSYNUUK~|5g+rFnh)Yg3fI%9vI=$D$V3PW(2<=bBuy-b0+pem4g#}nsHon zz(Hi(U9dj?B)R^Lat{%4^BO~>3y1fkr&+n2!M}J;F}}?!7S*r(yo@!^xFilQv-$N7 zjNPkOyXu?aaSQCZo85inDa6)XG|47UC} z1{WpHHw9ytI)%5F0j>-RIJ=DpMP?TU&91)GEq!sPZ4(kCR7~;xmliL01v}e_%@pCN zt{w=ntoE5hLHGiNdxjolupA-@Bnv!yTaXlKOLe%sDJqej%apA~*CKA9UU(p_D-Dd zW|r(TdTd{1m?|-=%o`_D4sw& zy(oM%%&Dwj1mQ^?tFo=Gx8tnI_X(2on3FPDYd}KN0g~(FfSMlx%VPHohA%^VXso!Mx{W1!n@Py6!YqT!xZ+XUkXtlob3SJ(oi- zc-9p`QSo6*&hO6KyT%B8q+LLBjtEC3u~>>GNyfovYX{4kCwL7eMxNsF{(YVVmfWF( zkYU6L2Rmyb$1!5~>r<3*#QX6P+%J6(*IRTav^UfJX7U@d{Kd5AM;!V zZ=+5c2Q>$<>L!Z1%Dg{i-5@+;HQb5GtA%Y=KTm}qy|A^ojCLtCUD` zFyWc{f)+&MkO%#he04N<(#A7m9v8DJs|{t|Ue4x~M=R|LLJ6cJ8M|CE@v2#O`#mCnwzWp^p-?;9PBKM-P}vt(dNH#v#)A^}#nryZPnBj3Zr==< zVIMqZ3)MSUuUufzA-bVsM{k-UyrJuJo5>f|!qBdD5HUvthlC}vRW9E2bWWQR^Vm~- z^|AadC*IM-hq!a%8=%Nb znZ_eG1n}Z*3g}>;4GRZcFftPy#SwQPD;)I{Ita1bTpqbx8QKYN3#dDY@+B`&(_(`l zdb}gis*G893-(&04%UCl-zv!?3|GGC2)a$kF_4uJL$Gg_7v>9W{L?cP2=2z3jt`R= zjP!TyKdm3f{ZW4P6-CV=k8@MlfG*p7W3j-PIj~`sM}vGhOIv&K)$e7Or!E^qxY=q1-%r#Dfu3s5x^Eoq!3#RkECq2>Sp~vS zhfiP_zrUO}0s~Efs}BcLIB9X*CQ$CI$k{-moFb|nFH{9EApHfeMB^<3qX-R^S@~N# zmCo*}=JX13CZ<%vI=@as+`3syJhIl6q9-77#VRfeW{9k3mr`oMx!&Nuh-yd*m>dw; zZBEFqSY<9I*9fS7mU3Z*=`SMU8BcpVuEQH5n{2VK_y9XJZ{l`KuKmdSRPAjJ?4`vo z{%=lqza{8g$XJVz&5$w^zKO<2(#97luXAEiQh`PtOSd_$hpn561gj{aBPtW=CmSK> zf=GuKteh~|;$)J-bE-*#x?&YiZxZgkXRF*vXrCwD+~1s5ktX7~9-p4!^Y}z-POsuz zr&%yyX+a!&_NX9jc|!#^77k(<9*H{GBqpEna9&NSrQcDr7t1m1PP~aIt?jRqcMK|_lDJWnH#^t)hz4mJf{&zQ&+%tu*z+X zs~)UWY8LJ^E3H1aAzV{g0JpQw^^NLQHz62+?3RVg=(lxW@N%gwvqy> zTI!|<;J%kOpsu|F~hjvP}aR&9cV9jz$p6<`s%DeqPb3 zd~%iqtIehtJ4N|xFe&bF9o)b#5$>7$6h2x8QcS0+PeH<}c@u_jR3?Z|D5$KO^3=x^ zYkaOtk-~KPtDjlzHp(P2#RgN|Y?wRL@q`QoH8DYv!rV|H>;xH-uwYZv&d;|rsAjIi z%JqpUR(L_b(khP1%w;}1uN2HC3&wCxPxJRm4V>qT7fd7zCX)qI$%5%*0kXNofzBoi z#$peG!*9aL<9HJ|SMdV);6VYr4_tTktl)R!{Bj9t8!_^jahU>q@qQ;rWS^ETD-dw< zt2n#H_0~krz3ctR#*=R;;rZIU(I`<_=w< ztzqLX;vI2)Uj*+`G-(tL&h{Kj%s+e)_tAP`cEK6w_{{8_mzKcg%u4BP?)?x`40cPS?$< z$Ar*Ph^*MWRN*OcBXCo1brVjKm>fgxB;{+b)3Mk&bkVMh2KQA5aIi<#gzpXpo*iBj zff^&xV0n{B1cUCWzq1m_fe=x}D~f#|aPGNXHK=Oj-QX4*qT3Srt`U8z#i;_>RM~3x z1)c0R6Sa=#TF}_H;k)-;6it)S$Gkxq4(&z|_uya*V;t#yQ|Yb_-(4{)>1lA1k6MWK zVnv_Ws81&QojYe@1{R>JMPtP9(}xlh5&{zZ?c*v>XoPWCkn-550OsFs{l;p=A+yTS zC+e+(&$Dlaut7RaO73{GQe=%g43KJ+y^jXtqv~P}M{tbIS&i6oQjYt1wez@p9daUl z-CKw}esJCysNi_5L)8+lT-R8Wr389Z^}gysYd^<{hNOJzDkZ76R<|!rfvODdXu__)mf)-4Xf*)R^lsKmWnQL@Qk#Ecex$Z3YJ{foN z#l1XSBk#a_{9b*)m6N^qTFCRLG^T>E+sn*@$Chbl2N;{^ZBcX>1- zRaKqDuyZN%+;>9-TC^0;`5NzH#Cvwy0n0>YLS1KTbO;N##O&D4VE<-{8hGiBdn-6J@$%)ktUW zb~uw$q~qw1XqT950xE9VQ;{x7TLpn4rvwUY`?!xPPk3h+t@_;jlaB%AMt}PBl@b;e z2r2(Dg*b8u5NrE;%bg>AQ4681om8j>q3IP6d#=;E9PLCfeX`FRG1SDc812NtE#$XH zCYY$5n8!Y?6o4;yOj!Q8>4{Egxcp;Lc<_{qL>xTTp2-J9^HI~-y?no4CxhVk!$O19*|pac=k?tbj)NjPEb zGKa(KpCPoq`GQfLYf?dc8Uu(?wV@JHg31 z9qZ+I0anZL0<4zf1z0P)0%Hb2&x4n{btBYBipGMc-?^f`@(SM-av{PrMJ&iIvqz;f z;JxbXlEW5?VK*otEbQC5ZgsHC&MmEzb|V%wT9l8O4({ZrDqzTq%j?&jzT@Q8?#(zx zG0pC3`x3hiX&?O&Hs1j20^>ZGuu*T@Ds!N&4S8;Cn|-crgB27SOHQV<@q$uiW9RU2 ze`T03YHWMTovJqVVcDVedq*)M1kP@#UAII%l@hkTPNB@%W_2{dy8qd@%|<-ZK@793 zweHKLGr)jjS0;&%(!v^7X4k~S_6JyVoHg!A*KA$cRU5@ti8+|IVpXf&A?h*vh{!Rq z;#oa|(F~iN@Xy+H2(e_PbZ%XV$8!;aU$M$ek!B;B1eDnF5{2NI!lNJXVtTt+bBs0q ztTl7TiS6$z{_kD6gtJhC2ahaV2pS3uLWsU%seCQ}F3BAyv5vl?<_7f0MLQ7@GkSu- zv3CfUOmG8O^=_OXKJwL6UnE)*_arNheT@xrDJ9EwsFaPrI@2c8R*gWp%@*)ZzQ1<*CcH?@h3{MflpA?es?cT04uxn(t>TKOrc#!ihOZs;HU6RNS-MDd7W|OyT(`4PIk+3u@|QXYlhH&?XcL1GFW7~(-AtMd%_1n#4un|T+!W@JcThNk8{C0xDnB=+jBOo(p~Z8@CIBt-hUQlGv0)82{a57>%ZV6l#PvSjc3FF z#pR+>jJ^l+rdtgs$QH)Ykvk46>DoYL1R-T%aq|}~ZJtHb5Qw|>lf6l@^|S9Odp0&2 zER8HZLGb1{Gds}~S!t^&&K)ORf?QV&i|3Bx>;RYFWnRkRs zjb_)~jpS&SY&`$_%Fc0k7$c6>3j_15v93J0L5Z}p={G!xhBK%GVC=2Q%|RH`Y`gad zN=9dwy_yp|FD_7nyc+h3)Cnq`V`-)${sY}!~%#e{5RvAoJHK+Mas#oh`)>z?F>58&9Rl~UxR-Iy%JASCbu__nD3~YGL zUdsqH5s@pgO=TZlI1V?XP4{-Vs~WlEaL!%y?5Hb~f)i4p5TnDcr%1%({yim&?yBsT zlIj90jHD|L;<7Mnjq&T(o7BRsa(;c-eMFkakg9Yu9<}7!^sq$)7@=SFOj_8kL)-ff z^zWjRBCWIPM=1sqbyr6v);Ta|-8In|>)e*E3-t-!Vk8~YtoN<|NYN42mKOxsWQJ8Y z{g_RVRA`Oq+CU}hHCZ|Z8e!f%L>+(8+zTfg5z?{{!A&F;p(dhCfTV$N!HK9fN;?QM9ElcH-gt&8!R#_S)kpCBnQX2K$7c z=ftmC6zzmOLx?y1Dx}&$Ce`kDMjR%KYJ1pXiZHkSI)tr z)%9AXs~_P%1={|bknFv5N*6`8f>x04&IV1o9jf`!ZPo&2`5R3TYU^)9!XN!%E)2z4 zTA+qI*d@Xo$c9bI9j|gvQw|MQgEBh#V&`RPm{zak)jClu{RJ-5v zqq+}|xC}*O1iAEgp|CstcnCyWz%2xLLpEU2>=4b5W=TdFO%mjW--k52-1&=95DU1S z0KcCNm^3>?^P^eAI?)WFw*Mg{d&QyXwS%oN`?Fz_a))bvlm|I9YJ~g9KZdlwPP3vc zM&tqX7DD}9Hgr<&u+5Kpq-#HbH|a5tNB?VyzLJ0K@X-TZi?W0s_&9;ynhl(^J7gKO z>oniGvNnJPhWHLiPlUkx{-olkC$gE^6M7;c6gnbocKn|kG@qv<;v?WuiJ)$AAdN{n z;s?3K8@mAd6rnyp+AQ#Fk2&ZRs{5TG)QstTH{2(LeJaByKxYNhPWZo!;dyoK5T=?8 zEYT9n#id7t+&C=c#{F*2%{lAN27C=~~rl)K-}DTj$1?HVauQc&;(9iLio zN}<--T{vgm+VjkFSsMzMMKvORAV$C&KD-F#7K474Xutc&kbj4s{JY=H`9EjfdShA_ zEQ1*$uRMxGWX>sHU5rc?OHz%byzJ5QB8hTxBsQ0mlhKv}Urjru&{bIJmBsARpHeVc zIlJ%}QoTT387DEbN|f05BX2wuU0EOriu%mQg!uzb_39Y(Cq6pA_}SmVo*>K(j|(Yxut~Z5 zJwM9v;N}^fy?7R^olyTf2K~K@Q9A8m2RnMarFa|vT0g+SCgtvTbIP-9O@>PM1?I=B z?@uYn`#s)1#f;IK)u$8&uw7PhW00gy#z_ABV#M+P4#7(3kw=Bv;RvRT-S36VI4w{} zUAubF8aA_QYi#?P)i7f%q@)(3sPvIVjD;)_E|?yr;~UxZP(qHrc}i#(<}^_%qe6Cz zxh}ugtv#i%1zUUi3lfgc`)KTtB(f0v9mIQ0HhxOL(bHT4=d5e~AT z6DfsE=V)p%Qdu-jO3TGclQ<%d21>^LZY~)e6lYWhci{wAJsKm_GyXd4_uNMpF%nX+ z%Y?aYc_wU9?r_bIa%AM+i%b?}!kmo3{?|7h0^NkH5RZIPNVS7Zs@?DTQC&qk=7G){ zjwWu#Itv*S3A`3VQaBW`Cs8QqZ)Bq&9}Z=6KFlgg`!|Vbnh4H%G6j}7Xf`c|w`OQN zi0%$WE91hUA%E_7bN;fdxY;}R(?~CTV{_Qb%*}2dnI`Vi(V?!KzZg~*Nr7U1Q#J*Z zf}?1jQmA81)NRsPx#>enOs+4(yO}?5X2|T>$1B+~Ukww>I0-xTDWQmNJR}hvM)Jxe z>*{RsC_hJTbNT5A>E74-qRwGt$G0p$<(L@j@60dW<0j++A$}$svQn*>=0~-88QL8G zjHU>+@YIm*M}F)O=ytFb<`vnnNx8$-obq$lXmoju;POu+$(c6j_{Ff`k+cx_KhF;d zd2vYR;AO4yGEMMj6`Jw#oJH~CkaQ6ElmBL3NXUyrItMQ&DK7aoi$g+Q-0$YRIJ-Ph+k%TBJ8_pu@M4mzoK zzZXiqkvS5|=0M&{(i2W(oSnXM}t>6y(GGZqCO!Yu23CgEZWjh@(jYeCBb@ zl>f%XC|!uAMDQ0V8qp#Lmh`*d&FOdAj0E7wao8=94Maf@Y;-?xe~rbs&eA)CQD=gZ z>(*jijgf|>$A_}KeK9N^A|)-P;M#0TC>2LpbE)Xql5_Bq)^&nlTU$d$A3d30yaVBZ zmk9LEY~ZBbA!|;%3H>YmF19vJ$mJEyRCDEG*vZ7Fcs{52L`NNba^!wD=g4V>IQ&NU zOcZ6v-qE8j;XYPTiQO_hjBBVVQnzhYv;Mw+G4goGXfBi1Ta{+f2S+0%>wY(vto9o6^K?~u zyNp&;qA5ZyoEY}q_K)WmZ@gph748+;@X3M0*PH`qZOmOgx09}`HtwXaS?zYx$B6Wg zG2{b_VQ!(Qqmq^9r}@|J*f`YW+x>3NH}oqA70;9TDPrE%)=b|&xENt9ik>p*c>d~n z(L)J2`kG6~bmU|O(FBKF3+j~Bx5X}PJhRdd}I&S4;$8}s4&+h`3B_P`oaE@uD+<9 zwN7nXJ1X<@!#1RVy30~g3qQWENhPFbkW62btn=w~U5u+P%`y;8@%tlA_K5jZrEuHA z@+Sn}?M10oOvokG3jF+sXL~TLX1=dk9Yv?uFE{e<65n~IhFP%k%el|VgweKoL)5`f zr#?5c3jCO;%uj2dms#Z`yvWkdPsct#vr1cO_1dV!Z%4If)>&Ozy8#ax*>Aa1GwZA^ zoxCn;;kRWQGwW<{`*GRk%u4G{ zI%y3^;>TrMGAp&MX)CP^vqhT*R5__3##~a+1AWjC#_z)dIQMf*Jax>Yqdd` zC#?rz{JiW1nblU8PF~-35-8*6Wq+GlZEf4hYuA)O8b2@Fo>^_fnhhJ)l|UOmFFPZ% zTHCty>({St19AMmY)59jHET{fY3*9*c?-WUJ2SK1y7g@(AO?B-zO0;CuWilR)os8G z0$E|%3o|ROUbkWGnv>Q-^IKS9+0M+0==u%oOD9ABTUcS)uFQ(){x$2@wr#*DXkm?I zyHhpI4bhAGD+Aq83qL+3qtfU;JeMwMF*KJzfwlf7UHkk&JdSAI5GnE78NLp!cbO%x z=HJL$5ljKhixiFX>+Z8sWCy8}Fr~_iXwjA(4-o!(YN#S-=?eK9);O=t4C#itEKDU z1!8l>bT6JHF$uu5#!cy(ot3&IKAYmFyBb!36NP6gEOWnUSZiOk`=Th?W28h0r zAOw>wv&?TJ={f>Vq%g*hpWBc+?@1uE z8R`lw-sV3m9CM3)7}@UHqB1|eJYC5qcqm2V{PfmzmELLvSM#F@e)(X!2GaBOVEpxs zl%h#~y|qcLwrGl9zucr2Qa|wPzc#LgbX?I4KmR0Mts8GCnbWn=EWiCtpOd1B$<&c& z-b?)U@%^bfP&o72_!Pfv9?GgQh;tiJnV)`pfvd9DxZRzD-RsuwH7|lz57wh-*nWK+ z|H6qgi7}!Af3NW6N+!&5eWY8Q#1g+=m9AwTP{)$6b6|Be!LNT#*MhOcN$in|T+xr} zmX^ozZ{Sb@6f_9ARto&~v=PUZ(p9;zt5P%9!B~?uo|&#G&%$=0B9@>PTf4+s&q>!d z1jZ}3v(ol-<*t$80sBtqa8%~!p>#FOwI=u6Ko#ekYW)1#bTwq`sSHDgBYh^3h{7Fb z#jT?$8H`|#8XnoJ{ZnR*tI{`b1D3dKowd2#Qr=_#AV)8x}*m@unO1f3=F#52@%3ryJs5Q%a z@F<{3$|~7jR3I67*G-~K*P#i5amBUG0BCV}MbpHbZityC5&!4X#mPZZYDN=meekkO zD9pU3x`rISAkAmO*Qaz_i%&W_FZ!7#R`5_I$B5T8j z6XS5paCI>1Ad1~DBPx0R1=I)G5Ka12=_}2On(H^uzM-h;)0FW6DIk^>-=l#k5z%s& zRjo16gPr>;yRhOwt`yRE+{;xgL(mXaAk~Pa?p5ywLf&1CN`&yRS1Q*-)~bLfucUDX zB>Nns{;a&UF!N@>TQ2EigD7et;&&+laa@w1b!pMPvE`I~4*l6VI#h`!2y^mPDyG;# zVn=8aWve}Y7->f=pF?{h2mUpgXb!`W*n!C}Y9aXdW}|6n7IZA8mB8q}biyP-j$E0^ zftx}W(hUZ<^uic{-uv22;K^PvTdr|?HlL0-YsgHff^UX+{_wg?e2$sM8f1ZqWTMww zAoug{lDK-#1DFcA9?cTQ`Ztg;oekQZ#ZuevUpbBA!|S>IgGM^RkU*wz3QT)i1=h^U z8gW@;(oS+-^2SVg9X^ys613|b#C6P@7J<{5d$`I*7HRXod$@mad!=V&i(FYJj^8<4 zCe@Xbl_YXsUOf4xy!uP4El{nY!G1}z={GU#qrHazAZ>k9yts>tEcwz4nkftOk0iNkb!x35G|LBB zZ3{iKq~lL-ReB`*@I!*xbRN=MV(yIIX0g4Jf0xAN$_Zw9YVMSk{T8IHi^kb<(^X2h zbqo4@KK{BW=71}R#rtVni5Tt zt|9DTk3fXiaYsks+v0@3@&9qeY?3XX`F{vOHnn!$l($1;AtwUogRVq0U(80wJv4_t zV-L+zUSCzYur^Tbu0+#>)OM|Q4R)!JwKjapM<L#;Zo6sRtI(T1*UV1Q6=nM80 zPraA9Vazyjwn+d4&IE~HUi{B5+v<4qUc_FPoOrvSLhU5_8YMnoubAXB4yJQ{G&8Si z&QUH`Zwl&8ywNa0fX82_-Fhg1H{rz?>_rmR4HGKq8rB#PTJU(2(K~|)rATk7S%yW6 zcKhE+Q5z#M*lD&G(Jl~pmT_>RA(|Gy7NEcjfe})Hn|$5~?9`)45?^?a6HF-Y`shA1 zF=S-HRdeS>u5eEsx(H7JS&-w|ppl~tk54TavN$*j@>kiQNw9Nko#v$p-mdmIimtch zKJNXA?hHCA=uYG&jdf@6BDd+jhpgvh@(>{uNa(K}!A~&Qcz>Rh_^eml?z_eLXvPQgv5t z0HNXNFM<`M_O?ynPbBB0ziT7mT`g4lL*# z_A)(yQL?M^fVj4P5ZgtX_bgxm*BV)rGVH2lJG#-bdkz04B$>wR3`g2hzo3e6@B{&U z>0>HK!#+e5yc3w)S2HD{7+EQlBj4i*C7F&eu*3%#^5*GvrA?*?@V`7|_*z|w*9GGR zIlp+C^uKnJe8kmP{Nk3BU+fXZ!FtblobayrxXP#L$Xp;E@f^npy5$pxO1k$(71n_T z!qidW#nEpzoh+S%HFlGVV*Vbt8|z5{Igfj}^B2|Q_T$7;W9+f#QYqPfvr@F6&RHOC z0SQA}xDAYu6a5cQ>MKPlp<>~Xv8-2+IJ0DFa~J^TW{Hz|)dQeE77Bx}35=8)LICYxC%c3Z9Pa#^US5^XqtAx@ryk^1|Msgxf@PvmjiRgU+{j?uw=cuoi_LbEA1Lq2}3 z{9t%3x%S1Mw)CKnr62tIB-syywuSfRqC2cu4)E`i2H?K;Z7yo5c5{-u&D>Ip#t8O* z=K!xy$bfzsGL6Ca*I#6`$g&YdU$W%)e%by_ICIX9`lU`>wyi5;YJR!ea!)l zbs#%zX|N5@6sUPyCYmO!>Q_jpT|1oVeeJZ*%#y%oZW47+9nHsRb@6B)ylhG`Ka+6BfY?xguJac5h)=velKu`#d3{yl6N~$Bt2)=a!jSM}wacHr|p~J1(Kx4aGlr zi?Y^Gd1q9dr_k|uUgt$oJH=7IFDVv0lIcXCV!=C^sWLp3>B`_#aB&pAmnrMcncx9U ziVqKH#>5Bm!v{233lC@}YmEobY|2h9TA~+qY}qLRW#~m$Mrc^tC81$y=bn5z1SPKS zJKyNp7zO$AXp3~!l3aJidK0F5?!Lr1|2Y-vJ(qX^YS~Oi+5H)1vq71hn=wcpyu>+i zvQ>p5JUXi;K#RghXJIB#DSUHQR>pX7RxN(cE|o7W4&7;I7)SmMm!`>|49e8K4Je?F zOa(=(g|}=SovekoY+aFP65g_n7vLdVS3o#;$kr9H=O-@nJ+I1;E}9IA%m9X1Zn@0q zhd!`6l`gt7C{mrAzRc^NxG8{kPf(`yW`Z)UcYjbua%a=DJs4mmxnq}mq%68JC?c%! z^w_&Pc+Xa4mac^-cXhNlcMNatx^brT-x8FO3|JIbjYTjh$s*X3PteTe@LaPISy*BU zU`t$;3*`A+3~OD3HMO#H%od2ZRZL#taSqu9Rb_RPVto$WnQ<0R&qHABlOooK^gvTA)0rX}6g`);IkENCGI$0$GAiBTY7BFh*eCj{&`+l@?*nkb$Hz+H7Kfi1b+a(F|eT zwMF}`hh2v;;O3tNh&<4DJnLg*eDGE!(3r5LMMtoh?-p;qt2NX|mDb{sD{YgcHZv}> z8?m(+5`6FJO1SKkb~}BGhmhwC(%?40z!tfDH$#Zu+Nyom11|0*NfLvAX5SwbwJ1sD zzKcxevQ^t**JlXhXAahdfb|oV2<>*bgBn*eg4%TuGr}xkjJ`nWioud7w1iyrH;h3g!rWGi-GLDFkSMe1tKALkw}3!PKe<;=QGric}T><5|NY$^{&r z1UC)BnGA{#^w;4bip*{qDgM=GtvAaW22rt^^LC#$_Qc;_chXYR~ybCJ!EP zb}83mV^;@*5>w^Q3w=R%6hWXx zRG)`D07mkVw)YPe*p|_Cu?MBz$DQ zl0qdzP{9#HB|}ib6(JOOhQS4zU-5ZLVPPWa!KS6`KTi_%^9R(B#2gRj!JTx1#gpVo zZq%A1pmw*oonW>ODMxj=3$oV*`Qsj9(y`$|lg6G+XT7Vx-=8}z6VHQ+?-0S)`v+?S zmF>9vRvGqKqN?TQV*X8>k6kbma$6a08IBr{5#-G^mA{OzU<=diM;O0jdGVK@bQ&+) zYvCd9`1EPagSdUs6yeU+wL@gu@f#}ndEk>JsG*_YjsWL}5qUL58+?&*@t~E{QIl<< zT^He;;f0&cCX;TfDrpZNQ4tt#^b4xkZuO|{e^LcoR~iuwRRFM3?TK0lX5*-WGa4Pp zj?S%)rX)D5Ek`OFE4}?gBEd6CEw1tri#1;YKrMTZ-{ z-8EG{rU?J$iys<1(G&qsTyhu@Y#y@9m`I_1{PM#KeK(>9Q-t}PD-I*`5feyNSTE z^5&>OaPL2?V0R&jLNrN`TdzEv6qlkh;r-L$gu6SMCb;g`9!7F^MCl2zt zqqaN~T_T>BUZs+gZDtXjJCY&mZjqf9<&QHf=q1;_vq2}xf$0vy{KGYb9lOyQ7lAux zY+_E<3PkU;&ECnsHfORs!@Q8|taIX;Adc5wt75N#JBRB6JCfXQ#(r8F_xDPBrelR3 z1Rf{g)2~wmBYpj5(B4Q1Lh;Z7Q{nMPCwXG{-a5rJMr=8GVGB?ylah3#B z$;Z<{a2GTLJH(^qjV*8j?sizHF@n3MAy_Aac~ZN>%v=)$_tl1AL9Lu6_0*~XEGF~j>k_D+o60U7X3WQ4G`wT{; zA)dsD!fzb7&FFl&+B-qqcQvDdvzQ*X$eUaJ#OULYRurO@jc*uakfC=kNWc@`lQ3LP z3+B@=&N1-{xd53+?lIzTYedH!!%Bm4Y~Ixfj9T4!ABNaH%p7Yqf_zy+&q>j}W`#YqLa5(x&^a}KHRT7ZE08vi3Q&%&OcT=y$JSjrV6GCblBq3fC#v%lB~pZeP`{v7ZTC@49dh#k&k4MPz%O%18eTwA8?Q)0 z*E-FENX}$?9V6uD-t2ox*l-=ib130VY#7ak-#bvQ)3(mls5ow4G&cJJ};81WX0_Vw)=v$3g zU;1fckB;y)OjJpQiXBFoFFlxJeBIR#%gn`pPQtgbU z*xUh`!|SFcDK ztMKx|Aa+|M?H}%w+(j~SI9zECY=!qpx^Zt=#*#`bH&B(WijLyfRn{>v7*^0=sUOMQ z(z)_QfxR_VTKzRb&Cj|a*hh(T$UYb+Pd9u`c^e{g?+fm3cz)G1( z?3QJ6Ghunr-=@ld9F+<1+u4A5L%u1D0o)K^>&iDW$(sYpmd+7e_^h$*5z~u?fm3~K z{F!VZi;)^`vG-{61DJ~9c0g+OL?u@Fo~t@fOg8l{TiyAuL}Z?h8R=UE^Lb${nr7*j zzRRz0)9qBGn`+i?Z}-={WS-gTf6Js=_P37Z_nyS>j>K9Y>xy9im3x>Z{ZP7Gof7$oq918p6Ec~nQyN|)5@SOFf^JMqhJPgMgf2TE5X|v7h z^FH+*7P9;c(To%PHx-Q}GIn6OuyemN7IxBo$auPI*XFg+48iaK*@*k=Iox{E2k#2XFDeZtMJ7+S7Dq;fril4n*-TXkNJIv~Tf&f3O zfaCp^VbKE!rt_mIw!HbrN}4W3{T%P^Ui$+vaXezRf>41dW)LWtTM17ciKa-wj-M(e za?gFMm&jqDtlA?MxZoo+LTjr-qHipO5t=||Hds<7iG>H0)Wbm9!h|M-Kx#_D{+}x; ze}PilRjKTcYNYV(vr4I~r4im>PCEDK&H^+K{b_bmWy(`H`GbAfkmpG(HxJ_NJyUJD zL#I6*E^m@O%~-?)Nq*CRlk~XyCj$}Elkxo~gSr8tO?}1!j}vt9e^fe)P$@Uw{SF^E zI07UxJ`&F|w0X_3qDidR=7X#4PAuM(G zM4GMD{8h_S;~!JL({+GaQpPh$njxv8&ua43o%v^d}LyFg?g8c(&l8BcV?ymVDABb0Gfy zHhm5P-G;la#x0DrUGYy!r5NiV%f8G`9exP*VL)BlMx79ig;MxMmG2q#)uJPS579=! zS0bJdDZYGpZqg9NSP5`jRxvds|*XD&>vNAksB}w&zc0+B~_ZiTq$Ho?MS4v`0Ra51(WOmK*G>@0ayZd-1{vmT?89@^X_- zbMwLXblw!}iokd(KY{fmKZ!wOjIl^k8L2)(8B)U$1pGC+?}=Nay!mubAZ{kuZ?G`f zG*GQ0c_?Z7mD1Q)-xEXA$YaH-E`bs)vm73L)Pgv5Ju`8MS(Va0j0uvM&p}Tci zG)7uZe4^6C71;g36?NtWz&cG&H|J!5k5$?VDzeKjfPk#4q`l@hb5e4XX)Un1$Ri-u z-YuxIM}yiTOu^ka<6f`AsFcXU$xl&Mh7L;T{B1#Wd1!E-T(-Z$Kk(7nB}pAIUfi1> zyrv&!5E`0K3L#m}h9POLUCVyh)j$9^4EmCFf*Cos<~+1Dg%MEHPKn%n3?&nH+YSu_ zVq9kVM9{x4sPMb1Ly|e;=0L7h>%`m^QyNIa^X`^deNK&<6MLu&nS;Z~<)JDR{f(vm zO~)x0=JN=gFNCwMKIj!hl;PTge$mQNGjTBPp`qCgL6Jr`f+DKgEkV(M!8R2ZSOV@0 zik#Bqp2|t_Fe;76BpRm>a;*=A)>s@Zg#D_ODsWL7s6_D0l4wo2s9N*T>ObmHk*ggCs~wxrjlfmYr%=pg`HGYyJ&6=L@lg(>>4Lr zqgk)KqIkj`bOL0mMcD$awwqg8eb`6b^u#1DWR!@0V6Bp&6MXYw-*8Y54gm+II~>>Y7V>v%h}oK0K?*Rv&qewyq(( z7cMZxfQMIY;QAh@4vY>~c9^B;BpY7vyhZ@H#SlYo{Dd>0VtPMkjIGaWSAj~Fy>PaZ zxjR^+%I{!>%I)QH@st9M)*#q$zOd7(Y&y2pjsM$0^cN@@`D_^euqA}yc-dCpS?L`e zz=gvxwtw@Y;FOIgKf$ISodbk2$PsE>LNhQ{tg^ks)?ac^pr}i(RmTb|o9x)E2V(^@ z&GyebReQMsoS0-R|IPHUJ~*prvjdlm%pWKXiAR z?ccglwa%Ow;F)gt2>Oge177vqLJB@2+tCDJ{)58KH-O>~GC`MQLuiUkUbls0#V+ol z7D8FuhI*>eI4eBwbnO+h|KpZV3)%k(ptcj*rmdM!x&7m?WNiNcn4K$3Z@D{oWx_jZ zo5JN8r(RAN4Yg56*oswF8w-SR*W8d2`WQme!8$`IZ+pRQ>;e5-%Gu`VpLl)S*G0-yvIk{a)je%w#J5(8c9H-mu2}KHV;~61jw;8lR zqCMO);T_nK36~T*Jk2RSXZ?9N?`mF%86&v-nFO1;rFyw)=t9W%NLmQ|pXY~!yf~!I zd4blbm5ru};MQ^|BxmgxLVXB!ir{wa%mhn%9hwY!#Udz~I8$Hk+8>n(t>U249w?xc zT|H|Er?9Zc!3M8t+|W2NCmMX_AFIxg2T{ja{kF5TtKrMZ?#S8hBC#IENncYBmW+Uj zq;KXWA@wC(j4wFXg*|X&Z;k9IpuH(fOe)nPvo&;`mO-Ip=7KSU#~&g{kZIAXhhwLig7cL9~Gb?7}}T zB*qdS{>jo1tCtjLvl9$);=2YaokNC$GDg(d{YZmxupUj3iKDw!bf!@_Fx;+!4wa;y znZw^vf$gv9O9*8wEtD&RBEvA2U5Fj(JJNdl2rDrs7Mo1<3LgYFTY*9Ef@T@d5N~Sy ziku4WeN?OmP-}z#Em5dg9>ciUa0up%%1CE4LCzl8Kc}R;lMx5C$@D#YKFtH-J_{I?zc1c_15@AcRTqJ5dd3JJ2~S zSN)<{g8K1mw4W03uQQRnf3Q z3TMd-LlPIs<_jxbo6WgEK7u+;NY8q$LNpQO19x(+pol{|8HeXO431TG7>A4r=NE5K zkr+ialhS2=QeqKaJ zisDZx{v3<23;B#MTg+Mn*U5DfYMH=*&oh-|csGX^QZ%FcaV=E~q7G8I`>o2jxrTM* zUUvUMnK*ICLhlNx3i}DqCY**2xB7>*xWyhi^>dOGb&!M~%##$|T5kRvaAUj`D~f1_ z_^!H2J50`PpeJym!adiBPBfi^7uS++BEn14SKcI%ePiKeP;5F_WYJ37|u&aSGNN~*gX^anc! z_D9h>E%syIqdF8DJjN*%qvz7G4VmyTiVDRW_GOQ!7=mp*XAYm;kLjjF1gE`E*|m?g zgO`t8;hk#jJ`9m$_hGFT>pl?SUm=ZK7t`TF_Rl*hBQg@aAyezOmrz@a&-fZE4fNYQ z>ZRgiwOwVPUfIs#4X!vT(`|Je9>dc~#Cg+CKx09V?U<-q+Nnn4_udM8D2ebWpa7~ zFEzMn!QKuC3bfT^(28Rd8XoIhtKvE~bF78MQL@&9egtbR*y?00m}-R;*Oat^%a|?{ zd%igj?bgv8l_;(Ln^bBeaEi=81$}B%ayUO{c8+94ixu@3)fbv$$jJ~a6o2_Ib5K-) zMwFq|a^JE>N_O0$6sh!KI$WP=83gOfC~Hh*Nhx0KrKqyT?3Szr&gLs?9fJiw2EhYH z5{5`?L$}Il?ND{(RP%C%Nm?0|$>@e#b%4ags=me2;t8}{ILtJJ;R#g!VZh|zbEu4L zH&q7*JBM%{hZxSeT}3<3efStbY0c{zWGwR=-=INq6nbG`RkOzE)l~QZa&n@iAKu?x zF;oxXC;ZP2lKbX6G6mG7^~7*qbQei*PN^E2rXrGOU3Qo$VuDysxib@6ntOTI#rDP{ zzC+~NX|2gliwgiUkw>BLnTJfIBl|kdf(=x*le&?w%#+G4)6`P=lZTkf7j+KzcVhh@ zgpQHG{;#Xf$)V)5>5n z7C*=6!RzOhe&fW0Uq7Jp>aT2Y{z@Lh!aie!N5oxtR#XjYH4|m%+Jj!Pplj>Q_#0m` zw|z3Y=Im4SP0QFXzNHM(--Eq$Q>NPE(EXtg2=~YNfb?(LQym>V!aj$%R4#?$zunDF zru}L4lG5?FAwwq9F`1ksPN^@N+e$>U6vY02SAq1`cl67o`H#W#;fU{^YSx92`R9XT zmDE)5GPsuAnNc>KQ5L>P&RGwSkGuIyosOW0eSw$9b&7L~-%EXwP6v2;+;y3(AB^4v zWki7I#~n^0mQTI#?#i?t9!_^<+Vglh-IcMM@o@Uh({}W! z9^pN7SESGoesL`o8saZnHfJx7a>mjr-1To@6eT!-E`v>UYM?d|-J9<7h4n4=TsKzC z=q|7;Z`Ll&8~x6DLe2*x8@M;HuKf^4Ww%KuG(~uC`<<$aT7%HH)iQYHNq;w7HE_sb zBqfI&yka-x*olEx9PbI|$}V+Ng)l2)EqF3-wVAR?u1-_a2~!wNkj1S_x7s@-akOdI z%CHkhDhd&d?gcoNW>VW&tqw$GqQ8C_$;hd6!`X|XT+HI#iAbnj?rjl|KX|9OsmOTw zagt;{>d}AM&AHZrqZo+*GTU-9{ZO~x8#_Qrb%VnQGeOg zV(p2?5HF0{N$1&5{L7|S_QH%x4EJ>64s!>|{nS%Q_FN{5GnU2};XTY@C2?M&AFc=P z-xI~ZJS`?6*uMp?luRxbH)9UV8Ee1QlefOA816YIs+!3!^&$yu%#f-#7nM2~NC^lb zlA;s3+hM@cK+EC+6Y(td7BN9x(jE!{W-V!nm>}}MIZlZX%ME6>#-~M;l;cyNh*4+2 zd`v`cJKcplot#031iy+DteMX14nYcwiCenk5@g5 z0g@%92a|sJI__xTheqQ0(x5v!EnIHclkHD?(&X z`ZvnsFd!4_M{G4>*}gKwcEMr9W~X4HD-+G06GC)fIc(_a)!~u9t>A!o2NBd)DI%k< z4=5t1uUeASsxDlO8?i&itm2UXhk%xyNPsyxtkhTRT*sd2LA^8ZCdZO%-=;-Gv(!~e zqCx5!8I~4D3t>NLt>RFx3hM{wvvL`P^@Cfr(9xQ?EIwf2(ql=XBUV=#;fg{HP_UwK z1}NCl&D$)Gj#V25TUt~`GuW~m705~HB<%(ZNgL+pg4A2B+6R&qLi;*}WSCya+QER5 z^{#?AcfE>P0!Qb%6NvVda)*;|>cX-Mj5acE2;K_W5}ocKp0<;fbXjl(XXIqV0OqyD z?H8!g2xc8_&XyXQ5nSiQ<5U&1OlT*nw?9Ww!gC)rCj{KAh6Ubk=3-r5bndn@+peBp z9yHqO1h4Q;CWz|Gn^me8nurAUV)dqnTO&*dD=^jYdos$fG32zKDvrgQTb8jXT)c5v zhQ(V_>%+wx8)EV1U}@~dH_YR5sW~#{W;EkvbX9n?QxmmmKP_Yv9Rs)*yQ0$+)N{9L zA0;t5HPeBv*uuMd@oCHCe2Ur$v2(X}g-Ut$QZG?0doU=YZ5az}iwm(_85GL)-gr=u zVU!q3xhJSa!Ovl*SPOP4**!2*u3t4k5|}Axx~>fN%-OT!m#1SZR|nNJwlWcvDT*6{ zGOafmlo16~Si?8@9&>=*sg49wWPBfr-q>B<8awq4?c984h|1|qBhzGdv8LJfyJx9_ zBm?fCxDnWdpBK{OwXw1u4Dw=9T!Vo9|N-o-@88XH<_ zWVLa{zk_T(tuv5W15{3zIYR`uE{H0;brCm81IY136i@6+N*3nZ8F`g9?6)hkl7;zB zN;VXukt~GPY*R!9TXrTS-&nAR#BC)ikjqW|53OK(N1`%O{OO@aRf(eWEjJ(K-z5)` z0JrWwV>_;nbYg8hNmSn%P_+?56$>S#)0RP3HCP%-iXO~X;uF53V&@uj+A{qC=h43-8;jY%_>my&g@-K6 z^XuE{yK0rLew^@_BG|t=Nbq@c?AAT-#Ex0o(5F^v5tAi^cQ{B3?v}H5ZhzruW%wf7 zIe0mjppLsxiCZv86OljFs7Hw~j<{ImnCzql!!DbbZnxmZMLlXE)Hf=0$p&PWF-9@n zMmoj0JhhAo?=i&ZhVYzZfN-3M-gK$5Be_QVicjw0ayxeN(cBBM)L`T<^*j3{sE{J4 z@nj|M`&zEYiG1@bl?b}In4i=omlOV&`Y}Nzi?F_MMS7XXod=TwI0vqPP9$bE4g2MA zQb8uQSRIsX^;JwOl=$RYIg!&ICnx*6!~KpQb!{v+@i1a?6Mv$y+)^DW7xKy!-Nsj| z2%GjJZYStvu~>#U+B+45`a6x)N_x>!K+J!54Jn9ApbjSe`Aax|Mm^%D7w<3 zT=u#c^Nl(Kk2IOSY^J`+c_T!MB%;LILVTldP`p%=c6XC6E(C|U(S#D>kr>JtL0_dP z;sEDy5?RkrB9{gp7MUQNE5?;%tNa~)fHYMciKvM1lm+NWLTj1{56R--5RVc2i?35E zIN)*U!wqE?ja`~5!kG_OOV5Df%!g`iPR2Y=e8dZI-oq8p2;jVjGXgBad5>h#EkTh? z>r*at?N;oV-X?jNm1 zGemgcLqr_c>ZW5sE;XkM&snD8e#?Ct=Rr@xfP)qZun{l$wUjjXj81( z!3fpJ9*kz3{Xfio33y~xmH%r@VRRfV7qn$u%2Khrbz+*$2Dda#H{ICX6r>wk6iIbb z=@gx$id3aHwzwhV8fP2_5j74YgQ#N^7r-sZBB-NLTo6&Cqk!mW6c=c>|GDS>&bjx! zdaqt3Ddzjn_c=vwzxO-KJ@?#m?mhQDJ2hx0HL#pMC;CpjSgTbiK&E>190a(0I$m4k zoViP+#B}z?wj_=@Ny?<|qmuKfs5@rocz%HKJHK;pd&suNj^Sc{%7s zr>yDk9a^|g+X`k$+FR}B^ON+9TThP~5}$L-g6QWy3*z(?Et2DdreSxd<+3w)_(h)+ z4VsOKC)|w@y^woB5-9WlIrw}mg>!8WDMbucchIDX6ynta!TwB$hW7g6rBDhpKz`zk zFNIQo6#93Z6p=Hh0&Tv9S=}Gx0Q@2)fICk-OpXaU)pVm)Acz*Q2S8Uu0l(?y6khnF z%1D`JqKN*eTW`)7%DZbI+c`}q4|qMjpc^^iOPcG*r9)+%4+$SCbp<&T!SgF@%S$a zJ7!27yYwODNaO%LA5Q|-s3cpkM#ZM%nx>-zf&SKwA_bJ{p?2F2j@8a9jy{X(0&E#g z?z{_vIpCCT0$%KON-tlGmZGGpAhGJ^mPkQcN;*zk&X2xg^;uz?R9D&!a??%8z6fV( zGYfG_$wY_@hMTrs(+`*dQ`X%XF+89mqNt+dxwZveNlZFA=L*Ghu_)~ zDafUyq1ICO8qtwL_=ALh8z7PquI}11Lo6T7S1(+)g3krB_+Vi zUG5S9Ti@euaE~KrDtzz>Y7qLp5ETADydeH9Ad3)u#j^gIucnHiG?pL&RVht^QvJU{ zu|b9ue2E}k7#CHV7DbH)6QJ_3C^apMYN2w==*t#w%>ZWI*CWg;95df~{nmoF%dxU+(TSO<@YBt-;a{xZ!v;~Kt^^Wf($&o^#m44PTz|mj|biNU#r-gtmbTsf-X>$PTzat`m0xqJb zQAudKx(ehEL@7Mx9^_pu%{Yq5Y)=F1$U9T}TFIpJMBI>8qTJa%Aoi^9M|9OHiB>ur zByGhl2o<9QwGOj|-WEXCTNOz6-xU!-5mUQ+Y<#p%w+26-1713t{rqCRGE(lR%Pi>= z1;Gz2?xXO#EMwwHCp6 zKy^hRZ@VMPq~|lHfIcoERwJ!E;)AVVpE=v{=Q{V+F?->?JFw({}9{yzdOFPULB>ANoJbZKdOVmYG`t~Ru zyf6I)LnWBUbBF#ABPF?0&GY87qS>&D~9wD4O05LJxgxk78t8*{^x{poLT zZ&tTf&Nv~c;^_-pe2cz3YBlxd7GEIFCh_Qd(_cAdY)vqQ$3Bw&_}bBdHNiBV`<#28 zt^=x!@kgtI8MN;B5qdbot37emAg(kE@2^ooeZ%i8+pQju=8nZS!L__1(geCPWG09X5G^HKnlG2f%7wbB*3bCKb{yWQW!rg_4@ zC<;V3jGF>fP`a~KicxyN_rG9C_`F0r2h7aRbOeplr@!e&hv$#i2iJ5N22LBN&Acog z_=-HpAKFzRbphQKN``Pwq>(3?hW zU(=UEE%X&X7ZRZYA|~Nokt-xzJ`_u0Gj%^pFb&wJ{{rwGwE8~AdkT@2howp-BvrB; zNS^o0W~7%U?fOyes|k?l{FNxOXHVLu-Ed4qbSk1|;Z-n|>fmAV7 z0DW;@07FXPA>prI0FH0z-$kF5nZaD>rd9xq+;+gS2^ z@icGKbmrF_r@rb)<2GFFs9G&awYg+!KY~f%J^KDwT#fV^hAlz#R?UIKEZ+Rmf)UEK z)yD?2c-Y5!k5eGDYcp*zj0QO%zvO{7QK(mf z9$?iT1ZGD+tMZlkXB`hUoZWA3wsjvzqJlj#8BYfD@AkejYR~51?2HSW`BL5IjB8sZ zm;l8;3gt{HAyrl!;Pxtg5;6!5S~yDXu+Fb-jJWiKI2;LYDI7@@apjsAW#_>mkZjBf%A`ge1jUJcR_^AoHb@!sLYO%z(Wn(ECz&ZHx;navDFiLWr*B zwx7tD1)=9}5@niN60&SpUMn9AZmekbF9>F>D4Sr)V-t?kzY&%+8S3OleGF_SX1c-J z=Y>Udff8eWy`^`M@+Yq-sdbgHvGHns(`a?PzTO1S*fN^|jhCOS`lrr5^&S|OuIad7 zH;U{FF~Big&uz6ZDeB{KrN4cdxYA9W{Grp;xqdj(LP?G-XPU%H4u3*vNT} z55X7a(=Mt^75pg$B1E^ZcnLw1uCbA6kb^Ye6RFz5p1sSK*jorMu;n>$^3SJ3P? zMXjPkF=nrr1A9A7jM>fr(&ysOmg|UTTb9M$3?jGLWm&})_O z_uHY2=5E3Fd0D&?oQ_vzCr3w|IKA-9sN+taizC@E@+8j`YPUqG?rk#q21n|2_c#6j zm0f%-v$*Y9fE0F!DbNL&#+igY8+@JT*>HNpZNAF69nU<>_cH%On2PjIaEQkesVNW+ zR=iR;*;^i{51FCun!p;{8JI0QVk4(#$Xb!pEV#NQ8;pDX{=(@ zONUCt$92%zWS%9xVb4p#8=Yf-Ei7=}3)#ZBbrf!WHNv)8TsHUX^nu-fDM#5R^W5UN z7GbE>`w|a-pNFm+G{n4*@wC8ySjiD?GbYqBm~P&rn?`#1f*sTBwq-K|Wl8|KtNrQR z6PAvOj#8lzUBw9r51b>C@_6xv7k7iV2oO?e#GIVxO*AmNDFLJ&6p~@7BajUiTHCoV z2zFa;-(D52?U*Gkc;-P0H|MCS(eocHjwc>^rBwlWBzqH!({#62!Q^S$jD{MWeg~&3 z&jrU#h4wno)z~&@f)vpWxa;F#BYww&O|T2Y?YY4W&^}pfh1mwa`hyv~cwSxlr*RGs z*%6QZ&V1s)JhwlX0M}PJE3Q$ zyhsI2S9wh+>h@wnnVy=S$yv~30^fU=tS!h|pXV0ns#6%MWONyEusL<8(r*;%4wlAN zcAa59mrdWav6^|`d7@^sU?9^TEs@f2YMjYJ7?{qcfbfO$W04ZZc?ju*{lw7>-oNyM zSR8cxEjQX-v{K z{XzEbC(S~JSnP&K!54F-L{-TOM=ci`x-bVvAPtNUk^t?79P6a zEn2>z>)moqkR7{x>XI&u3A#c3@oxebnb6*bZa#T)T8Zu@AugA@?leF=w$x>mYiRQ> zx*%W7+;!`Vz8|4aeU4W4j&3tI9p%8xoo^M@zyLPtt1_Frk;a>bI?OOPhoxSz%DC2@ z#evh!v^)p&ue{TzLZO8pMSb$_4xWRE|2WF#(dtL45fXe{vMt+U{4!@o)A zghA|lB3@ZRAEk?{5zy{^rWycXKNZl9+E9@`Z$uqf(S#~inGzIcC^0ol&fWXWOY!pz ziLePd+&l>V?XqT4D7c?VIcyc~2}#0nRU3UO#}aw#<;{pKEM$vlQEvI11c{yR1E~%Q zVGG0K98bA#>Bg$^;J2|(Dlwxsn#4A8Ns=P0tAg$m-``ABnM729ZvQ(Xmx=MHausNA z`;bV*tF5!%=}2y%JCt;^$62M$^^M|~`;|)&f(*z%0b^zXJ4)%l3iQQ3-e?3XxsMA= zoRIhAKlnu(YD)aL0QVptF!64EZe-L~5GCpTwAVoe41w_R%})tGMj$g5+$U%44Oi5Z zR)`u{KLik3U!k>A^VEyBP5cx zfjUUMLx9hhG9zJ?{k@hb0#u?)v)uMMwW+t@VI z*hEII;}|cJRY#l1uC)owl4a{1Xn2uqTMBFC6g*kCycn6>TJoxyfl}432D*&E`UP_L z=JUnICjo+2^d`=@FqDE2Gc3YkC=tNh(O8t@V*AfKY0Y2` z)U$sPQ*T&=t&Gu^#3|K~VTcpWMAHkIk^6hR+8o_48F5pe70%EXx~u;xT8Iu}$kC~$ zD5)MZ;FvN>@X~Ek6-mjFitB_7Md)#=G3_k(8lTEIr2%Bj-u|fX+$qQgR1bLX3r@y| z5JED@tmkG9A7-Rnt5Kv$P=UNZamXTY1}X)+kRWeA;YmR0C=ODLv5AkNlQ{Qya}35g zjQ}0zGW7i>D&1oj;rn=QARn(Uas&BzZ75nBB$9r*fk8)ZT}GG;I{&&M2{*jUgxF_L zAA1oo=IrK9wAT*l ziQyinlJvTZatUa{~DqtHBieniXF2 z8x%nMWls@;a+kpC$w;88ZHX?DnS+se}E^j{F}*L_=Pyn-@u*KK@5XLs_8{puOVh zqENGzq0~$z2`Rv>ncI?&bd@?1ynNja_z&e`$wbznwaD0;4$yV}<-m5B8By$F@-)Ej ziYL{MH)R`2)|#^oJ?x-Q6LXsfpKgnWEW5XziT^_KuP$zQmBe>dl8?$46+_7}&dy5*khQW_^ht|MmA%c4j+W zU65`fNQ+OoS}N@hsvvjB(TgLi`!jJA$nmT{WkZk!_7y@SWCA`*MJvQK9z5(AFco?M z+pnJNO_`|dKHaQw<$$&A*jUWQY=+2~7kM0cn~^5r=5ZwR1y$@EWm>v*4c?c?#8|u~ z&;NaaSlk4urk38t8-0Jv8k-zscO4U{XviSD!6(PxC9eAOhjeW0`dg|YM; zlGi;$#XY4HwVui=vQqODUHTFlqCEO0Kl z2h00{NdV8iIGzBC#yoTq?Sn#GnPnllWs}4*UiYjwEEdT{s2z1Z7RKax7 z_5T;agdtxru6ME#;5kB1I+qxpi;gl}BiKmrNplRMX5uUaxMq-*Vt*>lWq9yy@8_?-Xxz z=Ek#V!Cwrg=Xbcj7m=YL)Ab}^v-eit)MLmRyx(DFgvlOX0djnOtH{%6YN9cZ>4lFN z<}hxo$R2>tAykgcWEQ;j6k@F^W=evBoYV2a&mFJSO9Q|b%oBS>es&HUH4N+E$4wt^ zc5RJ1YIG{RyfNg;v_meX=|~tV?c+S40G^(Iy6}c>9d!1OmR+ueKd;1hPz;t=nhU|IJ!oBXi zNE@wNYMbd1@&mMTFTtbT*6`OXu?Ikll)49iCfbV9CexFIL|cW?Z2@vJ+Qhquw6LkG zn6l5|uWZUbhrhH5L+OdUNt&a1OzvQn#ZI^W8ScRtlc(i9W29NF$FRM~YXlp4Yn4v; zL9MSG5%sppwX9rvYzvQ$ZIg*sDN}v-jLlSiI~u6;QXdC>p!~&Aa1fR&vbLC^Rs6zO zg+6svqi<-Fbm>c3yM`+}yKsN&EQma}BE-zFb00&p{JA%d47%~;o0`61gFT+8Kxq=s zzp*Nc6@|GT)P+@VVmiXCY(y2tXLcrmv}O#5bbF7xw$Lo5(f@)T{Ohgq6mM7QVUUGf zN+^)CfO<nG%cu?@F zMACVc6^md7h(qH(ySgm0P<9o!3cPdo#NvWur4z$3h2q2Xf!VH+;%*d6*iGvRAa2?Z zWc|h+c_ej{=5hioTI&u!mB97ywn5BC3bsEw2DunwWByijP{+Xd$jE;4P$55tiiAwX zScZgh^c7ZiKT?n;2jTqBV+-%*-s`Slh?zE}3TU%@bRq7=7Ix70ub zf)Y&Q)qg!8qSraX^X9)0Ca0<{c#0racke0`Y5R5xXiq<1Pz}LT205NP(ZvGb(2Mvg z_8Bh=VTyfP$&etTsM2Gow0A2J4RYY&i4(#LB_I+D%RJsOY)y2Ixg^ zl4AaZn+$c7?OJUS6|qOw*3!Nzee={hYM11b9UN_5Uz3+Ub>h8@mX5j*UgRL!Z$!k* zZnA^R8tg#GIh3(dtunl)bec5_)>rUqtEZRYcUe^993OS&Z#Y6`Dlsa$=g|1Cm0i-= z1wed2q0DBuL<<@8wS$s_N!b{A72J?8mNX5}%xloEd_R06__x8Q1D9u<8XP!XjcUNN z04=3}|MSaqtg%|M8s)@*(_ya4$Vg>0r~>ubuZ?A0$L)vEgE3eVSOQ_~>(scpP>+np zO_g?Q%^O0YUQlX{)}d<=6|Okq9AmgX!Hm2fonQAx zu@}3dL_X}-UU5U6K72_{lo5!5cbGA4+J1MTj{J@h8jGfl5(OD$9cBCKpS@S%O8trl zxKc_dq?e_XfgJAXzs5|8c)y@62^ROAlM`JLEh$>rgBggt`Av&9J0KN+F#HZtBJ@R- zVyZ9E&0QBb-9Qn3{TQ133Nq-%uOP!y4|o-1cxu8++Q#VM4E4sPjdfa67v{hAStxZU zI|zF2Dp#qcAGnzI+B5_6+K}MQcz7mxvNj-gNdATzsJq3Zgu9Iw9y_(;GrZ`N%|C8) zVkcU?pRk|jrz*7muuDbzTs}imt0|e#&kCqHr%LTh$b6D4@qDtylOuJ}j%Ag;vkX?v zE&t2>nAeua4CYE^%Sq)(w1T#d|l>PM>84!kz!QXqF7j9A01k!C06D^dY>HCO`mu?$rW3K#7L9B(kw? zlSVm5?yH}+mF%}UwsG!)Ildc6`#ucB4xK@~WDkvm?Je$c!dlQtB{urrG>^d^mAT1e z7-7^!HWT3SZNe+hw@N~#k2AgqXlSOL1m5@mOLWjs%Bo7CNKRK^d0M4qVVPaR?8NvZ z7P_@*mGYkP{`$7!uC9|P+L;4q+dnG(ZW8Wgm(R%ry_<$O^^V)j5D(Rm;1LK%Ly@5;peG9Ewnb|z8im%nC_oDK@%N2 zkDXas zM~PX;*@@mWG0u*yZMh48s6M_{qS6MU9vgm{Y3Y=~U=r+pT-eT($Mm@*& zj~jA@`WW4uIfM63yA5Kq&gJQ5@9U}y836(H0pRst6aB$@AMi4;I?F?jM@0MAgG4b7SWS^;s>L1@MuxzE*{s4DN=CYT1=1#h|aHLoK^Ti#vx)r0gEx_I{&n z`0H#*M%fbR1Mrq_wvoUH)teXrf&x&_jYrqWq%qy&TT!i!C-Cx%zb6JKYbzi2)}8Dv zkDdu~135hPyBxfbw+lCrm(vDhLFBy}*A2*f>6mwpAg+DgD1#a8rS|X@EvW zxxYBPou=8b;r(I*lJ zinM_*NhH6k4RFQeXg3YP^VY~N%zZ*+N}B?> zrKp+MRNH`YUh6eM^G!V`kKS4DC6=Eo%r-*qI)r}xGdg? zxVgCBXsZC}@>!A69Nsfpe)IVa21cKCSINzQD>2*jZFkwj>e$Eq*NJ_Ed#*1IN7ku%wS|DZkX zGek@Zl$R^>8QKt_%}gT|Jxw7EZp6sc>Rhw1LYd7lZh>wUwPtnrsnOv}*K-?B&Kr2$ zQ0?hY5*2gz(~PFdk>U3Nox)vI+Q+WA-6p+TC2_U>{7UV4pzr*jc z1lyDQZJahN${2lzq!t9v1PXqWP=0imofD!c>x!eSnBZ9!=kfSW!by^eaC*r%zKl z(R8oZB;3w>TnM)hcy03B#Q9EAdF~Rgjr)os51Hs>y^g{TZ2}up=R1+mbk+HJ`FL`N z2@psuj#8)nw~dCb_1<-11O3B{_oSQm=^t)AKQ9x1hppn6^)N)dJ3LWDyg9FpA_Xo2 zrwB>1=&+Zh(nt0MGToVwml{^6E8rB?FdAr+^A2`OJgwAUqPx4tf&zx`={+)xWpQBM zTO2@93e~P?eZ~=Jqtr>Vpp>FaOWAJgGQS$!Xg^SMw{{{0bM*Hb_qWw4NhNx5QW=-D zg(v%<50bodok%3!hH^NWxjRB$gd#7A?K&h9G#21B8|x=-dXyU;HPqt8JkCm}z2Kg7 zMndg7LN-DTeJW0-zrN2z>{9q@qe?@zQ=f4n+Zk~k1*G)w-mxd9f&!jCYD3&xWQhna+)0~oaKY6GJ$U(<8>P!QeDv;jTv)_nH+i~& z_S};N)p}RT?bQq#(k#13LMl(*kPMGT<}`Hri6`cqUKJMA9I629IOqm%zuzo8a!TW; z0%E;njmkC?_0E04IyX9-Gv1D*D5&8?xR!04<@spcM0XnJ98L#YEW?*<6~=j5rNtKA zT?qA=EabamZjz726=_@BhNcWXv-%NCg4VB2X^p1tgDlTS3n-d&58t3Z4-(fEKq{<0 zHEVaoEo|1dcW3Z+y*CzR!KSl`wmBw%b=9_5Oy$fS0}XRVK`X)79s6J!AnUg`2TO{8 z9Z~@ZGx10eRaR--nAl@(HFGfX`ghNWWvEsh6DiRe%X##0;;~fW6=yAXtk~7VfvbiefzwZH%Cd-8&z}-)0O2Dcz<${I9xC*FTXDZ zq%l3UB5kHU`6;}+{1wdwN}58p6sy+ca{zeVSpcG=AjT1Gbk2*Xb#Hp)wUiy|s5-cZ z-K^NbOAAB#@8OY%0tJ`7id#u`W5g>}F4clbu-I7?R!6W@=Pwy^RPQes+ew7N9`(j} z%U>eKGNA9r8>Skr+VED3A&M7J(B~~fKHRFpQx&}YkcPBj<)}4F+87-h2${0b!2j-y z?fnJ&DOXxE55(#ISY%}|(XKeAL*=S~ytSkqW&(AZ&$Xa*$#agYA_I~8gjj-VlQ=(x zqH8*xzE=)A&jaTfyJ9uLr5eliQc|&EceP@)>jd8(4eti(GlrU>%WNg+{tb!YSwhgs zc?R9Ud~vxMw#+xJWAlXsJpkQsPBU;h`kxLi*BTdqchhd*+8bMk+zGOfsi+}J9uQSG zB}{vQS%AG}xEZs03eBEvcAE@QOxjG`6HEf@!BJt92fd$YSpO+WPsb5^>?Hy_5=Q+f zpRx9)NIdUi9#l)M(M6glXT9bc`k-Ptx)Q&USNE?Nqnv8*98m|tVE5dOWg!RuZScOs!Jc4)bVC8Nvod3jrgKI0BqXR3@9mOBOvQ^3V8kLdz-Dd_gm9iaU+bruffE0OT%g1|&Wy1_+z{^8Ux0;>c1~ z0}d}J&*0tLUL)#6c;$y>Se~R{;9Y;Pp*wxWhN1(C%7n{~BP0fU1|A8!pJ<$Oj&Z!+ zv42#CBqyxA{(V$13qIfddf^w$Q3~%dN8m2{TNo$UeiVbIX_0rYo7jgfxtIb+|9x?6 zuj(wA)F0c%_S=aN@4w~^u{cpbo;DE@EYCQTfIH!mmSAxV!_5y-^Vw$Bb_)P|!yBbH zxSw5FY*_WG11UO-g7P?<1lTv<6w9fCB#pG~qb8N*U8p%geEZGKp&BC-vZ_*T3tbDk zg-?pi0pRU#6`;LC;oGz8IAbfKW$Ik&l#3~PSXZg;52k?h>$i*QjI*^Nx7c2Xah-OY zX%n9EvmZP~BS4?xd_0`rNRtZ??8!QM$`vH*Wfoq|xcLULw~3AKK8LbG7PVW+yKdb= zw;9--t9i)z{db7GM{uzM`H;u`5gTu2C@;HQHE41_;?BEV$oM8|2`vfo=ydT{m^Mut z!5k>&-zk(iJ9K(5pY`zR>Orc6_=`$~x`EaEZ-U8&@2#rFSHLzR@~2Gu05g55z;U3u zL)RP^z#`ox83@kYy95u}?Ba#)Dst^7)qM)+)O!Tn3>F(mYrzcfzOVsGQ`i;IO;B|z z=(fEnE>S*xzQU86_6%%|NVm>4;*!@SuBM`nG!PaaIR#e3On|%^96CO362i?@r&NP1 zu#UM>Fzo=5{jrRG7+qVm?D1!?bZ4aIx(^eo^#JY3|LG~!XlKajB2*s17e&y&yH8%) zJsnqNEozDz8-^?{J_ErYv`U!o1L@Rz&K62l;^aBd`}9>U3JkguIa|7PFb6f|B5hpf z8EFwS&4AqW2Zb!}0gxhhxJ4)952&T-$IC*U0p8S(8x4!SR1$AClM$9aa`i*Nnj}D0 zZEjW)wZ(-uMr}4bng&ZB`Orhanj}>VVXc2p-He)P@N@Qu!B^V&=7}n<8wk(_`9ONi zN7{hMBh2ub1=`JRLuF=X0r#Q*Y6G*xr}YTaKr4N;4XB1s3tI);3Da$WwU7mY`dAwv z#W7_8HrozRQYsvez+Lh2Ht=e+3fyVnz4n?m;IbnE@FW2DexeP)7SsB<2>_n+$u;C!xc=D&)08AGb&^lXC0M-%L0+Xu2!*fp4y%|hVq4}?wbK7?0 zrl1?7{&1a=MBvu+kYYz&W3Z%Em4$M%iMR=_w_F_anRunzIk+_e>E^!ZIaIr^fqVRV zK;vUdD|BJG2K*V^qi6ut!xGB) z?0Wb(gdBXqGWu)$F3W)7CM0ORZ5$iTLIi8(aT_u#R+)WR)zCZ$eQGA6q0>bsEDt!D zLKiH`P7IYi@O4+)%mA1H*v1HtCxbMs>JbOe=h*zn440uBr5f->~v!v zE4!qSxCbbIOh;?N8On)+n=MP9!>`(FqsE$oQH|~lAa1)QNlIHf*r|1bGPrWu5-YZp z7S96sdtYiZ0a_6O=kwe1)y*GS`rm09dqtdtkkXV#i-mP!qsC15P0d=lL%?OSZ71MST<%E$BDxwV?Dsl z&L-ij!8UG*DVD9G5sbejVlAe3DbNpsZ&>cWhTkUMrE$+qxeOJN%>wE@-%J&}iNhl1 zP?R`z*QHm7eP8USME};SX>bVpWvfJ1a3EAnN2I_@BPD0ntZQO!XmGHLk z1RzF#k_3ew)p1_oo$Rd?2tB}k z^e>a}G0wyx#AAsE$O7hvX>d|V6Ax!sBZE1heCB^sn3I*2I5b=L1BB~-m4p!A-O#)j88ZdGBwM&=%o_ zrAB88pl|(ctKdjHn>u-3N1zs&_`$O=S0lFHEsc^jFV=-reb>C7kIklb#$|Dbo?IdAM( z4^+8Deg?GuCy}PkG0n%7Ih7jB1Lg65N;Qn;XmVS84nW7J1Iq2p@s{D;8Q%k})6+5I zG8NZ(b`cvWuT4jbo1`6@UB{jT%x#HqQ9ILhY&mEguK+Cn+V#{~pg-czN&Q3{cqK$d z(F4)(H`_)8fk|gU;M7DyF($1Wnj#V9@6E20k0rgqoRIDV+4m=sZ@R`ErJry!tfRk) zJ|Y8Bw1b^ZW)j9MKvt!LHFuG^F4hgCliPqusw@EJ zoHoFj>*A}xdE-*?4A>+Q+I)usSO7DAKFa?(LHX4 z4gP9v_KEn_^>~d47b%Qc*7x1QNk0u2sDyF_pw-e*TQDe&=OzGkMOz>x zsGA1bm(x+>g1U(KUSu~5z`N6dTNwTv-pvE*@xf+$$*ELJHJVi1j2q$A#&|hky*v>! zaq5tW#EocL<3wt0i1w1{bI3Oj+N+l(byzz>z6cW( ztn`3he9)^1mcf(8;X@L=yo{0qOd5#1{OehJiDHyR%)eq~1AT9c&k- ziQ$4ntc@IwUkynb2X_nd8^j!t)+Hh?#R|O8umA#siG&suO-1ZE6dzVW;^K#dR5(bS z1dS^nB3c?LPJ_TLiG*}8#Z47-G%pe(&I0JZD4=|Nf|A%K3!Vyy=x`n|kAGOijWxo> zP38{H#DzJ49G?yr7Z)lRM}$29IWrwBZqO*0jRpIFa$t#QUKBV1sLPfJ$?@M5K(0>* zi;MqMT10*`fVndrE-vy@IJeL_2c(1Ph)uf#>zqM{wYP5ks!LS6i#o6->zvANXqi)> zONk_6qJ#x4b1Gd4jjJH_FNq{|a5f!HHp&6WjY|ZRaCjCt_od^-g~KYW7YNS->d;K8 z_h{75Szk`;2)Z# z=NMC7=<;S9We#<-pn7T|^>&21N}i&yK2UmXBE`hcYib%MyqyH*HHp|dMw?=B#U?QB zOvh^K6g8xs1JJ>x1Cknphg)+w9KVfDRz*!?kAqIY9KS?3gVh6!{zR2Pu3st3mbYad_^q{GFHHV@8*tP{YwY{__D z&^iUM>z545Ve1TF?o5Y^3tK&z5xC9)=wLcvT;S>fy3jRv1l%Bg)eSb+pdGQw=!0+|0v*v>pQ#i%o#m6^S$xJ2Ayb zOi()w)Y}u$b=;<)nXq;aC&Kz)#ZwDR+qyRc|$$$o} z4=ArqL|bfcdjakwz^_asvY-Ihv)53FI}P|-+D;}MmWQl8|zL1==!Atdcp1t(C%D1Do49>z&V(X7aQ$*Vk6uQ9u2pMUv-O(rV|_P zdWbIG%>nHAbkMZkLBQJsq-r8!)SWd8cs-^=5wDhRz%(%vfR1kq zAO}rAI&v`}z7s&Z zEFCp2_Kl*t_;(6`*QW!w(qo8$XMi@Jh#H-on#90S=0kC?Pma9!+pSdZF?{!CY}V`)#zD_UR*p4#9Pvl-9(q{MmaW~1=juP zm~r7|lv}$l96Zt5$8q>=^h{BU)DStYzBiVLEDra8#{Ohl3tb#epvOit0Wvovl8YGv z3tb^@!oUV|s%sX+AN!=FaoCP!;wTp;PzS+viG&k7wiW9!`A-4RwL}s+(p!NvInV^4 zE=z}O#qDYyGzGlt+lEUjo&ngMZ38t4%pA}Twg=Tf2FtDSJrlnR804*VoR=4MgTjVH zN(;)1qIMn1jS8SK_|VV_=SNi#x%i@Ce9W^y( zF{r#=4y*&|n5lULVcIowU|p7und%-16YJ&xyS_c3ULG+6#5>!AY}e0$bub+>HIE<_ z$Qt@TSerc@zv>|y%_=pIAXJw}CkR=NJuOUwB4Zq*!}6CsezmU#TLagt(6>y-$pkTHO$si3#B5tMGuJV zPbRjc+`=QsrZWLLHzd-F8462EE+QOob}t(0py)+g0?#s z06Ultnwn@BEy&iz3TwNE<5&G|ra#UnP2ymOv%Z$O3OwI&NyB zVU*w{8r^{0kPhu;hlE7KK-(=0fYs7LQ)2=HiaiXVU6+U&HO$r%4W%N9#teu&m`rR* ziH1jzO($4oO=c~A8{I_AP*_r;5#hjYV}SbG6S-)6qG8xD`xu~jV$u5wUQhF%K$-J}+rXTAFD7js{2^kw{91f}2Xx z5{+Z&hz0OIthgr8c*~#KwWC2KrUCt$e-tf+NFdQrlC38i#~$q^8k0c3TB#sB@PJ!Q zGz_rpXaMf^blB9WgJF3`17HW!K~obA18R3Py5KDFtIo1f0jbW?fMQ1jXven+)k`#b z0C{GcpzV$Zzz(E?rY0Ij3$mjDxXaREQxgpX>k^GAAYPx2+)}s6jt1c76JetczSTs- zupde^gv7I-FXKBp@?xT^#U~nuz9bsmAlaKpTD@XRqm!e>K7hTpO`wu!OakxfbllWL z!zjT^G^PQ0OFFch9TE}^18sLS0Cs;mXlg`fK(V9IZLQ=u{5HC&sA0CAXebp)GEHMgSy5?3aY(&6Q%lC(r) z^^tT41AxyvO1zRu12+7*U73cV(GBcFj*g{)R6}XDo@x-dmuqAJze>p<;_;AM%{3TV zb~S+4n~s|r&RAUD)&Sapbkx*rgHi3i2GA}`M@@B^jEap7z+K-iSTEt20p^|U!nRu* zKs%U@nwoL2B4lsl7;D3a<5xXrqmiYi9E|I7jvOG5Pls-;?__rac-2JQ==9%e(!m0R zvJRo~fkav{q1NKF4rV~oj%m=mJ(0Hh$kxUw2aj_=d)Tq!yb`@iYp9ZVWC6G;9XK`d zU_E%5M>jAxq+`43A|dl&Y`ez+v|2i9YLvjJ*yI4*b&0T1`)ob;aAYL;m;sdslc_B! z`S2;S0R=CxhO-vGjUFRrNGvJ)h_Yb!IY9pHiEOkz{a`-KMh8gVm`FOYgIlvB-su4N z{fR_$^tT4eTODiQ?eW{#cM95?OV$)52gKvsh-@}H0C#2^VR^R$cn8{r%iA3QyCM;E ziFVlD|hv^`Xi@?t+zFn=Adhg93Oc zDlZ5oI{spX4Gw7wvD27Z6;xjRe?hG@7EFT9HA(d7%LuE3j>{k0nJ=|j-tD8qM!z$l z{EZ|I+N58Qn**8Ow2_>e628o#wiCS2+V5lWt8>wT#p^PTn6;f8sI30KphmXS13LXl z^x9%OvGSrbtDyYqBn}o~J8|?tZW3hPzZ7!j%E6OU#FN8&iZqL}k!JFtvvQ!gI*D>Cw$X$R$n*gI)TNM-sb{#j zzcOB@&{!uU+p>*jC^e8iP&zkC@zB4vJ|VSA(OSy{NWK04j3k-P6o}oJM09bc)3W5~ z;8~FWaS|J?*ioxQL33Vcy*M&zTo-%cnT9z#b2}@Q;TPui<@D>Ox$`bC_n89c&5CE@ zsqL_r%tEg1NhdZ5BF}n>Fdrg@;7y6g1aF>fuQ>7rXAw!dmNn=G-X{gOgHw&6yrgj% zL+3S%5z3=71M~wg1^3OVKpLeQBaQUEjVn3IT~{0)4kke18$u~Kge2{+jPB_wojYC} z-n479GFDnwtkG?vc%;@NDy^+1S!MAmQ#;axXxY3rfQ?+<#q)w)tCsr9MIsNZ9qUBU zonQPk;}r6vw|4NizdNL9M`Kf8W7Ci}WokZqgOq|9Ko6LD+!pDRQ3Kec zCf>n+Z;bq1aDN;A%`0Aqf%iUrC^O(Iad4Pl=**w~HzaR64M5iQWo1ukjCkB@n&UdH zSg#Bodvs}Ev7bH%4bH#3Rn)5*U3Pg?ot=&)s57gY%CONa&qs{L>D#H&&_C)(OMe!0 z#|v$uzxgz1#TwUBl))(dU;-o$oGzVbEh2OIWAEOluXPwnsp%fC$z=+MhohT~B1$1MJAx zA}xIlEkoK8JJ>~%OlfS)8qSmdLBbPpMb>bF2`KD!uWV4O-hFHTWiqD-_3SCF{>7p|tI1iNS~b+0JsE z?~&sXEn-sO#NF(Tt_#PGGQE_`H}=wsRkQ-it3FiD#EU$Cj-) zW;axr@$D3y1k-qTRljulFx|LAs-M2dbq64f=kL!EBM2Fu z?)NkrU7U&OwBKuky)00dkBZWad2m+?U`KzECuMK;gEfqVGJA|hI(2wB?6LB$p?dF7d9WVL1MIeQrJq6&9Ex@3tADZ5IfyF7t>t~2 zYMV>7+P0zMXfO+ao-qM3!I-LrgR$ieA?OOVaR)tI8U%BKb!lBB9w-gl(dxx3tugHB z(@H)C(2K`~;W(hiUi5%YtBj8h1d{+5*%J#yPjEM+Bb`{;I~r7ha@SJPwpW8WV4Syi ziJX-N$W@hgQQAELsCVv*h14-5KG1dRidCh3b)J=0cDa~#3OJ`85WGP$n_o+?854e% z>ugI4h(LYHb}X6Q4_fU%!Sr7(=mYJ`&x_?jf@U|8B;e0F=Z^?=x!Q9Etmjl=m zgV1O#3HL^bg*z_)0x-5Io-^KNS{xl;Hok0Gx^fo8Di@1@ zdyKul`68ERR4aQ)`_woY3dX46QZHPyL;4%n}rIhkYeX0qC%7II{0xeUGj$dfDJ4>ccbHLxz3B3 zuYJ;t>zvND#Md!)q&M>AYr1!+GFC4UhZr|iu=VA)IAs%Xj{*ulgv@Zmf?YHkLbE(qOkyzKGs~S;+F$x5lcxe|&7LG)jF$0d9Cu*NbDj zO8O684~!J|$>YmaGnw(>s;DvC7xWJ<+tW`)!ZN)I@!BtZC_1XW&M|2IFk)Y!%Fc z@9(`$_%|BVL~L*bD0dZidlft9=8C3aeaC7aRwXy;pTsow!h^ ztqyD2^yH;pqxC*s102$=7iv)5fu;v8R3Fu0QVD}}k>(N|X1=E;a&EFz)X*Pis_{G+19?)JtJfqh${AXoX9hhiHfYd%|c@OJ&82|H^<5!4~s95xv5;3b$!xe)$?;67^ zwW3#V?lL$eq&Hncugg`hZg^AQtq+8a<3A$o^bZ-TpS?(h>);u($Fass1L0Z7P<3-q zG(~QVm3fw5jGB*0R5OXQA?Se^)sK1N5O1eMq;b4PZWe;9iNqN1Nd1IB7`*nH z1fy-#ne?|8bfCXICy)N_*8Y~jB+kLxNzW`w&47(lKOyXtY0A^ZA6XLXR3ji*UNdx? zOwO=2nF*s0NHZZsogcM~sBuxy4sPB6k(Xb2opfiJhs1@-M@P{#yzQd=dlMWkm(6)W zgNTw-2yp~10mu}2GCtc_^-A@SH2Uc8ZgoerutubB4PqwqbH^+7(i!FYP|yd?`>q$o zhL*+nK|5r1>R#KsZqug9D5Ysc?y-*iuCZcusN8=F{^fD*U$E@xR$E+OSV>Mb{0vxz zz{r1oUR1ibJV1;REiZ*JGhma&9A$fjj;lccOLNNRQxe#Gs$(X?=F{B2AVSJ%$4A**U!$eR(tzPJ5Z)gBbx|*E z1D3XpuwUMsfA>n8^K@{S;CUhb+sl?Y?Md#CsHED5o>{B(OY9`X%#DtWtt!Yu(hEf5 z@Pe~0{5B4B8}eF|3B3L6S?SwI;KT}Y7B2p0MNF@FxZ5ghmO(dQzujJV?(#Wc4u2zo z^=N0ob;cQ#$GX85_N##Ya~nvkD~_H}?B8vzBlxD}`AN5nxsoLrUohm{W5{7?cS;!L z2E+DI#-zhBV?hph-FJ#kLMWCvk;%G&Ns;k5@4I*dc*HDN?c87IcDL7>sTa!}M!Q5x z_7%HhwqC$kAk370EW%no$cul}3wLC|QZubm=!oq%-u@F8sdwo>216S(GOO9`_#XH7 z0yZi7Tw>9${MW&RS12B2p=A%$X|65(k;Qpe%@It703FA z%$54UdcjYmm(B9jgR<1Q&luA3{K>L~q;@a*a<&6Zx;?W8ST}_*FTD#c9hkD??L=?H z+*B)2p-?@T1=7KvNw=ft{ADRLUFCHqn*0q&H2GbQT_>;8(c%Tj=+Hub-xS|4!lm*ws2j+#nR_?0hpxHZDq%Sb{?6 zJFO9fjLJZajN_x_{>nh<`Q!D$)yHgwefEXd)ld*tnobIjvjV#$kjUSi3X?j@F^ z#I(dtw#c$G{}$;C)rC9}qHb$*YQa2+U;KL!!GwW#-xdzpqS2~bv=UG*_30fh_m@Px zNg!taAjl?^*m?*?ErLN0nU&RmO!04NtX{5+_LAy?EWkSc2vDmtr=tv4h*9mh&_VgH zC?Ui9u5J|^{MV?whATR<06yyhAuv{{@Sc&^Fa1O1Va~Lg(4_@n&XJVx5cj5|oEa>S zQG7=axx63T(Ck`ear?lH}~c&WD7b( z#u1C-_2-C1afW5*j>UIq#_YeAs&KYWpB`Lrk(dGy#FD= z;R#7cJj#unO~k^~YQZ$#-n$bdpJ0>6V0J==AQTg2Mvv3x_U-P8_Py zrl9>e7B%!1xnDf=>W2#pzWbGjdA@+h?i!?{39ExiyztCUdC@HTtFwtqFwNAnVwHtq zPfho^+L@>uAcs9dz;LqfGV!A9tvhwK+)Zsl5v)e=jaB3T`t?L`twT!#Bion-%3Y64 zVwKIK(|IB`56?4UUUbD@@vO6j%z;Ypqd-kk{T=zWKg1LnRaFZ81Zu`|`atDbf1e;5 zy=zXtuUIu&Sy!p<$Eo&iJic09)5rLbJf7;ozaI4%5v91dvYQv@dUd_LqhjZ^ZEmHk zT(@O#&Ld?;$kILq%ZSpFqm-a>Mpi_Led(0Z{?f{>6DvUsM2z8 zWO8HU>rvyUGKzj%v{1;u>x(eh1t_9grdna}@VX}nFHFRn9YTOAq9{JnSp>-aeh^m!$ zgm&b`oTSr5#Spnn3vgYlgWxF^cRhZW`Tu-mP(bsihiJnLyKzR1^EbmQsoxB3>S&EffI0p4^yMX%~Gq+Wg#^4#Vc)!=-kQ&!U)u=B)u0A||MYGq8 z2?W!4;;-_g_NXyKlE$2oWE}_3u%aA>U%g}^V!kU@d2fQB9Nsym`Mb}jlUgHXGl}r= zRYSNq5cJ@st$FDr@^+?M`qXc9h_f5gCOWjR?DC&OQJGku+CZ+iPA6f50_b!;OZsjh zP@(BB3y8-GRCtA(CQRXh1*Q)ST9TK_^Bi5O6bo5RGUgNpp91K!o-J}2=cwRVuh73W zM|W%7KBm3*r?i$zkSJcIS`YJuG9Vu#6s$1`8{t>X@hr11gJ*ZN`i|M+=)=RMR$ro( zyDFZ2Q~Wz?2h7m~VrUZo{;!G8f%7Rm@agymjqT#e89edT=1&^QX7R|klOHWqNOR<4 z=J3d`;vZ#W1_SeWFDAe61MLhqT&e7)>9`L#AA6z5Vs`FAGekp9Yz_)~t5#a5slsBQtaL96l8Sr%HON6(*CIa&pAUJjiEkM|FUz_uvxBdI=Fu2QH6_ZELx<7Dp>V z&||URdV4Gd?9Xe5jL@hD(=2733 zY|lrAn+dy%@d2`ZhD(i@s1wj8SmsVTD(jTElrC*LPm(CXR%`O$!ywUEMz`hZXYV0W@}%uijN`lv28iM zJps!(Y`0htI%LYLuSe5WjZM>DlaYpWM_nFL6g5$QN1Ld>r72_1i$7ZiyvE!j4~(A@ z+fh2LlLMcnVHu^N>KK}6N<9B~cSq=QjTjDTh&{JgKZF`ezkY~SMkldr)nb1ssDj?d z*LIhy!3^FxeN=e1)lO+sDHsp2i76*Czi__>eZbFGgihm}Z7Gw%I9AzU zs3n*8oE_6y6LsiSbJal54g9CQPi&?-(rZWd56{;rqoXK|Kk^!BFNWR6-1%;SNZNkt zwHcpviaLyY&uuL&Mv#*O`s1BNA*H8ACM#ij4*@=BfIh5Bd-Dr zJpYif(S;;Z6B~~xp{I{%8~}l40run%wg@U$(|hR!W)b4VOJ)r?wRCIT>k~h*NHy3w zki1k#hs}rQU_$W5nT_MAEvI2T6<6R`Ze+Bx+Fovwk}2SKTrFJ}ucbHuwxl47H|r?~ zVpL&K_XiVr@24s6$8i8V4Ce9fn?KZC3NcBahfTew7?@xZ@4o%Nq_g)!eQsH%LzP@m zCDS@9E7@BR52-MwtM(dt+*5Hvtt0E(9ZZ3ZJs*t~iBqqL0Z=dz0?nAPiCUcD`EqYG zQN#q$51WpqqQfqZ&n@Lqy5=Lu;nlA$0-~2En_w2Np7gPWbK&N!pn%uUS_F(43@1`Y z_Tk+xEezwt@i7i0#3Rn)^{G#aF^!uzi_%(gH+=A!I;WuLp83S-pVOSCIeIx(><GNb%bgIgk+W+t8lsk1&ULh<`U8XRX*SkM$J zVos_(*O_#245;iDY62q<@6Y_8lbZ{W_8LAZ0;19w}g(qR%D{Z2UJ7}2fV`fA<2 zZCwz2!AkIS{6_3cCz!ZyG1=L0ki(lVT?E1=`os%f`*r;5G}juQNu2fH;14X%`>{|r;g#Sb58GXg4vz0tjvY znh=yLM7>3N=>_j*$tCp?B;H2*u|XdQub6F9KdF2S-woJfzVUw}AI}{EM+Iw$YyFnU7~{(NjqV)|QVMP^ z<9XC8hSh1RvtgR@CbPw5Kp9@YB?i6e7<0fH=LRkuTVuqcO`W)TX&aqdrfGmKAb^U0 za!0KBEGQVW*Imv7=^b}232~sjCzt}n${&awV4t~PV+6aHP0AS1?Sb$Bk4kXvNM#^$ zE+E6zVJkG`#Ei6Jl}wc@yJ#~h=mr;`6>c)afDZdfb3loMV*o9W zTZ<#KJOGr#ekMw`%An!pU&8D*TPQ~sR&CvgH(hgGr}HFX83sGOhgsDeNQZTsZc8$(+7y6iTDL3 zvpYsy+BuU}Zv~Pr_mEas5=6&L>it7@_jZjs1hXD5+u4x_r(RheJ9{LD2&>g{BMJBNFFRoq12x-~OUs`XQkd6YSJblkzBiaU3X zmG%Tx5W9I^h{BdU`){-^XscP7L*@W+u|2O`g*W&@Z*@I7i-Sy|6VWufBCA6YWK7AenJb1jj8#Uqow+HP0g=}~AjBA&EQ$6J z)irQX;}@gU_t~ve&wY%VQDaPy_7U~P@@msUp^t0f>s3RMk2O=@n6U>+mMdG09Ru8- zJ$VtaV}N%{Hflr0obeION5u^$Az$BvA}0%Q(}nq$JX|Wt>t>INi<0H3-@jn1J#a^O zbikpjYp7To>f+~E+F*_S_w(_)jLT(z_I#vS3n`a%pc4S=Iu69cpyyhPQX<;b-V_nT z>o(dNq@5dJPKK~Y#cUSEutgTcU&kYZYo*iz*Cx#i<^i|wcwZTsfi0L}2Au%d_3@zK zRf)v$YD`7aVTqN1_O2HSt2q7S0mbj|2@p!(rU3Ak7bO9?+B(m*AYFEo5e9*vhsx_F zf&G~mC(*zi%$jXFnxU#4j!^xZ&e)KZChz#pfXF*vl0=MmXgf6laH+p%)V|8G?>hy+ zJuht+u-*Ng0NzPG?ZU;*YXN|dUYi7r)fl(780ke$JF|HG{zMpAF6~s$o6$@!+mPuk z*QX-XUT(H6gA**XU&XH;yl6CRaq|(FEnN0Ei}x>ImnwW@|5D7!Y#L4B?cozsQ4+Y3 zjm#<#UbH?HDYBO-{K$4@4-lTbAqgp_KV)OlrP&d!*}cgeFdueO61F7geqY-qKL;(_ zlZideJCs?_xGRyCnrDJ;u}?V%fDdm>Vmb{7yOq-bIDgY(f!sD%FaeOGPhKpT84tz? zdw}q$mn{~_>@Q{U_OY9jP!QM229Ws0ta{3b$(UWH9-uvUOA>0Lw-q`ORM~6l2I4VW zlaP&>^KOuDi)Qe1qi2q?Yvk-vl7)utGZ}1VhoeU*(+aBjzb39IvX~?&9Q_7ay#I|w z<7^rY=J4`Y3Q5dhv8&Tx?BX~!u>)lxCzu83TTV>^*AdjPjAMeFm0c!p4kqz>?X)Bq zNmso{!lmu5dm<*mnaTt}U)Y-jt~|=pXABJQg7g65QQH;^72XTU0_Wk|Q}HyyN!o7^ z({Wo4S)e}r^!B0qn*&+kKKzWf)R_^DTq3!VnsOv_U$M%8xw(c)7=SeTid4jg!Ql|KumUIp zuS`XY)I|9FNqI#TC_`s01=z=Ip8-?O1Rg>OluZ%i=e83acS#WTQ$dE*o`xzhd=S zoPhE2#2gSy{Xn*Byh9r8^UA{QQU$dTAwqPjz&~#wM9167G!iKtNTh$aE|Fbom;jkf zDMT(J*4L$@7b}(}mIaahLX35$;E+ZCZY~RVjah;WCIEMT2=oMQXv@zN?wSmpuZDj|)?{Qt1Qw;X^G^fiy}rO`4-bnjG*y(3H-T z7AK8TnFjhf z_8%7`Pg6Scz<=X8kT6UK5-Hv064_fplZBcDk?ihf>fF8N>2DG?!3#9Zpx&l<3HfIc*5cH^pPq{-9m!ce{fQ z$S8JY7iH#S!6aUPpTd~wR;W{6ja6sStV^t z&Digztk5o`(_ytbS+|kF-vM+oY%U(yPd1BdR)RNJx-Ypz=$o3~iddwI5vL7B8ZjTr z<4aqBa(yhCuL6B{V{vp~xD?Fbjl=$_IUgc;EY{Z2UN-$4K%Vr*Sg@GnTg~TZJFMk9 zd;$ftK@ND|QryH5D;jh-RGvYaw_R@xJ(vT^Id2v&P1g$p&VrIuZ=sCt8LkSL`(okZ z`Cv<)#|!J<(wvVZ)qB=l0K^0FP;Iwnx)!ZO75%|mE$5G$gajR2)OVu$#AM^PGIq1Q z{q5Z)xnQWtrTO#_b&_PGnYfdegZx=v8h<&hI&j*j<>gxGl+pG3=-^5Y><$atnL#u7 z&R-oh!3|WIT`1D|$ts@g{$~*sf_Y*zY}0q}w9}^-|GOK?L{3}f!-$o~e_xx1`1UbN+EmaleMELVe8RX%f7= z_?_S>d^L)qEAb{FfE9CFW&5@b^gWFpAU^uvnj_2Y(5^rDeUHa15I%WnYe>{Di5g(+ zZ58y$3=k*YIz*` zIfM6qvv8b!bR$6UUMt86_+6Iad&u3mcWOR`K1muB@Z5W+pn#4V&k8&8Uw9-kS$002 zGop%2zU9)}$e@p2;|#QZx`kXPyIk>};;`aI;c0aCI+y|n!M_V917_`>K(@JgqqS=7 zklUt&j4-^4`skU(l8w&d7&~K(E;kK?qwh3uHmsb5r;4S}>@`O<=RoT8{}5&H!M8r8 z*I^4sy)xRc&~Ep_D<0iDRHExt?L?yUz-Vc&d)O;mgj(WK1ak>#eE^YSA6T4GRyo)m z%4^RL`O}WIi%$JlXOA2Bd)}tXS)evt3F#x+rC9>E7kI*f->i2xf{d^Y=E}UF0JQ&1 zKm|Z&900|KT>rYEOtJAa0M5KhI>($C;3BWd^YRb=9mWk}QSoo~-g!2~S3OD=iEOY< zjagNQ43s$6Wdh5s=Ho4fjXsdS|AS507_u~6923V#6Xo^N9S_CfF8dP%SA&@R^7Odv zmS~71Z`qB7ES~;N>|4#;tZ@y)WxBvF_>d*M{i7l+-vx16sXjh7N>!zY(&xMWMyWHt z+T1~QMorgJliFd_ks+MPy2Cc?8dhlVAzcxdxNV?o?>CosvhVK$Pv=g9w@jnbn^+g! z-axgnTS~QBaaSpr0LWP%7eVbL)T23N$Jte$mb`CA4GtIS+r-N*7x6PAwOzF_&iXs` zJ=18v|CUufQGPm##wWN&XvTfsB17Nq=G|*59lseDow2gkxR;ECv@#L89ZyE!dYYR| zUP3YkeGu$>A|QP*xLn6HB?36Nux^aLBvfLHpTisP{zO312)FGGjep z=trOa|AH~PnaZ%G_i=)&_16h^cK8&WjWlYFZq#;jV5ir4Zhh8x3_JbNCbXVsw9c6q9ziLf<#>qqyL$10;ErP2E7#j$d6Cpq<5 zkbJ_;VbV=(nq2W9-SotxNP|GR!rq&KnK{pgpa(F#E0o}N`ljzd5(e#P(fz9+e`=Ae`eySwQ-Sl{H}>K5VxqSr6#^6gqFWly?Aj6D1p_kg?YUlXD2lCX~b+W1b>5*~(?s<~4E z^_c1w==@Z9tTeDzV@59|9xK)8`aT0g-@Fy3$4a|Mp>%%%HOGxt;*_ThVwFyQTLz!| z^#n$Ju(=hggR91A#U4D3qQnh)3l=Xze7n{nc)x4y^|GJm zJTqq|<$C}5_49$rS$jWguf6u#Yp=ET+Iu@V@UA8GBMTBwMj^`snmTffhk zc-SJ2rn`zE9n9}(u1}`&#LPu!&q^m>`NSNZ)sFQzU2zv8al%OJTR2gFMG+L;g>-!p z2~a!_@;oG7jB2g=MCCT}9>a~5LwHE>7CiD)n`+i4l35|{7oSuj z+gF^b*4{4eZzQwT+BUORa9&bfd z)_~rcBa=hj$#Tota79~8f~RsxM||zOOpZ@Bni_)T=9P=UmLp4= zj4>p5K56(UeM0jty3b{J6!jTF`G!?WY6`WCkTsPvLUYi~<9|%B4)(>^E$`!82@f(W zI4@qEi(4qSwiZS?(&4AEjvRG2FzFTi$5ZWCF!NmckkiTu!T#s@tw?XI)tuh=ObHtV zNLAP`#bvHr&4AJNLd~qqe*anw$JltDlVfb}6s2S5 zuayqsgc`OPuhxBytNF6__1Fxb)U!gpQuPB@$R~XD#E(@ZJ|ioepOVkV*uQR~a)jR5 zqsOX}(}Jt@QpHIbOMA;{oF1R=fU`k6=`(`si{Bocw4ca-Tez~tOH}Pp<20pdU6=i$zH+vj(pr^py=K}2h5PX zdUG^6A=ut|WiG`b@J-x^_@g_FeQPR@+JJAQN&{;?G!h^kS|4easILd^n)*8sz0fkXs-b4ki20$+P-A(KwF>E03DKW*KPnd}V zZh%Y92xUL^U5n}&pLRSZ-~9Uq?Hv}+NdzS*lLGz~-om(eSoofqbu70%9R`6rxz|x9 z8$&x&@^{G`d34%ne)ox+5z-k!_Ak#7>5*H3_r}UZbuvjd1v+1Ijq;^L*LC0^D!m|z zf!z7r_yWnI&^h)Jk^|DjFAhpme4Ch#zbc4Mj0VEpBv66;Q-bR~FIVzuSoiRoMj-xX zOL;xlwr;7lungW%<~wLlNh^POleWfN{_noe*Pe5c9ds#BJS%uFz4VOfbL`oUY6VYbACT66OQ|^5@vt4K(}JmM z*K_0*6S%8sho-|K-*1Y)cwBGLRpfXIim8SM0fv{S` z!?QSKD$VZL>&*lG#2l^L3N`<-O4E=`sv*Jpk9R&tuF3kDygJ}{@cW+&KI25IT&fA? zV}kLq*C-z*Lf~-TROr;mESxuYOxNjlQEBR)A9yaEAq7=B95BuZrnCE>3&v{ehKa^_ z35=;UtK~$I4IfaXO_+%$oMLFDE)U8vW{2vn_4r?v6rW(3!p3@61PzgDtIBDuv1$;XLfD%I8$VZL(x6mrgzV}kDI3@wfM@;0>p zw10k^$`}gZ8#Oe3fs~dRyD;jidA{8Io4MIHIjJ z>ijk%ZpBkBFJr4|>l*FKGEM*8XHE;OSAg_8@B$5tJF4(u` zQ=bxvrip&VpU95|bKB`>Zl4yaKc&=jl)fEpCvH1h;x_$C&Irmk+@p+h8t4$!!3~ziSAKgCQ&l^J6JBAgw9m|W zfN&RU@rij^tzXO~foYy3$Ak}GQGU$9>P`|EOxlzTo)wfo-&El)K{$FZUhGtiQL}iQ z5`-V_fLOUX7b{}KJRMI9!r4|V94W758OsJh(U~;4l6K!3?OV{a2YfgiBzpL0e2orI zcRnvVv03tlQhZiwHy%=|MKI%;%r`G@brF;d%xEU-YB2xR{d6O)P4)%P?-bcQhFgW$ zT}pI!KITqin8M71I3yUqc|_T+pQ5z%Q~52jxzJ-m{2bbY6OGM)6VlA1 z`OPg@n6ljoONJo*R0rgpPB|h40O6hEsrl((@ zVaZO{F|2bUJt;cJ=T!G0XcJuo-7V;3o23cj;hzyQ-lpWtfm(UAu)gx(9}|>g_bapW zsqQq4H`c{cWp}0_*zPr~l=8W>H@i4?a%T*y*uOJ^?d+O>y#rWPP?;M{dWFm!xB2zoaZ)E$}Rbk(C**J-zD9nXkYOxTv0`sdEm|pzW?li zS9`huih1ag2Lru-{s!e&KE0iW0WrO5EpUSFlARTFD;`p`WTSmW*x5bGp;%sMI>~Q@ zSY}31aQ^gv&&6$v<03EzO(pn#y#wA(ERHA+x=QeU>`n92+lj^7>UB{(!iY11@ccI` z;$blPCzfXyf=-NZ#LS0YLHCjlXgl%2(J~u~g6b!Y_$`5nZ#^!|T!xK4cIBV)c>6Mb$`vlUy{9!w-ZmU`z2-8w-w4qk zRbRV<{-HQs#=M#ear|N&$KOPC`W>siN$;27a7Pdp-=*Bi@#1A>ZFT!d9FfTCmT1J#8ttt*BGDT&EUa;SB4p7- zt_mH0Rs_D_bs7o0f0Y^r?aUVKR5zvcjJ$BM!(e!M47LikT^+D?8Uw@11281mmOr8c zkf+CZ_x`{d?LwO#%kN)DzD=|we#_=)QAk*)q%hmAT9IX2C+DDIXl1b(5QIBAAnvr- zIAR`~Ha z+oS<_Fvub^cEqEtL5*rh5n>t-Cf$aESB;?zV|nhS z`32B{{GN>)m}6mzdEs+#H}2OEP05{`kxuRWm2>QziQl)ibF_o5m>1r;yQ)*7Ubt^V z(x<-vagKe9CJlz<+cj{9(Kp4s@V?Qx3%b)Ir9O+&vroTQdKluEpO%pKf^FC|a#oVh3C$Nfb4* z)z~>{V_GLAv6sWj+@pr{b(XBh(6_w9rw!^BY#OWX&fu9aGjB9Ai~l(7`RF{SJmxdf($W9VdIMVljw6jm zY(mgcM*+uH1kZF-jhBB(HG~0RsfH>3v&-4DMrTJi-qR^@(h|DmH!z`d(h*)^IBNH_XF^k32) zN$$4XP3$^_RAD|CPH!Lqh(&UFfn%_|g#6>3|QmaP9 zY)-MaRl`}(9j#Y`zDDG(C8~h1nCRNb*PAS6F)1O^ep-67`(t^%%GU+Av~HSgOdTcW z;0l@W-3LCd-%}*bbewFW^;(EFA0r;63M&r1QInh&TpxHsaPlNa&rZMIXSu|v9(%p- z`jT=$tuwDTY1a>*Z2xdJ`cQMHA`lS{T+h7T{079EgEay0%zZXInjiI$XP5`i@YsDe zG9jr0-yM%Cv6KRKB7#j&n+>sB69yhWt+IT?Es5@Nsp?w0iJy z6_%R4^V3Er+t~F@o(#l%_Aiwv5yi;!)x0Cu6PASDaA71Pet=xBiGSP77%oY z^+7&_?$G6O*}`;(gr}f8oJX)xz>lZf(VvabD<`2(j0zzPx+DvNE-{ekCTNo^2+G7j zGAhs%77#h4SDw*m-DkNrst%wsbbcuaN+Sz`(l8LKo+l&4!hqQbAQte`_gSjwvU0dM zj97H`KFe}T&FI)3h*nRPsy^$|{DM**uaplCskEFGDS6}{Ra!X37#c}=mZm{l>#^2i zvfLt^p9Vf&t9QAakftwrMoAFy0aHzUWSs#QRiW5o0X7=%b+G^s4W`=jnFyx!5T~?y zJWOy@Y(ZcE+!O_*If2(x>W6Pa2=SIta-9A6MLt6`C!%P5>ehGzE+qYHIcTKp9dP!l zDjl?*cU#~R(t@jwlq2)=ygI53FAAfVJ{vO}eTa9hBx;|Eg>bkLUWSHxmD+tqZ3w*r zRp;>Hb5YKS^N&@uJH674fBwd~bw|U1A><6&|I52`7-2>2P4XY17k~TBbL));{{G+f z2Ag);nX}S~&wNWeBi6;Z?a!qr)gl*Znh4s~thDi0$xyh%NL}9frCKLp@^}u)?hK|BD##OKLrTlt)~=B zI3UX=Ln<8c>K^D1@~45OIV47L&%Y+t@sI~Dc}>m;x&5n^Y%xJ*QYOd%5&lp+=vV|& zYvXuMUrt0YHZD#^d||+;Ea1^B;B*8iQ#PRR*OLC8%esn-049?GVM20+GJ`Y7(Di?N zy~QW=v{h`Vi*XHZXkH2{PJ9SvSYDY}a^Qufs0s+&(1Q~AkmCyAhou#ZRsly$NK_wz zDW;EV;i3<;`k1GOg#f{shBezByc9bkiFfw!ed z0I1$Tj(sbcl?K+lRK_aPP_Rr@Kg>TFaQ6^!CIfWE29(5QvEyD87Ic8lq2mmaZeaVYg5?SIa){^@Yk^g z`R1#%5xH_K!YfC#RV?RXJ?#?_omm*IiwB2`LBvQ_r|kJS4pICF=8}dv&s6v zs3+y`lKGnz$ucq)ELrIjK0H>l(&UP(Gh@|$erW!&ig5=4D+516S;4qsLx$yQhAfojidXn8=(2L$EAS=8->&yO1GksnFp$$COiK9NOj9_j*(K|?IO7JSRE$?*F9 zdH|pBLN_8J-bpta>X_St_s%T-cDmkgzJf!Al-uSi7aA0Z{ob3UkK%Bi^#TMTYhbZ&*x>x?dvGoc4Wrc zEJ*LnB5xrx5?nF;JxI!4BOlB&riEk9>%jM2=B-u{zN9-da%RHi4Ysr2L$QEosrK^b^kg& z@DaEz_@2n()t%LaDv^LyBwLUze|d(*ugC;pI&s2@HAWN#=bc&H?F7%y2qD-I9}t8O zXA!p(JwIY6S`N~k5R8A2#oSJEr)Zas9VNCUX9VBhcgCv;hjXngcDsYI4dcK z8#k!zkY=-%MBmu&1?wAcLiEjPY2aV1AyEqv?gi-^#~h?T*%m0@Ab*#13*uK~PWgA1 zen%aN|5m{}oyFfy`1~U3*j@f-1nF;Nk+%~cA)jB4EUf~HEjcZS$MK8`{TC!j6Fr`@ zB&FJFNENmGnF$kQ=F`H?K@Pybo8esS{1 z{8}2P8B%9X%?vstn7eOMKFvvdH0U{juNc3}RIi}DA&b7f1M{P&4(RR1ynqb}#s{;Q zEhT+{UaR62jtjbvWYPX^=GNrSPOBo0=I-^|-;Iv?TFpF99A9YFZ>0m=CUg5N$`$!h;donjhbk>!MIOeoq?Y=p~>2{*$XNTgB zI4vk|$f9m1e16n1r-MRHh6HCTi@TldPG*7^;fVEpOMm?JA8XQFG`Kp4dng6{Dw z+Q%}t#&?=8hSpTmte{-JGc$zks3ShlzaFJ;G);XoO8KUgdk@lRapdwp@ZIF-{o zN(~}ST6}%dkhZ>RZITFVJD1dyb7}spH2cQyRi37r7YQ_S@+8pvfA@v~dJAyTJUAwe z_ueW*34{=TN$dPezjP$$sbXsaBb~db&BWzBOK-o*22Qh2-!` zlH3-0eDZc>Kiwhuu|JR#DgKi5N44|wVCDzg1@S3C_@Z5kn9}idg~0l}fzsMMOEBqD z`YM64qI|e#w~k4f_V?a*{~D!k83TSj0!XHOd=gJm;BgX9^B|YC=)I`z_33csa&!gA z>xiT%89aMIGXIWlvKpt?t^|z_3?CE&q9_kL)pg}*@0u)6{q(bQgR>$J2oK(`yqNn* z$E)$6II`%PN7v&~_x0N+>U30CK3la%$KoKyVr?ON4VGVXIM)M;j(u07QbP+#QE-0e zULB^^^zcCxFb95UgDA#SgN+hiVMBRzj*Z^`Yw@+%(W~2X-oCgdB9(LT<43|flS+)( zT`7(1nI6VJZ$~sf9xl z29jDhBw-*;XTE>U4POXzZP`J21K=-YriH|KmPku^=Dc`-{2YIGinDTPRGaZ>_T`Vu zjF#!UcnIYP(E+xAdXyV!27HHLvJ2StS!BD0hw!y?I1=cjCUBL)6%`qm#mvd z`9g#D-tVn->IsOXzPY}Qho#@~$Q3OMd0N&rqllErX`p*n=>6?cr5my$y5f<#HK`{n zPSj0gmWlc}8G#xqds}VzmNiDIeEw&rgY@jas|!23A06kHb3+I0yN+UR=M|#$oOApa zr&ew{(!lu}na!t#F}+n~kZRKC^cst7L?{Ll^L9SF0y;rXADpw`wZaH0VQXtjASN=+ z+RwMI5wj7^ypB8_0fgT>?IcS_ew)0S8V5wx$bbnC&oapM;JHk)TX3P$SOpIw5=RH5 zk1x0m6k0#n6q*;#R@2tsX12Ce zIiD7q{<*aX+H`;;i%8f1qAOf6k`_PaxbyACyXwu6z`bNDQ1%Y_yJR8UgQTz;)g|WK zCmV>l!-+W|L|iky2zDtkCT{0E^D%7klCxE)xaH6ysL2^T2v?vnx*JbMZ}BS(7#7nw zB((k2VrW#3JvS{*QxVj}$~=hFtk5!fcoBU2w$cKA{WcKaM;Dz-{i*KKimcvQS z|KAJ4^&(dvuGU8Chg)t~!n4ObWA@#2Bsn2G`<(}D)Zle5dBj}qLo~R==U~R0ncu9m zD$PUTYQJ7zh7YO6TH!ErXVd}h2BcNJmr+JbI4Hv^UaM0}i(AL>&sU-?g7T-cM^CMD;Gp=EIk1UwW%F`#;~X@aBa_5#yalk?U=tOCZgFcbZC0@)xem56q=HUKCI2bq84pp1=8of#{3qo>Qy1DGfq`S*- zdH`I6xBUAeF0Cd-LT%QJ;8JlGJcH;wh~^M`*iqNTv@I@bY&hcAD}ilJ|Cd5jLJvo$W~K2{Z<&jT zZ&Nr*8nwWYHuz_6ovUG=y=H95^!YD}6*A?522FM=fFo|%-<3iMokc_%dG&Yu+mzxdIn7Q|tX$3rEg$*GbEE0oGG}u=(=$TRM}F%6EoCWfaz==G{P?*M zW%}ftoI)SM)PxjT{`#HgMw3m+=R#9#CZ82T{^X|@L6EHii*Z+lAsLVLjI{facg@*; zFcZH`TX3zTt&xd|_4M518ELZeh&GLqd1K%6*o=agZOw)tT>mqIIJw{z)3p|^o3D<- zX8)e#fLi7(Ov%nXqp&N@Ja(8gmZ{` zs|-+@AWVH{6w_E)+Apd%TWEp$uC@K6e;90jqH%A1FWnr}wf3re1)8i(ckVaEL*V{z z+L)ZT?1BrmMxg(^B|Tg?nBZT_*I6O<{cZqJ|4S%ZXN+BP3vh*L*AtrVm{j z-CN}YYmME7p4A0XNz|l>WhLir)g`h!*qCXNb z4~hdcJ*W^|#dwg2`WXcbmuQ0b{ign&uHn)$0=?Kk5E=X~epsqFw|FP?31Ns&$@DP% zl?=m5uMo)6L5>O-;ce2+$_s%AssKWC(cK$fo1GFp%g@)@u_U`1ohHdahfNxEF;T@4jWvIw?JQr%&Fn564joHgCj_j#BvSynq{~AQCZdMa`Yhav z%aCaf_Nsv;gtuc{fuTjxWzyRxD~nCr?1W3eY^mJ0%33l8Yfe!1v$lCEodemU$+k~~ zagu&9?7-^6jmQd!yQ8Nfs7KcFEw%E*^ayvesNF2wbi{yz2E4OX!K((P=?QH3Sn-g_ z*ie&h)tss_s(nujNy4!dnZ1*x#@&Gj%8FGthRD<Y0g;y%Hl8T zjj8d<;d*mo#G$F?sx>&})e#t2TA?-U1R~?}Pz9HITN%1AGE$i;Rjrj4fl??B54Xlk z*dYlYK{IY$4QnxG7|FdY4azkDml-gy4xkDq^SE1#Bn!_%#! zfE@3&iUiS$$BR}GOhZ0zt%b@bi{E@gJ_qXrc*=orX-YNJd$ef&M(c2;(inp=v~=z7 zW}qW=yj;6kwkm;(H1hclH!gm9?Rq>oX2wy3Y67nm!|*rjWq@vmwzeC9Hvpw^lM z)1>}Gmp%O%WqEZ99RcbSS6DBG8Ri{4=|!a`%#i(%-zHIeDqFy&8F-zAG@q7?_vzQ0U z*yuy9q4OiG9J=UC?m<`S6jE}P%!`>`UuUq2cso`TmeOdoiBHhljLxQs5(9d4enidN zhuVbOzLUi1>vwj+UevYBVc{czWwZoFM9;yxDISOPnOp={8XdoWy?IaffZ?y@);BD0@s=QMjtHM~B zmP`Q;8Q3&L*V=uiHb$z4Zkr}${Tc&>w)iwa*V+TGQd%htQU?2}tzq>(;r_6+0#-Iz zM}IM~yVj0aEi&mLuw=wn42Y)pj8{jAsiSScjew3Blo>*s^<8VnjVHlrYJmcRH||tI zYZyAnesHLcSoMkOWR>Rk%n}31gp$ed&=Q>tP;H19l_p3PA6v3t5f20BZKc*hK#v=e zNB~npwtSsMOM;ZC2uGfm&k9`x+?yXOlh-IgDUQKx*pi&rbw2rL@N&9)3NGG4ZgQ_s z>H@AMm`f_*)*Vp64o49avqFy3Gmi0XUqPw?T%Qhl@s%Rcx z=F@vS%t+KQZ*fwTVbQdM0In}KN+ZR)w*;ef5QfnAiK;yF@)(_)m5V^tSY6QC=yUR0 zs)W%beh+LCEgNYf)!75S`n!Zgv%xK{8dh3*Dh~+V08ogn^v+cyNT~s%r1KWw+3G#t z>cov!j|BA(Q?V^TscN(5`A^D{0<(l@QV+8rnyBxPRw$28bBv;BRqz6R0QH+@s8X1M znB_Bwj#5BTeO&N(*Ni}2))o{@%ZsBWD;E+zOSG>(Ehahc@-`vOCq;l$97vSDa>1!j ze;Q(Lk#w(w)0>&zeXDeWdyq;OsgBOCuYUEBX#`SAQ>A3KYjvSfo~R*OFhNXDbO)j^ z8UhG?|0*XluuLKaj)MvV$3HJ44l7}V_!i(hZNw(4wMH4}h8$8l!jOFip>vj~a=-vc zuw#fT-x|z$je;ZZrsuzJz#$Ynf zPB}oL=CI^qSU`8$LF7ggC676XBc%j8<1ng5@&*%#a)Ql!rt6m#$np*H zx}Fk9B;YP+>;57T37MvF-yi~Is{dV-&5Gz0Zv_@r>neVIt8P;ESX}5AUlc+G3!fT_ z4NDo>(kUafK!sS(Ahfn6<9*dHl?v%7qMUuJOt%?jnq}9KGN1{u(!N#dI6A+Uea8X= zi@;)ph}T)50B7JgN9U9Y`q!(P^T1! z?^I@K9_<<(^)U%y^EYghc%JSMXly@PZG1-kged07)GIfp5l|#WofN+q=9_mWDm*>& zQFtSGWfeU#gZgj@mMcWNJ}c^^EY^9iE6YRGGP?nN2Eu_^`pW$f;eG#m6wO3^Ea_f* za^}G$|0WOj6>19m=n~yRDNNPJ#z1%X+EXCTL>*DT5t?${Yd-+6&7;Fs`_UA5ygo5P z5#{c+zYDl^ZFFL~H6Gx<7sD&{kv$Z??q2($2<*ccu}t}Cf?BJ?{g}^FIKOcaEknTh&3Nxo$(d2GD| zNYMjxIUuJ~rHTE)EJk0|6)7M?fO=}bA>;Lf)3i<4=P-&SArOQ4;xLXZAp&U-iUwK( z18Hz*WiSn_V&@4s-D77AYDe!(SB~7)p>#=o_;pZr)Qf#qz$4h&uec6m3j#gk24*kR zsy8z5Q2U5O%M@&o>SVfQOXvf#-wZxHT|P(}W`8I-<|SigfgN{P9Z~kCfKND>ESCLa z6ihtnK#KVU;3)?-O7KPYhau;f>7&^)hQhG>k|@pag+%R^8yGqJ+~DcUOoxGBOoIKR z*s9=XuwV>cW--dJWyznMxyjDe3kaQNtc_RU~|UG^tR##FU-lx2|5K?8aH;=fR3C|DoL9DkX6)>e zElLYzoN>WjWX)k$#7!wHx}7W+?1(rziR6#p3-B}k1;Ax&G+-8zv5m5sE{lJ%P89G% z2KLD>6W}c}EiG4QQjL!NJ#S3Kghr^WNf5XyC3oUDzDBj`c@4!`)W^M}Y}cg-8J{t!CCf zUPLWT0(5GLh1yC}^~ox2piWH_3dAQ&%7}Bf(zL_2o`Xqo0djhY4LS*E2!)gMrodPX zT5u>RdZB()U;>B7NJeemBXUmBO4NPYO>|~G(lRJh0wrIGNCC8|Vo6t8gC)UFdQDp?71$|(YeS)W`gXq|K|fxFHvo8UNB zt)d@0+R0?14dG;R;yhS(w5%j%cT7To&>V#%j;Yqi_9H@00J+^nt11*L%p64Vs*fTS z9D98LKjGk!qXFrY4vI~c&pUX$GSOhiXx3q7o-SSclq+u5=n&SWYro{cYVGhaAYXP! zt#Wuzbu8$QrECAr3mV7*n-bgbX3!Z$xPRqbd<5e(|Y|-ml=^jAdBs>XepsQFaaO$GDl*vELQJ{uCFV` zuoRJuoa}PZ!NQL08@8=znfZ=?7rhRn92PYypIUZ941+30XCoLNQ9!kBTg^g4sP+Me zk?_%?LM!2;-L{x<#us7|5TNd1ZH9AqkAU4&`RQ)cIlRUWlb-+sqT99?2<{Lj?<7@;rpBaxsdI6^tmc@W@a=!P^VQ z1xy-plQ1I-*4>Hfu!zfv!Z)kWEU_Hlm^WC<`H3?WhE#x)o7E3nXg0 zQJ!o;j%i$(yij(EuS`_oQq*!V>0Ywb*NkY={)$Yml@}?y!n@JqizKG*Ak8U1kl3qBtY(>1<&tU+-*NX`Hq9 z%(8Dto6g$|`!N33`hHA0nI@ZNveBaU+%pPKaH_)zX(Wm(cSRu~(xFzDY}kEE9W|V(PWo4=rTLm8aNA$4J<=Hzy517|eH+OvpY1P&OWoMzmybz8%M$Fe>UVLPx=a zrq#vcm%OlJj~Ku~Lr5OT)&p|8P1I2e4O)Lf5>7M|qTSVTI)jiL6%5|<0LRghdo<#j zG}QYg|LY#iYqZ^Cz~Cf!o>Y{0*k@UCWx9%(Cd`XL;$ly_>i@qYr&i5$<8khLBPlKb*p>)4FOAw3ec_#G4?R&^6*Nm{lcuoNi zAnj3rBMl!ZJ(vcn$B-={i=yW_=xNK2*%BAseT^$|aTGOh*Y8Vgx2)!t6VbrBe%_=6 zQDuRT3pKv#)1Z<3uvB+JXe7t3$jRbkXV263pvx%&hqDqku;T3Yn%@^AdUgToW9)2E_=ys^o$bR?#sKE3QgEP0N~{1YZQR4@6j;+4)X0EyWH4E zd8A9%e)4ilB()877f6}}QNE8%gYOp39*L(xoEIeZ`c~7KF#_R zFe<*8=(H-17^qLOo`q`L^e8R7@ri#N_oKik5wL3FdrM*tF@jni{TK<_|?K)Mco``8Kqu zL}v=)q3Yo}1K0Vua$=mO#Xa;&C+Q#0qw}XW{$ogWGyP*W+QauRSeoEzfG!vrs;}N0 z(N1~n8#Z1?H3k#iig+OE{{u@ybjen17{5#bEi*!lV1vSkg&u`ah#iwtsw}knO zupui68{?_EBtdE~SV`tHlBuUee-h!60}zc$)cG0sOP0Y;7Ksrfv=MCA;aa6x^x?R^ zCida0@e1VfFue49xz~#0DwH5LL~se#{16~T^2?bS5B@y_Q0}#y&wg}cmsa? zfn{b3%BTZ+;(=wR7XSt1=^cLQgXuKgW`MS zx35K6^x7?35V?Xa!;-a<{Fox1a~Y1lQz~qs^RjIuzOww|l>LV5JZ|KaQTgYjK_nsi zqBFBKV@oif1YLX?K$wNeiLIH-0CZTaw_|0xuAzyvqe>IVkOXoTS-{b9o|pscwDj$;5!I)KQMHE6QZ%d`OS)Rou{IrPS1;OFae%kv%`lPyO-3`@o0a zeZMK6JDt{$(m>|f1~cbT9L^die=DCp_7a~671tMD5h2JB>9alLaQLjp!bP>P#o)1Q ze9U_g7CEWY&*I4Q16xwmX2@}F!i41r%>D9}GgC{jGlCkx>{lI0C~H7l_NMeBMMwTq z+Gg!`Ms!EE5vh7xZG)Mht1(=}0YBb&Jr?Zd!6xjT+p)vOpHMcX0$)`hZW)l{wDxPN z6&o>}oMvU5bz{HaC{uvXmUhZlLxSdwh<)uw!!0s|@O#^yJ@HRENuByl#zqVXc_R@- ziN28yz)v)Hp?4_m2 zVCwy%@z}&uaPjpp;W_1Iew?)ZfDWmJ7=PZHI!qyZ9=ISaM^eA1aOpy&vA5Ek)Lu{B z2DYbuq)H?6mlLFK-=lT;Co6e{kZvC^7SXQ_sb3pYzex8A0A}Pv$OELQLDSFH1vQj> zLxQFVs`RQxEvRJC96`a5+Zr-?Xr7>8uNClI0mKivhxr1~0n^(dqmz!4YX~o-t97lN zFo;YZeAlp@e4jc1AF*9#n?YC(X8hz#&1Mqd55;hsQ7AYT6+|-&CC9x)`9SjlB_}-X z!6q8O@AmA3c($Pg8Hn1`Xv(4BlqZ||i~~H%LPVYnwRw8U$R%oL(wqb6u_d2-QnnIp zx&b`v3uH9uQ1G;;T4ZJ(3Zp!XX!@bxnI(s{;V^vwJJ$8A!gNjmda6qucL+|H8GwGk zp*}wVf7G&L3p`5zI-LR0Tmks82u$7s0-X+#c>~~+86eLdz-JxKa|ocPyKENlL;~n+ z8nh9hXVM@xXCPrq^;Y?1H#`&_xOyPo zFD4z!`FnW;(=MC4#FPva!gTJ)(#ps%cZg{btMYD<`?a;caLAQ+(|=L$IAb#nVC=8CX5&CcJkI{-QnzjK0|ef^;o9r)pNCrM zxEJw>7)g6le|>AjW$Bo9az6U9dNqiMGd7OeZ; zPYNErf!4EQB#on}0#~SEGaW-==}pe43{4h92=KkM*UQHtHw+8}_ThRK-61}6vG?@p z^OB2^t$>5d*L^&!lt>y5fSyYOXDkdbT5pysA(f(%t9jF^MUDd5ox@Ii3Q>Qy8A^t% zPwr|W(nuQDw#IF`mg`8Rq_<@u-g=>gBac6So8nH}$ZD^T-%FugrE(R?XTJUx3Mj7)Ucs@ zmbeq3L>95t4AD3VkyN1?X#$t}7O}ys;d_b)?Ltnvi^R0@@Yt(yIHhmZZ~Zq>O12ul zccEKqCXFM443m$ZUP4zaPZ+t}cmV+9>NN*09rBeDuzVd0fbFNOoL`aClnx>TN0@0#Wt@r}F- z#IqIKMreQr_m2c6?)xL_u6TVhG~qEGB`24=Y82|`s~Lp`P?yVW85bJEtVHnsb2{7- zrS27>Dxh~WtJa9KVkELaDVSg!4Uq-P-Y?=JR#j7nOE}zti>DkC&K#vcl)DpGf!hVd zih_?}bL0b~1Flj-#8q<~<-|bGy_d<%42`1B3Ij>2#C?NNvjALW0B#qMK~oia1pF0h zVS+u{6;nUa;aj>{)&t({mykuA?zHL0hS%L2bFhI8PveNK>U`UCP_yZ!Yec+2OU~zs z-iS6E?Ln@LhLsT8uu3dutP$C6xLp=|DKxGUkD}~F+RqC=$&p0<{WK!03ZlfP9BH9Y zj9HNsPimrXh$XgljZY=H3tFNn}}a)sOy4ahzzsN5tAaCD!}btM)6X$fJ`w(XYT<>%GewqC^gV0p2H$b*jHr@or#QL zO1Z6!Qr_fx~gS0cID;{eCPF}a zNDyNTQgB$sV$ZrKfVSE7L;Ggq>Qy|ZFYIZG8-xQ0Ih$?4cJjBSOxmYXhB|jlD{8R8}h3@6+aO-uQat*E~ zuXxMm^*71yx5{Q|WcxTDUp{Ry zF}Ne0nh%rC$$T9S6t54BBE&USxe8(JXjWW>v=8Z!*4)*YYEdTV{r!QG^NJ$X=l$`O zIvwbsU;lG&Rkl`f^AuQ zD@Lh4&;F5lD`t)_wO?5Ev7lk8H#spsZ}WrFu}(|9J7Vn36avB`&z4t1a#h0|<;TziOcr}%;?7LYi7Rahibh%DewtuEA zq%hV3B04S>e<5H+&YuLbDe#~svw5KfayZbwMJNL{`9k{=unf_yBIvm^0iv(^E@d&D z)uL{wQ%5#oX<|>fsn}QG+bf5OM|a3~(ikH?E$j$wWqP+>ertn4s;(pl*{mPv)VCU5 z)}WbkZIwN7|I9dlakajlQt+VQqJ_$V?-A_F*O4K%{#NvmFGc!0fv>zI4d0hDW$&d; zD{$aP*6Xa}a}k$cEkDb20u7oO7qG|qAPf%4T01RZ!ocqj2#3BT7?PD~B9u5x6fR%_ z`d0mkwr|r#5p+Di5PHdY5L{@Bh(K?Lqj>i6P@&qoanD}#r_WV})1s8b1nxy-t%XV5 zQnnbCwVn_?SOk>;84Mt?%sqohbzqNKb=4Lg1p%e!E2W@)dWufvT%ZtPF!euRRw6|# zm@&(RaGcD+HG&WoO0`LP2f`??yd(nd#0`?9IFk3OK0ss~cLoF0V__z-n0+;@PqX*) zK@mM!JqJ{aCM%;BwAtnB>aF!V=;Fn98X*dSZlF@WmJzi4u~bM_Y6bm-k#Myy#7G!& z01Aa##EZ;g=pjA1T z4LkMPStd9|-h~oBT)z{+USNe$%6$MOw-6=2BxJ0-1YK3&)7V@P_aRxeQRt*2-3-Lx z2ERmt9|*%P=rS9uDs(DceU05ttHyLGc5M=>4h90A0=%nQ+q4n6KLPzG(fAGw(+yL| z(Hh2zLne=fFAB(bW4*H%N(cqZzIT(*cPp%(8_MNMt0hGjJscOYYLk)`RzeMtn%-F* zBOA`P(U<}%xV26yyJ$YsZh2~+k`w&Qhe9b~->=Cg zgg-(zz-VvWV+8La z!31m5w_q1|-upGFUuaYtBo>=(>X3CH>p5a&HqYc?yR9a+hp@WGX(iZ%6V*DJ}X5hMoa@Z7=`QfAr!d(kAbjf& zm73LX)8LjcbkSix1f=Jv+@CX~YFhTHYlt;x{-)ww+mr*EJbZm7)ac;)5>!oNYIg~5JSG2Ix|}*Xb;V0nqLDTpKvQQk#wo2Uiz%W5S}<&r7w!Zk%tyO7zA-)1bI7 z0HKUvzznEQVdTWRz=qZuv_E%=)6EVcsaHzHd%RSP>Q;@D+B_h6Yo zS`wB51!V{ZNlH+bS}>q*)nB$zJ9%!@0^3DOtt}W#t*PFEQESQa8ESz<2?Diw!`!!O zkB*@6cjMp57NTMC*K>!p+)n+@vZ2@1-yR@O$Zb3l`jwNIujg= z(sYrE#EAKAsZ9)>E$c@TMHlsQ6rq5j5?&1KTlELhn8(96FS?V4j;xesozC^TWbP$F zHOcfo*+)tN)TcbB7pb611*mfb2se}4dA5_Q6|p( z%Y|2`ulAMw6s`S(cm_~vTeqH(%JCk}K0=LjDy__thTh&Iv+WB}PSuy#sJIq}N37H^ z6J8=>`BYT-{gkP+;aXgX5m$~dpNP&7p5nBoOx+0a@q%}68}M$)RE^NSIST(%)yEjL5-Gub=xN3y<-4O+A3GK!V2@$o=MriLx-7OgkBD7CO zRlf&SGXz9Pzr&eDl7lxVQ=~>U_j=9eqh^NAsPU-cd8nA7GQt>5d6pKWvc+tQYHstk zFKq8l)b=a9B6nv_jFFI#JY|TCF!njdKxC%l5tSc`xIPV}bQm=5P=qy>yvtB^Gj_b= zsu9++QAS@sRZZ87kVZEr(es`g2j@n5?0Md;sc5(^CsOCuR6iLpU^P)NcdvFjtrro}xkccO z5z!!>dR4e?#Z2a_Y+ji zbSXj^jVUFLWXOyvMw*(nWu|7-q5Hh;OWNCxD!#xgQrj7=7FCQCFln{xGTn)4zAs|t zYf<&ujD$oTnvL}TPE^gXJwh5ORl2-@61C=-p{FBR;xwj=EJw|MAgX#XVV%2EAB(Ee zNSPBts`^MI12nQ*=9YnHBL)3R!a6YbTzx9y>nPnbLKYzQ z-q4@EReiT)J?ED!)TumxvqU9k8=YN_W{!V_|j`;N;mv_!F3 zX@Is;DYWhzKZkkqaSvY|V9^oY<-lQhhWd3}wD(bIZrA6pG>KMf--QG|ptfVrveBw7 zD|zf;cj#bp*`T=Dn%DJN=?>%|%?k*_72lf`hF5=GAe{m;meds(%bVq4?;x>^DY{w? z{aU8UQiUp?u0|a*83GG!Znc~^BhB(aZou2EM<;Ro2LxN*hchxJY@Hxpp}h%()NF4bk_|Xh zNMD}IZrLtw-kFqA(j0Qh^5@+Tr{>+vZK2;Gl4KY-uMUZR(8S=h1GX<3qE2i1S_*;KS@6Dc%e|RwdXH zN+U#qa9bt~ZjP|oY{v%eeVM*r6ME_Xj!C?>!+U$h7u_M8utZPiWTIVkamR-HtC8S~ z6I-7UbT05-MoA#lf0Y&8IPdXf1m(GZqzLh_B`t|e;A%-`SP8R$U)Vw(sA=BV^}Uo; zN4Z`*w0@K>fe!FSqNJC)J<)+mVZ<@L~h9G9}-66b!$a5oj5Ug*N zU6NwE1Q#vT)=@mL*7{c6x;qSn&zXN;9V9NRB@4(P1a~c&CJFD21Iw~y&jU^+e4;Ws zwH-%KC>QQm+pvEqSs->&Jj{p)A5tM?x5BgB%hOZ!Z~>q$gD^4LK2<`3(*%PtdR6U2 zWU8{W#6!+)V@ck@4=vojC$Q;c6#c%-2jA++*pn3MdGG?p9l!mZ#~Q9%2Orf2baD-g zwnmPd_QeX{E~Lb+3wyYTY*7ZH-eY?*GOMp3Q<+NHPF4%o$Nb1bU!EoJlp0ZajY1~u zk+$D7_-Mpkiqve_5TqD#qq29EThSCH-oj_EGGqTGk)%g2^vd6j%9|;g9y+GoibH;X z%JGp+ZFv+w88PQgBfq2`}1x^o&W5ojzg*!NQwK02XWGpTeTx-*74QDKcfLZcly*Cr}6)&q& z#>;xnbAimaDr9DQK3gpS{2E^*VUo=MsVG)SUE|Mhd3Bgt;9is%sCjD<|7e(^Dk10X zPp%GMNAr^FZ3^cOZJTnl_wISA{X8%cy5Oe=WSLbZqPdM|60SQcd0KXKlK5hAq;}Qt zq!2coc@NSOTSh`gq&ZOH`*7tu?h?AA8v>c7rQzXba_Q9>a!yP2z;>=f&K{=-+R9WI z;rpY_9}q5cZABmh8*H7DTt;|(aX1{`h2b{1FAx^XOZ<>--Zzi{zP(+US0E?X4jIv~ zZOV${nMj(_143uPl4IYMVSs8&!o~U_7R^)9=>NzPoX6F?pIb}!9v#BnJjs&p3%$Zw zS4rx!A{aTDv`6u^JXes?k^1U_qCl7X08qU7`vXoI){w(xIJLPnB{$xBYx2fiLZ}4e znW1AOJbC$d+OW_Sjc?p=jNRKM=(pP1Bq#>0&8d{kL=2uLPI~8JOpc$qyI(lr++{F& zbYr+(DBA^RZE0kLOjNrMz}rh<#;~_tgBx$s_on7_Dxv6VT=&tctVcHWBpbDtUzHK9 z7vCMm@xpmO3pWd7#W)f?RyzY!p?z}AhZ%G3y+T2}Wf;ek;yKp=RsK}eE@Em-ma4V& zJ2_?(M!T8({bTYdij;1n8Bi1~ZK_w<;tq{vt1C8XZ2O)}YlqXV zwUu{huC2b}qq{$7eer zbVKEf3-uC&H`dOZw4FUQAFQVf}W7_w8_S}lw{&-egC!N8G8uZ3eYz325 z8$h5Wr<_pmnghM{wU{kgMD$KAT*Ql&FC4FQkH z=jRPF2*ZJl8qUzERygl(r4#u$^#ko{{%~lm4=Jwa(fdTjJPN3b$=;noUS9BW>1VD2 z;Hoflr@|e!YGxH0nfZ)7dhpB!GruE@Oq)YQB6s?6r5_WTqRsoIDFZmY#>9H>r~5P3 zudYiOw&}X`a#@rz0<6V@=sQjwpmWJ*b@{3{_%I^$*$c-+`X;AoCyJMG+ZbW9T*3Ws zm%M#M%PM7s4wM9%VVJhA#Km(q-F08lfA6K4j$bSba(ZCb3-vuPJ8=dN)&j!))V-4Q zB}UzgM_0j78`yxT6&aX!SzK1qP>?b99h#}=q2piOfQ4d=+S$w3!&Hk&{+s; zn`f*yi`Y$huxNGgg3}q!yMMJBdV(Dic>pLb1+Qwdm;I8D={2#ey_^sgBz9P?Nl2U zZNOQ__Y~P98u`*&_R;6(-7uVR-7>?;B5N<^c?03?HhnoRzk%J}K)ErE$j2z$vd~I; zX6&YU(e=eJaFGDus|LQh2`?5LP2Ts{GW+##I)~I=cwXj01G)O(YX<|*?K;JAWC-9n zSnmNs@w84RJ0{vjM@r7%_0-0O@j9Oa^_`E#Mgc{aNpBL6KatefEFga=q;ZXainfc= z*dm~Q0|{MpB$<{Lf6;LANV!FluvtU-2vFk=N0JSV%M)aTATN(0>}kFthKy33?};JY z*47x(qB`3Qf}QX{(2dsoNRtk!?lj6r_$key==VmH?~8tK!tVpoZ#phE9{s)+zZ>?u zSt38`i2p7h!J*$7zuCEodu-{tYp*d(fMXGWpGH0&0r0FaU25&0wCJ(wlM!Hq0H-3r zAbvj@{k{&rPe;Eu3;^(04A=m`nHWG1okt!qM!s{O>I&r?SU<6Ork9o;SFCklb zxLK-|$FWPz1f0q%9K|`MQ2c1RxN?NfFyeU({rvPC<&NPotKsT7J5`aHO!?MWqJ94& z^==9uIPiP6CUF?5l)OS%aU#m{evz-bp%OIU1fR(E`92~ldITND=282Z#zy@6PHifgw91n_2Z+fx>tyM;>sAyk_u_lR7 zP$*jB{m3Cj>AhH2Gc30-8`F1pw3Xd`Pmnfe#eNEpB)=+f?|p#7e83IKQ0}pvL@T*$ zep}j|yxMz_0qE5ce}kk^=9kDVAFt3T(^`W%efCA8JV74(iw#g~*cD<9BXURR6g5uY zE7Td4?v18b!r(J2FA7Lfa85Zi4zE5r)y%Fm3`UrxEO~~u16@#U>vv~t14-xW30}T! zjI^(3EQb4nNohyM)&wqapzD(f>@Tm^Du+ttX?Uc7n&DNbA423c2!H=Qtw5@GJ=FuY z*eTko{TrtK9g~kJ!Q{1VrN1Mk84hKUd`6K_#5RS#Z`Il6in*% zg2@Gv!SIi!>J7cg?T}P*CZxWlO~hbN^o@nsF8yI<&Rwxyl7W96l8dF-LUW}IDV{2$O>chlnjW&*6 zb0kZ>6o78MBHj$B#&m039=va7a0a21z&H2mZL1LlljC^rCi%6;#ofvE-6P*^vP^ec z!F9(>EW=>q7klXH=Jp5#J9G9Tw0!^u_UbF6QPyx2D!@|(HvaPH5q)j(4tfHiGIDRF zS=XD15kAa#lC%W%eDewM&PCDmYV-q44G2)n@3G45JE9ipC{5_QMkTH<;^nTfn*T&P z!5)NP1F>5+=SD3!m+cmbmS{}E^FA3PQKrL-6A6qIu;Rz%VVX$eXWu{7$4~S9_%HsZZIQKfH11D%F0j6a|z$ic%vy%9{Kp5C+N_H=xRa z@~!)L*^1&*CUzX4${jmGO|oUfM_2*qH2`l!TFeZ1Y1qE!hr$fUu%#PGboq4SfSx$o zMo(Q}PEi^FA+US#v6J7Tw;kM6!xGEq5o{P-Eg7bL(!9m9Xx4KZ&@jlTO*f%0pF~+# zs*mlv-&Kq-)kCsIG=noYRyTBd5d`n?PVir^O7^ z4zy8AMoiBi+!v&%KzB~}+An!|(Denigc?PatpaZ=_uI>ZzAP}I$<<$9Oiy#UnW8V^ zCN96jrD(|Z`WNM9*fk;wdw0kNkJVz zp)G=_Vk9_pK?0{YM#a%#+okz(#l{pRTo&p12UhOwVr7+Rz-I23X%8m_#|QD1#}K0S z`eL=<4>d*0G`+V(neo5>+Z&TN&Il)LHpiu)h*K!v^A%Cjr7671M)qXS2LnL1{cH395jJ8o6)VK~79Av=*XrD!VbIk)bhrGj$GP^F@gOQZOi|~BYHn^143Z4`v ziNLG}lsj>KG1JB2P;nRUCPdX+u}axR3SwTDh}9Z91!tM0~eu~A<1^3#+SNO@eE)2jmS^9Bk^rgJCfFjyM~O@8g+S! z@gb0({J!8w=Q;Yki4anC%pLekW0k1}Ee;lDA#Vx4Jrz6bMO%C*pTf9()>#&BiRLxd z-VjGk-uwm8!OlFq;>0I@k{^0dXP|b}iiY%E+J`0Tg=iGfsw*gjxrTet7-$wkVS-#o zUoUw0JT@~*YjD3|K%x)<1`Gfe5x~Y9TZdyIB;pPxKoq4xd|xH`jt0inXM%= zkPjUIfsJ$OZL;G>WuDcCUx%jq-X*`i&x%8_n+!&XXk(GwL5SYl#UliOG5V1q+eVB& z)aJ3uT!Ta6L8+MdJ{@J-e=~kfC$iXbe6Dd8E?3z{RzZ4YH-%*zh&)7W?n7cJNr^6Pla zKw}V_Rr@(l7&U!vk0OiDz|K#4qHjNcLuh=mGn~F5uupogZn#_l*f&<@x&YBW*w5aQ zs{|?0wsu-i;!h0YP_{VLuYFqTGt4=t+;vUL50VS-KmOmdypKyU#Wg5o7G|M*v^>H5 z$=Q~PKUUPaY70wtCf8xuXIKcP3lj}8S?J+&)M z;n$s|)_5q0cBgON9zfCl^scFKTt>kdqD|`Ck*ILuNgW%2Yl}69OzXcjvQ_nSFqEQ+rQCf z;56zJ6F1@&ljM(u;TFm?}3^#TO3KVtd3YAEt+@Px)KikU~m7 z@Rz-PoZGtWOM*T>pXd|I(L!CTOzp2Xl7D_%AkXzp;JLSR76A+Umwy@4Uq zO~%4_79OWHw9kInWRrQF7M!u%Mgrj!2lAowmzEQo>kvZ%2TD_6Oq|pvlkYq;J`q!Hh$@S%K zqgIESDw-|;rTQ`Ndc~La13fLhOy(G}Xr^H*S6RsV?R)=x0^?7@bCqp% zc^N$z-9j!2iq~tgOGm`blQQsd!8g+Vv8nLZ7tifOi9QPnKJBkp9#qq?5 zMo0&psx;@aXvh)O_$pK}MmH1VMFTWe`krfnFBIxsA=Wn%S_5{}aYH%d3{x8@H`Rs6 zAqN(5%3UY(3h!xm>e8XM0W$%4sL%ok#D|mB}4HxlrnJg(XdH{=CE`<8Wck0;*LG z`_EjY;R6yw(>38EfPA~$G;(>YJ~d94o^i08cuEVtt;B_?30ASX*D2Fh$J=#L2G7fX zN;soJ1T}~!!Eb_ArCGyIdm4S}<@sgya^l2lRQcjBC*LA35!zqSCi7*U&_7rzSS2B1K@Qu`&L!$$zx9o)hJ1(6ce#JdokH zuj8%8Cj2(NPzdA|=O?dzFog7RK44-b+Q4pHUu+`@_C;of*4cX1Kz@Nx5J{8Y63--% z5P7zFg9&*ai$)V%B8QKx2GR`t7<~Is&_~1#?OnLjNlXpPD9oRP`3quL@=}_SBXPEl zy8ed1wGR)kfIYSX%IfAxd|}1xvlWw-x|#8jpD|XaVChr;YHo(s3?7c3$*|v_@ZN%2a1XU1cP+HHn6`4SMZf ziRoLVP(PBhO`7O<^b&Y76!fi98XTSFDl9ya(UPkXtfL6##XlpRHl?1eaU8Cs!RVzK zOaymptweKAT@PE4G==%|Rqel(xh3uvcCenYr-__ixJR^xn7=^pzwgI-v3~&27n|*G z_{cqgMJ~tgiWmQE=$@}NRx`r@40^cT23yJMa79-K<9ZvFP|O(H?SYaa`#Lc#O>taF z1&;4plOsd%rvpNo%XVqxb<-_u^1#7)j}*Gg8Wo`dYR%3 zno~aD_G7q5J5#>Z%PB|yn(X&OUQTv9U2q+yhH!O}w}Hn3;Xv_0)%#oe1p1aY0ZQ-HR0kED&&*o~Upt@fGd+h&!+)k(?GZP9B33 zh(x1w&os}@XQhr)lKRw)lh-GBsno}rS3=tDyZq;~O2LY7vl9!vvawLZWB@mo86chk z53R~hKSQK#7%|0(247@>NguWaH*C4SI8Gq9TUg2PPhF_}BN`IByp6vD#O)W=PrYgv zMjfB14wDO+9DLT6BU=UOCaPwlkJd+H#SQ|^i`~DF<(3uA%-}&Dn=Rym-~&XSX>kL& zzb#*qMyH9{v;P;f{4!M9im4$j5p>6qhOQC6w~0%FZMN3b-YU!+VufloIg)Ko4dj^& ztG<`d*|;>Jfa>;N3W#i8z&O}*baJ>p z0h7LY1LD<#NE%P)fygnRDE3#aRXDKg%O{1dqJ}brDhVjA3zSBtHMltgF_pX&USsVQHDh?k9tF(;6ChZbEQa!_gH?= zyb+%QM;gqrD^N?+s7Pfa z(yPa|%MsgHt%s&PBOEbYkYa9Wiu`}|)Cw90WC z;{KHiqOdt1z@n3&zbH_;7^-8dV#kwCUJmi&MTky`32b&p%!J^ipH!mah!syY>Cc~aIC&W#wnekGcQ^f-SdtioTms6*7Ls~}34mD-Gt%Vun2N#h`o zR?LVit7wsThU@X&nN#v6cUbe8nKyJcz*rAehH ze+CR@w|H7X_D26_@2vS-NROhxc%5PF1FtX+H8Gh;m;~ZU9dF4kuf9=5m&f+SDQB}f%#FKpz9tVLaa_k5? z2Wi4rW>gZei8qC;|Cn_a_eDT!5+&uOGdfL6;EGvtjp}MN` zUu*IR9Lyl8!Z`Jm6Iws_#&`oJu3?`Z{K)jkSHIV<4iW@R+dE0{$MTRt;J4_`}%4*)_ZJT>t@i+b7y*6^s7K1bT^#Zg|5vRCFFJ(IV=2!llN0LXctD*5X@>EWs z0Sj1S!;koR{}+zO`Yc{Q1L}$!5Tb9hlwgEXmpKpn@msI@8ge6g{g zsUUvhK>ogGuBXI~rWMo8PMx|xh(|F%3gv+dSmrSpgg3#i+rw>jJVk3ao3A&sYP z=h?g78JxsFD1Y2`d%}+tt|FgO#oC;02_Qv5>|jCzy*=JGt%~bJcV|PWKTzy>vJTFn z%?5HP$^6>rbg!4_dH)8|>jq*|_W5MC#7I7ZK(awkJm2zhu!R@?@RWgk5 zYhHDF%w;&>GHUCn7c%5+fxvdxxjl%}|*JUL)sUY)BYTc=})YGXb@kFgev88l}K{QP4C`RyFy^t$S z;yRzu>C67N&@(z)NO1{JgpiKqN+Kewx?c-Xf}GpDcd5jkAbiT`q?bTiaS>&Bw2Te@ zV%{qucz#sFb21tuhGf!FOh)yYTu@bWTUavE>MgRMMMT;xKitG1ofkqxq&m`9!oUBQ zcL>GYs%l5R!^MUt33Qmi$g0KsLzIdbPg2OlLC?7$xWR%LcI+poZofk%q4t-$&sIQTYINyDNT)L}Xr$${0-G-$SR(!z^6jL0x%Lop|rs9lndc6Pg{0Jv% zQh+rlG4i-%#Zendukv6>BFQyPduL8R@Fzl+6cWSW+4_k3n>M5Ttz^!>a?_tmtRJGu z-1koPjbiSY3B3<0phg?aT`D}|Wo4m5F@xS$cz%g#S?Y}@Uo{-@!k40I6dw0J!4FT) zvO+;GTZz2!k3~BWz>&|+@!+j&h}JHNI_s6?0HEq9@DwC~fM1fPUn(W($J#6kUH`C~ zud7hl&HH>UVKbg~^9+K!=qgg2WH`#)!r|ih_>*jQw`U>)k|GzK@+OwbjohM` z=sqtc5%tu97%VOp>U?HVO=c~gKjuH$6PZAQ1XLx|&1eu;{`Izq6V%AfALg8fb(=>x z(JWp-DDOPxm`b1OmC{>@{VwOY&#SpUDyNwxF(W-FXQUW`0KY%7Caeq?Z*_-3x9K9z zRG!_LYg87Bvz_c=U_IUBubuo_FV=c*dZAZX?Bou5>#J?I6e~N6cto;T!g}r0p(Zxq z;Q-)@b?ozxy-QNTE@d>0NZ`=+ZO$$HZqz~S6BPt4dP7=;jW&BdUMlrYI#@uN7@ViQ zTYkPZ_%+}x20tq>X2Rg-_B%Qx72iL3OfsG7pFC|lNYR5I!fxNJ__;mw8KdZ7+IRC- z^6HHcFO_-=$^(#5R^x075m0owI$Rc`5TU5?8Sjx2pc+HJU@uPo9jaMW)E25JR8CRE zM%sge-MhWV;{JoG3H>Gb{lBU27-#};b!%ZcILs_(vD_E1Fp-Z%h=hMtRpUs8?=OMY zEp_=~6&i&t;G0^XatowD)^U(lzc=0ZWEL208Pm$w`DmXKmMVBSbfaf9aHGeY>ea^) znHALg!5?kZhK(G6B=R=z^T_^F@}^JxJ*of)**_QT(G_xj77x36Dufd{p>YFFtIC$| zT@ue9sVxWfy5W4ER~fNJy981!{#6?F!x-mZz1u4wXdIp! z!zDNhfcckaL@SYNNz&TkmGOQN#JnWR{zF_kNp1NHA$8A~CJ;7+W6I-M(46j+>cL>@ zKReiZOqvuvdJnq2^g(53lU9M5 z+Ca-`8m?OZSS^2L&V=@JGlCFYdp`Tw@hM3ePo9dWH3FO_)ulMWARYc01dDX>6o-k1 z24p4PVWQg}kzdjd6GdK0*pF8l#5ju4Ql1#`2kF>Q8Rp0@y!)c49+|SjAp;dK$oj+9 zjd*hs!Hu1`4u@^mhTD0X`jlV-;Tut>;}6eT@Sn;`y@b7jMqu(&5o__oQ{F3>WJ3*8 z^WG+oGfqTBoJdt~jPOTAIZK#t_Oi z9O}XHX&ibJ%TYrxEG!8#UaX3j@(%uul9mxR4*3Mft3XvM)cknf1j8Ip9*DnFvkwO} z@F8>82jp-tyuc3}43_^^e2BbUBl(Fn3lm6U`;W zA^N{BsYjk2l01i?=(SIzoJaH016420C5th{lHy(`%3KEZOtDMvmgW`4ph$dF>)kMi+)+fgC;aqDG!Yb2D_qWknvb>eooR!R*H|qA>O36?8P0< z*#cV+md0B@XzJcRF;!{Ui;_JmKvGjFRriF9TQmUCxOI;lR$J&9LwxA)9+KQ&s=M-I zm-?983j@tiVo4rsCZ!X}LVWJu3kfExBLw~bS~$|R&UmXGDXlIgtzpvhaCD&VK1$RVnYg=1#w>VIAOJZ8;`G~1c__!x{ z*07v?eSQ?*$?Y31AVDLW+tdHS)IJ}VePXSRd4aJh-xIMXXn>5v>~8oBs)i&tnB`ZT zL%vq7sr8bn)e$hZ!INg6>(kg{~|(_%V$TCOB+zEtFNspO>WJeXH#|;W$1nMfzLza%l>= z`qrn9=6DBPXxNVI(a-*qw4y*Xr}%O8P43ZqAO8JCb3!7x?;i!@vG_~~^^>y6v7k%{ zg<0h~Us~~{7>dMrpC3mgCd9dFUsCub1pKd3&!PSCB-2_+*$__(v~+$#8j-RY+9tn2 zH8v^GlE@oHS3*CiK{mKG)rt+sV4S1#Bp!7Tn*d>7vJ)N%J$0|%xsS(6!`)Tir@YZO zp-)}-XVriFcZc4!p}xsJ<$X}{`S%kc4a?wXq#|RTDh%6@jgIxIFzotwD_@YIZsmP` z9Nj9+x@uukzX~J2B$b`ivBJo-qb5l`>py=o-m@;=pxT?%v%+;M?t+I)!eNc@X^~h6 z2`42Khkl6$FuM7MB%G4K;VSL1uj z?^Vmt$fA{(TWX;bt5q(L-XoVJ3BQXq%bn8yPXNfp$HRJrT133xhu{shA|2K4sl{G`^Fz)>_U?19fol26+{x6tUs|2gka zpKe!Qs(A5=^A0%Om*t=*e>xx^oo@Y~>W9;usl(qOLgIVM2$Av5M!>Zb#5zuYUJ%3e zl1SBp8NetR=>3xPwr3Dber&%(-BR(VAun%i+BC%VMX0OBiWcEzaWrHcnQO&9jN^sY zs6GC7?{-lOGT$~SK!1aeEb)h}-UnQ7;b%c^^uJV*jRA$8mCSqDf))`6nCpVZ(p~TCF<2B^9xag@6wiu+1uz*kQ$&4lhmtYWO>wQ6*|F(w@1v$b@ykd0$fVl}aA_GKd!9`|tbTIrA#q_<4MO zoB!FR^O@r7A9!Cyivz6RN=>;RH>L<0zJU_?W%dig>bS%K&R~Wmb@0jx74U!fZ$Z3{ zzW4nvB>EPZITBAj>4qCs2o#alt*y5Tnb(<3c@6Q0z9_rkZB%jSC!3o*T!^m1Q96%P zbSG(o{y^|XnMX^xG+L)L@;BV&36Q@br#_pXZ?jPHSaE^VOtpGFwj{s!X^fEi<9N8A z3x(8~j~|u|l5MR!H-AaCknIb}pb<^y^G42pkiST4YxAs4EyVpZRk*uy_yC&Fl29Eh~)gI#aWGh62 zDN8Gnb(}8;o9%r@gp>Xan}d$tEN_%50jQK{Emd4FB&!c@w$r!0JP>CBIQJyi7J3ky z`12}Me6YnQh=IWB^BX14N_S*RO0<~T)UranF)Nl3pYxiT^eenNPM{e`FT*LJFns;a zxR6hae6bdhD$nL>v!_Tt?P_pAb{To;BB|=z)sJPQG;>pFw zfuvIi1hv0NY01}I*BhjorA3kj4SrVA4sexNcOdYq*lxe0OBVK>lnp5vi?iyAWyl;C z^2Hv_$%2KG(fTV*Ax8JcUx$>pmufC+YgnlcT85$0qHOY)`#QtxXYlUE)KUGy=1mSJi zR&_JQZ-ie?(WIM(O27WES7ePD-%S(u4E0dQhdK`5^6~nb9$;wMu_E|!NY zNcM$J+oi5EwBXW<`q-mB2K3_5l~o2zi|cE@LtXFlZOXe3nQl`;1DPMq1SGVGl-R+s z2v>LR{ibTLWdY1L5xLU-zt_jfvq#H1_-4Pq0DkyIvKrsmc?K75&hL6mDE0zBLXii> zv+@`@)!fj+lO|^EUzWqBFW5j)MVAhOL=r9k>aWBYf&k$4$Sjyc-%@f>EQNlC6!uZ} z7_j7B6CLC8^`7tQa}+A62>XJlx1jcmvbDY}lvDDP%6ssCn&3HbGB@vRjKz$G?NAwEz)O`T`*gnqtU%

t&=!zU;Fp}`0#KG)$1R-Bb3LdG6 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 I{}TT9{|hI1$p8QV diff --git a/vendor/github.com/b3log/wide/main.go b/vendor/github.com/b3log/wide/main.go deleted file mode 100644 index 3030030..0000000 --- a/vendor/github.com/b3log/wide/main.go +++ /dev/null @@ -1,483 +0,0 @@ -// Copyright (c) 2014-2018, b3log.org & hacpai.com -// -// Licensed under the Apache License, Version 2.0 (the "License"); -// you may not use this file except in compliance with the License. -// You may obtain a copy of the License at -// -// https://www.apache.org/licenses/LICENSE-2.0 -// -// Unless required by applicable law or agreed to in writing, software -// distributed under the License is distributed on an "AS IS" BASIS, -// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -// See the License for the specific language governing permissions and -// limitations under the License. - -package main - -import ( - "compress/gzip" - "flag" - "html/template" - "io" - "mime" - "net/http" - _ "net/http/pprof" - "os" - "os/signal" - "runtime" - "strings" - "syscall" - "time" - - "github.com/b3log/wide/conf" - "github.com/b3log/wide/editor" - "github.com/b3log/wide/event" - "github.com/b3log/wide/file" - "github.com/b3log/wide/i18n" - "github.com/b3log/wide/log" - "github.com/b3log/wide/notification" - "github.com/b3log/wide/output" - "github.com/b3log/wide/playground" - "github.com/b3log/wide/scm/git" - "github.com/b3log/wide/session" - "github.com/b3log/wide/util" -) - -// Logger -var logger *log.Logger - -// The only one init function in Wide. -func init() { - confPath := flag.String("conf", "conf/wide.json", "path of wide.json") - confIP := flag.String("ip", "", "this will overwrite Wide.IP if specified") - confPort := flag.String("port", "", "this will overwrite Wide.Port if specified") - confServer := flag.String("server", "", "this will overwrite Wide.Server if specified") - confLogLevel := flag.String("log_level", "", "this will overwrite Wide.LogLevel if specified") - confStaticServer := flag.String("static_server", "", "this will overwrite Wide.StaticServer if specified") - confContext := flag.String("context", "", "this will overwrite Wide.Context if specified") - confChannel := flag.String("channel", "", "this will overwrite Wide.Channel if specified") - confStat := flag.Bool("stat", false, "whether report statistics periodically") - confDocker := flag.Bool("docker", false, "whether run in a docker container") - confPlayground := flag.String("playground", "", "this will overwrite Wide.Playground if specified") - confUsersWorkspaces := flag.String("users_workspaces", "", "this will overwrite Wide.UsersWorkspaces if specified") - - flag.Parse() - - log.SetLevel("warn") - logger = log.NewLogger(os.Stdout) - - wd := util.OS.Pwd() - if strings.HasPrefix(wd, os.TempDir()) { - logger.Error("Don't run Wide in OS' temp directory or with `go run`") - - os.Exit(-1) - } - - i18n.Load() - event.Load() - conf.Load(*confPath, *confIP, *confPort, *confServer, *confLogLevel, *confStaticServer, *confContext, *confChannel, - *confPlayground, *confDocker, *confUsersWorkspaces) - - conf.FixedTimeCheckEnv() - session.FixedTimeSave() - session.FixedTimeRelease() - - if *confStat { - session.FixedTimeReport() - } - - logger.Debug("host ["+runtime.Version()+", "+runtime.GOOS+"_"+runtime.GOARCH+"], cross-compilation ", - util.Go.GetCrossPlatforms()) -} - -// Main. -func main() { - runtime.GOMAXPROCS(conf.Wide.MaxProcs) - - initMime() - handleSignal() - - // IDE - http.HandleFunc(conf.Wide.Context+"/", handlerGzWrapper(indexHandler)) - http.HandleFunc(conf.Wide.Context+"/start", handlerWrapper(startHandler)) - http.HandleFunc(conf.Wide.Context+"/about", handlerWrapper(aboutHandler)) - http.HandleFunc(conf.Wide.Context+"/keyboard_shortcuts", handlerWrapper(keyboardShortcutsHandler)) - - // static resources - http.Handle(conf.Wide.Context+"/static/", http.StripPrefix(conf.Wide.Context+"/static/", http.FileServer(http.Dir("static")))) - serveSingle("/favicon.ico", "./static/favicon.ico") - - // workspaces - for _, user := range conf.Users { - http.Handle(conf.Wide.Context+"/workspace/"+user.Name+"/", - http.StripPrefix(conf.Wide.Context+"/workspace/"+user.Name+"/", http.FileServer(http.Dir(user.WorkspacePath())))) - } - - // session - http.HandleFunc(conf.Wide.Context+"/session/ws", handlerWrapper(session.WSHandler)) - http.HandleFunc(conf.Wide.Context+"/session/save", handlerWrapper(session.SaveContentHandler)) - - // run - http.HandleFunc(conf.Wide.Context+"/build", handlerWrapper(output.BuildHandler)) - http.HandleFunc(conf.Wide.Context+"/run", handlerWrapper(output.RunHandler)) - http.HandleFunc(conf.Wide.Context+"/stop", handlerWrapper(output.StopHandler)) - http.HandleFunc(conf.Wide.Context+"/go/test", handlerWrapper(output.GoTestHandler)) - http.HandleFunc(conf.Wide.Context+"/go/vet", handlerWrapper(output.GoVetHandler)) - http.HandleFunc(conf.Wide.Context+"/go/get", handlerWrapper(output.GoGetHandler)) - http.HandleFunc(conf.Wide.Context+"/go/install", handlerWrapper(output.GoInstallHandler)) - http.HandleFunc(conf.Wide.Context+"/output/ws", handlerWrapper(output.WSHandler)) - - // cross-compilation - http.HandleFunc(conf.Wide.Context+"/cross", handlerWrapper(output.CrossCompilationHandler)) - - // file tree - http.HandleFunc(conf.Wide.Context+"/files", handlerWrapper(file.GetFilesHandler)) - http.HandleFunc(conf.Wide.Context+"/file/refresh", handlerWrapper(file.RefreshDirectoryHandler)) - http.HandleFunc(conf.Wide.Context+"/file", handlerWrapper(file.GetFileHandler)) - http.HandleFunc(conf.Wide.Context+"/file/save", handlerWrapper(file.SaveFileHandler)) - http.HandleFunc(conf.Wide.Context+"/file/new", handlerWrapper(file.NewFileHandler)) - http.HandleFunc(conf.Wide.Context+"/file/remove", handlerWrapper(file.RemoveFileHandler)) - http.HandleFunc(conf.Wide.Context+"/file/rename", handlerWrapper(file.RenameFileHandler)) - http.HandleFunc(conf.Wide.Context+"/file/search/text", handlerWrapper(file.SearchTextHandler)) - http.HandleFunc(conf.Wide.Context+"/file/find/name", handlerWrapper(file.FindHandler)) - - // outline - http.HandleFunc(conf.Wide.Context+"/outline", handlerWrapper(file.GetOutlineHandler)) - - // file export/import - http.HandleFunc(conf.Wide.Context+"/file/zip/new", handlerWrapper(file.CreateZipHandler)) - http.HandleFunc(conf.Wide.Context+"/file/zip", handlerWrapper(file.GetZipHandler)) - http.HandleFunc(conf.Wide.Context+"/file/upload", handlerWrapper(file.UploadHandler)) - http.HandleFunc(conf.Wide.Context+"/file/decompress", handlerWrapper(file.DecompressHandler)) - - // editor - http.HandleFunc(conf.Wide.Context+"/editor/ws", handlerWrapper(editor.WSHandler)) - http.HandleFunc(conf.Wide.Context+"/go/fmt", handlerWrapper(editor.GoFmtHandler)) - http.HandleFunc(conf.Wide.Context+"/autocomplete", handlerWrapper(editor.AutocompleteHandler)) - http.HandleFunc(conf.Wide.Context+"/exprinfo", handlerWrapper(editor.GetExprInfoHandler)) - http.HandleFunc(conf.Wide.Context+"/find/decl", handlerWrapper(editor.FindDeclarationHandler)) - http.HandleFunc(conf.Wide.Context+"/find/usages", handlerWrapper(editor.FindUsagesHandler)) - - // shell - // http.HandleFunc(conf.Wide.Context+"/shell/ws", handlerWrapper(shell.WSHandler)) - // http.HandleFunc(conf.Wide.Context+"/shell", handlerWrapper(shell.IndexHandler)) - - // notification - http.HandleFunc(conf.Wide.Context+"/notification/ws", handlerWrapper(notification.WSHandler)) - - // user - http.HandleFunc(conf.Wide.Context+"/login", handlerWrapper(session.LoginHandler)) - http.HandleFunc(conf.Wide.Context+"/logout", handlerWrapper(session.LogoutHandler)) - http.HandleFunc(conf.Wide.Context+"/signup", handlerWrapper(session.SignUpUserHandler)) - http.HandleFunc(conf.Wide.Context+"/preference", handlerWrapper(session.PreferenceHandler)) - - // playground - http.HandleFunc(conf.Wide.Context+"/playground", handlerWrapper(playground.IndexHandler)) - http.HandleFunc(conf.Wide.Context+"/playground/", handlerWrapper(playground.IndexHandler)) - http.HandleFunc(conf.Wide.Context+"/playground/ws", handlerWrapper(playground.WSHandler)) - http.HandleFunc(conf.Wide.Context+"/playground/save", handlerWrapper(playground.SaveHandler)) - http.HandleFunc(conf.Wide.Context+"/playground/short-url", handlerWrapper(playground.ShortURLHandler)) - http.HandleFunc(conf.Wide.Context+"/playground/build", handlerWrapper(playground.BuildHandler)) - http.HandleFunc(conf.Wide.Context+"/playground/run", handlerWrapper(playground.RunHandler)) - http.HandleFunc(conf.Wide.Context+"/playground/stop", handlerWrapper(playground.StopHandler)) - http.HandleFunc(conf.Wide.Context+"/playground/autocomplete", handlerWrapper(playground.AutocompleteHandler)) - - // git - http.HandleFunc(conf.Wide.Context+"/git/clone", handlerWrapper(git.CloneHandler)) - - logger.Infof("Wide is running [%s]", conf.Wide.Server+conf.Wide.Context) - - err := http.ListenAndServe(conf.Wide.Server, nil) - if err != nil { - logger.Error(err) - } -} - -// indexHandler handles request of Wide index. -func indexHandler(w http.ResponseWriter, r *http.Request) { - if conf.Wide.Context+"/" != r.RequestURI { - http.Redirect(w, r, conf.Wide.Context+"/", http.StatusFound) - - return - } - - httpSession, _ := session.HTTPSession.Get(r, "wide-session") - if httpSession.IsNew { - http.Redirect(w, r, conf.Wide.Context+"/login", http.StatusFound) - - return - } - - username := httpSession.Values["username"].(string) - if "playground" == username { // reserved user for Playground - http.Redirect(w, r, conf.Wide.Context+"/login", http.StatusFound) - - return - } - - httpSession.Options.MaxAge = conf.Wide.HTTPSessionMaxAge - if "" != conf.Wide.Context { - httpSession.Options.Path = conf.Wide.Context - } - httpSession.Save(r, w) - - user := conf.GetUser(username) - if nil == user { - logger.Warnf("Not found user [%s]", username) - - http.Redirect(w, r, conf.Wide.Context+"/login", http.StatusFound) - - return - } - - locale := user.Locale - - wideSessions := session.WideSessions.GetByUsername(username) - - model := map[string]interface{}{"conf": conf.Wide, "i18n": i18n.GetAll(locale), "locale": locale, - "username": username, "sid": session.WideSessions.GenId(), "latestSessionContent": user.LatestSessionContent, - "pathSeparator": conf.PathSeparator, "codeMirrorVer": conf.CodeMirrorVer, - "user": user, "editorThemes": conf.GetEditorThemes(), "crossPlatforms": util.Go.GetCrossPlatforms()} - - logger.Debugf("User [%s] has [%d] sessions", username, len(wideSessions)) - - t, err := template.ParseFiles("views/index.html") - if nil != err { - logger.Error(err) - http.Error(w, err.Error(), 500) - - return - } - - t.Execute(w, model) -} - -// handleSignal handles system signal for graceful shutdown. -func handleSignal() { - go func() { - c := make(chan os.Signal) - - signal.Notify(c, syscall.SIGINT, syscall.SIGQUIT, syscall.SIGTERM) - s := <-c - logger.Tracef("Got signal [%s]", s) - - session.SaveOnlineUsers() - logger.Tracef("Saved all online user, exit") - - os.Exit(0) - }() -} - -// serveSingle registers the handler function for the given pattern and filename. -func serveSingle(pattern string, filename string) { - http.HandleFunc(pattern, func(w http.ResponseWriter, r *http.Request) { - http.ServeFile(w, r, filename) - }) -} - -// startHandler handles request of start page. -func startHandler(w http.ResponseWriter, r *http.Request) { - httpSession, _ := session.HTTPSession.Get(r, "wide-session") - if httpSession.IsNew { - http.Redirect(w, r, conf.Wide.Context+"/login", http.StatusFound) - - return - } - - httpSession.Options.MaxAge = conf.Wide.HTTPSessionMaxAge - if "" != conf.Wide.Context { - httpSession.Options.Path = conf.Wide.Context - } - httpSession.Save(r, w) - - username := httpSession.Values["username"].(string) - locale := conf.GetUser(username).Locale - userWorkspace := conf.GetUserWorkspace(username) - - sid := r.URL.Query()["sid"][0] - wSession := session.WideSessions.Get(sid) - if nil == wSession { - logger.Errorf("Session [%s] not found", sid) - } - - model := map[string]interface{}{"conf": conf.Wide, "i18n": i18n.GetAll(locale), "locale": locale, - "username": username, "workspace": userWorkspace, "ver": conf.WideVersion, "sid": sid} - - t, err := template.ParseFiles("views/start.html") - - if nil != err { - logger.Error(err) - http.Error(w, err.Error(), 500) - - return - } - - t.Execute(w, model) -} - -// keyboardShortcutsHandler handles request of keyboard shortcuts page. -func keyboardShortcutsHandler(w http.ResponseWriter, r *http.Request) { - httpSession, _ := session.HTTPSession.Get(r, "wide-session") - if httpSession.IsNew { - http.Redirect(w, r, conf.Wide.Context+"/login", http.StatusFound) - - return - } - - httpSession.Options.MaxAge = conf.Wide.HTTPSessionMaxAge - if "" != conf.Wide.Context { - httpSession.Options.Path = conf.Wide.Context - } - httpSession.Save(r, w) - - username := httpSession.Values["username"].(string) - locale := conf.GetUser(username).Locale - - model := map[string]interface{}{"conf": conf.Wide, "i18n": i18n.GetAll(locale), "locale": locale} - - t, err := template.ParseFiles("views/keyboard_shortcuts.html") - - if nil != err { - logger.Error(err) - http.Error(w, err.Error(), 500) - - return - } - - t.Execute(w, model) -} - -// aboutHandle handles request of about page. -func aboutHandler(w http.ResponseWriter, r *http.Request) { - httpSession, _ := session.HTTPSession.Get(r, "wide-session") - if httpSession.IsNew { - http.Redirect(w, r, conf.Wide.Context+"/login", http.StatusFound) - - return - } - - httpSession.Options.MaxAge = conf.Wide.HTTPSessionMaxAge - if "" != conf.Wide.Context { - httpSession.Options.Path = conf.Wide.Context - } - httpSession.Save(r, w) - - username := httpSession.Values["username"].(string) - locale := conf.GetUser(username).Locale - - model := map[string]interface{}{"conf": conf.Wide, "i18n": i18n.GetAll(locale), "locale": locale, - "ver": conf.WideVersion, "goos": runtime.GOOS, "goarch": runtime.GOARCH, "gover": runtime.Version()} - - t, err := template.ParseFiles("views/about.html") - - if nil != err { - logger.Error(err) - http.Error(w, err.Error(), 500) - - return - } - - t.Execute(w, model) -} - -// handlerWrapper wraps the HTTP Handler for some common processes. -// -// 1. panic recover -// 2. request stopwatch -// 3. i18n -func handlerWrapper(f func(w http.ResponseWriter, r *http.Request)) func(w http.ResponseWriter, r *http.Request) { - handler := panicRecover(f) - handler = stopwatch(handler) - handler = i18nLoad(handler) - - return handler -} - -// handlerGzWrapper wraps the HTTP Handler for some common processes. -// -// 1. panic recover -// 2. gzip response -// 3. request stopwatch -// 4. i18n -func handlerGzWrapper(f func(w http.ResponseWriter, r *http.Request)) func(w http.ResponseWriter, r *http.Request) { - handler := panicRecover(f) - handler = gzipWrapper(handler) - handler = stopwatch(handler) - handler = i18nLoad(handler) - - return handler -} - -// gzipWrapper wraps the process with response gzip. -func gzipWrapper(f func(http.ResponseWriter, *http.Request)) func(w http.ResponseWriter, r *http.Request) { - return func(w http.ResponseWriter, r *http.Request) { - if !strings.Contains(r.Header.Get("Accept-Encoding"), "gzip") { - f(w, r) - - return - } - - w.Header().Set("Content-Encoding", "gzip") - gz := gzip.NewWriter(w) - defer gz.Close() - gzr := gzipResponseWriter{Writer: gz, ResponseWriter: w} - - f(gzr, r) - } -} - -// i18nLoad wraps the i18n process. -func i18nLoad(handler func(w http.ResponseWriter, r *http.Request)) func(w http.ResponseWriter, r *http.Request) { - return func(w http.ResponseWriter, r *http.Request) { - i18n.Load() - - handler(w, r) - } -} - -// stopwatch wraps the request stopwatch process. -func stopwatch(handler func(w http.ResponseWriter, r *http.Request)) func(w http.ResponseWriter, r *http.Request) { - return func(w http.ResponseWriter, r *http.Request) { - start := time.Now() - - defer func() { - logger.Tracef("[%s, %s, %s]", r.Method, r.RequestURI, time.Since(start)) - }() - - handler(w, r) - } -} - -// panicRecover wraps the panic recover process. -func panicRecover(handler func(w http.ResponseWriter, r *http.Request)) func(w http.ResponseWriter, r *http.Request) { - return func(w http.ResponseWriter, r *http.Request) { - defer util.Recover() - - handler(w, r) - } -} - -// initMime initializes mime types. -// -// We can't get the mime types on some OS (such as Windows XP) by default, so initializes them here. -func initMime() { - mime.AddExtensionType(".css", "text/css") - mime.AddExtensionType(".js", "application/x-javascript") - mime.AddExtensionType(".json", "application/json") -} - -// gzipResponseWriter represents a gzip response writer. -type gzipResponseWriter struct { - io.Writer - http.ResponseWriter -} - -// Write writes response with appropriate 'Content-Type'. -func (w gzipResponseWriter) Write(b []byte) (int, error) { - if "" == w.Header().Get("Content-Type") { - // If no content type, apply sniffing algorithm to un-gzipped body. - w.Header().Set("Content-Type", http.DetectContentType(b)) - } - - return w.Writer.Write(b) -} diff --git a/vendor/github.com/b3log/wide/package.json b/vendor/github.com/b3log/wide/package.json deleted file mode 100644 index ed66be8..0000000 --- a/vendor/github.com/b3log/wide/package.json +++ /dev/null @@ -1,33 +0,0 @@ -{ - "name": "wide", - "version": "1.4.0", - "description": "A Web-based IDE for Teams using Go programming language/Golang.", - "homepage": "https://wide.b3log.org", - "repository": { - "type": "git", - "url": "git://github.com/b3log/wide.git" - }, - "bugs": { - "url": "https://github.com/b3log/wide/issues" - }, - "license": "Apache License", - "private": true, - "author": "Daniel (http://88250.b3log.org) & Vanessa (http://vanessa.b3log.org)", - "maintainers": [ - { - "name": "Daniel", - "email": "d@b3log.org" - }, - { - "name": "Vanessa", - "email": "v@b3log.org" - } - ], - "devDependencies": { - "gulp": "^3.9.1", - "gulp-concat": "^2.6.1", - "gulp-minify-css": "^1.2.4", - "gulp-sourcemaps": "^2.6.0", - "gulp-uglify": "^2.1.2" - } -} diff --git a/vendor/github.com/b3log/wide/pkg.sh b/vendor/github.com/b3log/wide/pkg.sh deleted file mode 100644 index 22a6e5e..0000000 --- a/vendor/github.com/b3log/wide/pkg.sh +++ /dev/null @@ -1,80 +0,0 @@ -#!/bin/bash - -# Wide package tool. -# -# Command: -# ./pkg.sh ${version} ${target} -# Example: -# ./pkg.sh 1.0.0 /home/daniel/1.0.0/ - -ver=$1 -target=$2 -list="conf doc i18n static views README.md TERMS.md LICENSE" - -mkdir -p ${target} - -echo version=${ver} -echo target=${target} - -## darwin -os=darwin - -export GOOS=${os} -export GOARCH=amd64 -echo wide-${ver}-${GOOS}-${GOARCH}.tar.gz -go build -go build github.com/visualfc/gotools -go build github.com/nsf/gocode -tar zcf ${target}/wide-${ver}-${GOOS}-${GOARCH}.tar.gz ${list} gotools gocode wide --exclude-vcs --exclude='conf/*.go' --exclude='i18n/*.go' -rm -f wide gotools gocode - -export GOOS=${os} -export GOARCH=386 -echo wide-${ver}-${GOOS}-${GOARCH}.tar.gz -go build -go build github.com/visualfc/gotools -go build github.com/nsf/gocode -tar zcf ${target}/wide-${ver}-${GOOS}-${GOARCH}.tar.gz ${list} gotools gocode wide --exclude-vcs --exclude='conf/*.go' --exclude='i18n/*.go' -rm -f wide gotools gocode - -## linux -os=linux - -export GOOS=${os} -export GOARCH=amd64 -echo wide-${ver}-${GOOS}-${GOARCH}.tar.gz -go build -go build github.com/visualfc/gotools -go build github.com/nsf/gocode -tar zcf ${target}/wide-${ver}-${GOOS}-${GOARCH}.tar.gz ${list} gotools gocode wide --exclude-vcs --exclude='conf/*.go' --exclude='i18n/*.go' -rm -f wide gotools gocode - -export GOOS=${os} -export GOARCH=386 -echo wide-${ver}-${GOOS}-${GOARCH}.tar.gz -go build -go build github.com/visualfc/gotools -go build github.com/nsf/gocode -tar zcf ${target}/wide-${ver}-${GOOS}-${GOARCH}.tar.gz ${list} gotools gocode wide --exclude-vcs --exclude='conf/*.go' --exclude='i18n/*.go' -rm -f wide gotools gocode - -## windows -os=windows - -export GOOS=${os} -export GOARCH=amd64 -echo wide-${ver}-${GOOS}-${GOARCH}.zip -go build -go build github.com/visualfc/gotools -go build github.com/nsf/gocode -zip -r -q ${target}/wide-${ver}-${GOOS}-${GOARCH}.zip ${list} gotools.exe gocode.exe wide.exe --exclude=conf/*.go --exclude=i18n/*.go -rm -f wide.exe gotools.exe gocode.exe - -export GOOS=${os} -export GOARCH=386 -echo wide-${ver}-${GOOS}-${GOARCH}.zip -go build -go build github.com/visualfc/gotools -go build github.com/nsf/gocode -zip -r -q ${target}/wide-${ver}-${GOOS}-${GOARCH}.zip ${list} gotools.exe gocode.exe wide.exe --exclude=conf/*.go --exclude=i18n/*.go -rm -f wide.exe gotools.exe gocode.exe diff --git a/vendor/github.com/b3log/wide/yarn.lock b/vendor/github.com/b3log/wide/yarn.lock deleted file mode 100644 index 0ea15a7..0000000 --- a/vendor/github.com/b3log/wide/yarn.lock +++ /dev/null @@ -1,1341 +0,0 @@ -# THIS IS AN AUTOGENERATED FILE. DO NOT EDIT THIS FILE DIRECTLY. -# yarn lockfile v1 - - -"@gulp-sourcemaps/identity-map@1.X": - version "1.0.1" - resolved "http://registry.npm.taobao.org/@gulp-sourcemaps/identity-map/download/@gulp-sourcemaps/identity-map-1.0.1.tgz#cfa23bc5840f9104ce32a65e74db7e7a974bbee1" - dependencies: - acorn "^5.0.3" - css "^2.2.1" - normalize-path "^2.1.1" - source-map "^0.5.6" - through2 "^2.0.3" - -"@gulp-sourcemaps/map-sources@1.X": - version "1.0.0" - resolved "http://registry.npm.taobao.org/@gulp-sourcemaps/map-sources/download/@gulp-sourcemaps/map-sources-1.0.0.tgz#890ae7c5d8c877f6d384860215ace9d7ec945bda" - dependencies: - normalize-path "^2.0.1" - through2 "^2.0.3" - -acorn@4.X: - version "4.0.11" - resolved "http://registry.npm.taobao.org/acorn/download/acorn-4.0.11.tgz#edcda3bd937e7556410d42ed5860f67399c794c0" - -acorn@^5.0.3: - version "5.0.3" - resolved "http://registry.npm.taobao.org/acorn/download/acorn-5.0.3.tgz#c460df08491463f028ccb82eab3730bf01087b3d" - -align-text@^0.1.1, align-text@^0.1.3: - version "0.1.4" - resolved "http://registry.npm.taobao.org/align-text/download/align-text-0.1.4.tgz#0cd90a561093f35d0a99256c22b7069433fad117" - dependencies: - kind-of "^3.0.2" - longest "^1.0.1" - repeat-string "^1.5.2" - -amdefine@>=0.0.4: - version "1.0.1" - resolved "http://registry.npm.taobao.org/amdefine/download/amdefine-1.0.1.tgz#4a5282ac164729e93619bcfd3ad151f817ce91f5" - -ansi-regex@^2.0.0: - version "2.1.1" - resolved "http://registry.npm.taobao.org/ansi-regex/download/ansi-regex-2.1.1.tgz#c3b33ab5ee360d86e0e628f0468ae7ef27d654df" - -ansi-styles@^2.2.1: - version "2.2.1" - resolved "http://registry.npm.taobao.org/ansi-styles/download/ansi-styles-2.2.1.tgz#b432dd3358b634cf75e1e4664368240533c1ddbe" - -archy@^1.0.0: - version "1.0.0" - resolved "http://registry.npm.taobao.org/archy/download/archy-1.0.0.tgz#f9c8c13757cc1dd7bc379ac77b2c62a5c2868c40" - -arr-diff@^2.0.0: - version "2.0.0" - resolved "http://registry.npm.taobao.org/arr-diff/download/arr-diff-2.0.0.tgz#8f3b827f955a8bd669697e4a4256ac3ceae356cf" - dependencies: - arr-flatten "^1.0.1" - -arr-flatten@^1.0.1: - version "1.0.3" - resolved "http://registry.npm.taobao.org/arr-flatten/download/arr-flatten-1.0.3.tgz#a274ed85ac08849b6bd7847c4580745dc51adfb1" - -array-differ@^1.0.0: - version "1.0.0" - resolved "http://registry.npm.taobao.org/array-differ/download/array-differ-1.0.0.tgz#eff52e3758249d33be402b8bb8e564bb2b5d4031" - -array-uniq@^1.0.2: - version "1.0.3" - resolved "http://registry.npm.taobao.org/array-uniq/download/array-uniq-1.0.3.tgz#af6ac877a25cc7f74e058894753858dfdb24fdb6" - -array-unique@^0.2.1: - version "0.2.1" - resolved "http://registry.npm.taobao.org/array-unique/download/array-unique-0.2.1.tgz#a1d97ccafcbc2625cc70fadceb36a50c58b01a53" - -atob@~1.1.0: - version "1.1.3" - resolved "http://registry.npm.taobao.org/atob/download/atob-1.1.3.tgz#95f13629b12c3a51a5d215abdce2aa9f32f80773" - -balanced-match@^0.4.1: - version "0.4.2" - resolved "http://registry.npm.taobao.org/balanced-match/download/balanced-match-0.4.2.tgz#cb3f3e3c732dc0f01ee70b403f302e61d7709838" - -beeper@^1.0.0: - version "1.1.1" - resolved "http://registry.npm.taobao.org/beeper/download/beeper-1.1.1.tgz#e6d5ea8c5dad001304a70b22638447f69cb2f809" - -brace-expansion@^1.0.0: - version "1.1.7" - resolved "http://registry.npm.taobao.org/brace-expansion/download/brace-expansion-1.1.7.tgz#3effc3c50e000531fb720eaff80f0ae8ef23cf59" - dependencies: - balanced-match "^0.4.1" - concat-map "0.0.1" - -braces@^1.8.2: - version "1.8.5" - resolved "http://registry.npm.taobao.org/braces/download/braces-1.8.5.tgz#ba77962e12dff969d6b76711e914b737857bf6a7" - dependencies: - expand-range "^1.8.1" - preserve "^0.2.0" - repeat-element "^1.1.2" - -buffer-shims@~1.0.0: - version "1.0.0" - resolved "http://registry.npm.taobao.org/buffer-shims/download/buffer-shims-1.0.0.tgz#9978ce317388c649ad8793028c3477ef044a8b51" - -bufferstreams@1.0.1: - version "1.0.1" - resolved "http://registry.npm.taobao.org/bufferstreams/download/bufferstreams-1.0.1.tgz#cfb1ad9568d3ba3cfe935ba9abdd952de88aab2a" - dependencies: - readable-stream "^1.0.33" - -camelcase@^1.0.2: - version "1.2.1" - resolved "http://registry.npm.taobao.org/camelcase/download/camelcase-1.2.1.tgz#9bb5304d2e0b56698b2c758b08a3eaa9daa58a39" - -center-align@^0.1.1: - version "0.1.3" - resolved "http://registry.npm.taobao.org/center-align/download/center-align-0.1.3.tgz#aa0d32629b6ee972200411cbd4461c907bc2b7ad" - dependencies: - align-text "^0.1.3" - lazy-cache "^1.0.3" - -chalk@^1.0.0, chalk@^1.1.1: - version "1.1.3" - resolved "http://registry.npm.taobao.org/chalk/download/chalk-1.1.3.tgz#a8115c55e4a702fe4d150abd3872822a7e09fc98" - dependencies: - ansi-styles "^2.2.1" - escape-string-regexp "^1.0.2" - has-ansi "^2.0.0" - strip-ansi "^3.0.0" - supports-color "^2.0.0" - -clean-css@^3.3.3: - version "3.4.25" - resolved "http://registry.npm.taobao.org/clean-css/download/clean-css-3.4.25.tgz#9e9a52d5c1e6bc5123e1b2783fa65fe958946ede" - dependencies: - commander "2.8.x" - source-map "0.4.x" - -cliui@^2.1.0: - version "2.1.0" - resolved "http://registry.npm.taobao.org/cliui/download/cliui-2.1.0.tgz#4b475760ff80264c762c3a1719032e91c7fea0d1" - dependencies: - center-align "^0.1.1" - right-align "^0.1.1" - wordwrap "0.0.2" - -clone-buffer@^1.0.0: - version "1.0.0" - resolved "http://registry.npm.taobao.org/clone-buffer/download/clone-buffer-1.0.0.tgz#e3e25b207ac4e701af721e2cb5a16792cac3dc58" - -clone-stats@^0.0.1: - version "0.0.1" - resolved "http://registry.npm.taobao.org/clone-stats/download/clone-stats-0.0.1.tgz#b88f94a82cf38b8791d58046ea4029ad88ca99d1" - -clone-stats@^1.0.0: - version "1.0.0" - resolved "http://registry.npm.taobao.org/clone-stats/download/clone-stats-1.0.0.tgz#b3782dff8bb5474e18b9b6bf0fdfe782f8777680" - -clone@^0.2.0: - version "0.2.0" - resolved "http://registry.npm.taobao.org/clone/download/clone-0.2.0.tgz#c6126a90ad4f72dbf5acdb243cc37724fe93fc1f" - -clone@^1.0.0, clone@^1.0.2: - version "1.0.2" - resolved "http://registry.npm.taobao.org/clone/download/clone-1.0.2.tgz#260b7a99ebb1edfe247538175f783243cb19d149" - -cloneable-readable@^1.0.0: - version "1.0.0" - resolved "http://registry.npm.taobao.org/cloneable-readable/download/cloneable-readable-1.0.0.tgz#a6290d413f217a61232f95e458ff38418cfb0117" - dependencies: - inherits "^2.0.1" - process-nextick-args "^1.0.6" - through2 "^2.0.1" - -commander@2.8.x: - version "2.8.1" - resolved "http://registry.npm.taobao.org/commander/download/commander-2.8.1.tgz#06be367febfda0c330aa1e2a072d3dc9762425d4" - dependencies: - graceful-readlink ">= 1.0.0" - -concat-map@0.0.1: - version "0.0.1" - resolved "http://registry.npm.taobao.org/concat-map/download/concat-map-0.0.1.tgz#d8a96bd77fd68df7793a73036a3ba0d5405d477b" - -concat-with-sourcemaps@^1.0.0: - version "1.0.4" - resolved "http://registry.npm.taobao.org/concat-with-sourcemaps/download/concat-with-sourcemaps-1.0.4.tgz#f55b3be2aeb47601b10a2d5259ccfb70fd2f1dd6" - dependencies: - source-map "^0.5.1" - -convert-source-map@1.X: - version "1.5.0" - resolved "http://registry.npm.taobao.org/convert-source-map/download/convert-source-map-1.5.0.tgz#9acd70851c6d5dfdd93d9282e5edf94a03ff46b5" - -core-util-is@~1.0.0: - version "1.0.2" - resolved "http://registry.npm.taobao.org/core-util-is/download/core-util-is-1.0.2.tgz#b5fd54220aa2bc5ab57aab7140c940754503c1a7" - -css@2.X, css@^2.2.1: - version "2.2.1" - resolved "http://registry.npm.taobao.org/css/download/css-2.2.1.tgz#73a4c81de85db664d4ee674f7d47085e3b2d55dc" - dependencies: - inherits "^2.0.1" - source-map "^0.1.38" - source-map-resolve "^0.3.0" - urix "^0.1.0" - -dateformat@^2.0.0: - version "2.0.0" - resolved "http://registry.npm.taobao.org/dateformat/download/dateformat-2.0.0.tgz#2743e3abb5c3fc2462e527dca445e04e9f4dee17" - -debug-fabulous@0.1.X: - version "0.1.0" - resolved "http://registry.npm.taobao.org/debug-fabulous/download/debug-fabulous-0.1.0.tgz#ad0ea07a5d519324fb55842a8f34ee59c7f8ff6c" - dependencies: - debug "2.X" - object-assign "4.1.0" - -debug@2.X: - version "2.6.4" - resolved "http://registry.npm.taobao.org/debug/download/debug-2.6.4.tgz#7586a9b3c39741c0282ae33445c4e8ac74734fe0" - dependencies: - ms "0.7.3" - -decamelize@^1.0.0: - version "1.2.0" - resolved "http://registry.npm.taobao.org/decamelize/download/decamelize-1.2.0.tgz#f6534d15148269b20352e7bee26f501f9a191290" - -defaults@^1.0.0: - version "1.0.3" - resolved "http://registry.npm.taobao.org/defaults/download/defaults-1.0.3.tgz#c656051e9817d9ff08ed881477f3fe4019f3ef7d" - dependencies: - clone "^1.0.2" - -deprecated@^0.0.1: - version "0.0.1" - resolved "http://registry.npm.taobao.org/deprecated/download/deprecated-0.0.1.tgz#f9c9af5464afa1e7a971458a8bdef2aa94d5bb19" - -detect-file@^0.1.0: - version "0.1.0" - resolved "http://registry.npm.taobao.org/detect-file/download/detect-file-0.1.0.tgz#4935dedfd9488648e006b0129566e9386711ea63" - dependencies: - fs-exists-sync "^0.1.0" - -detect-newline@2.X: - version "2.1.0" - resolved "http://registry.npm.taobao.org/detect-newline/download/detect-newline-2.1.0.tgz#f41f1c10be4b00e87b5f13da680759f2c5bfd3e2" - -duplexer2@0.0.2: - version "0.0.2" - resolved "http://registry.npm.taobao.org/duplexer2/download/duplexer2-0.0.2.tgz#c614dcf67e2fb14995a91711e5a617e8a60a31db" - dependencies: - readable-stream "~1.1.9" - -end-of-stream@~0.1.5: - version "0.1.5" - resolved "http://registry.npm.taobao.org/end-of-stream/download/end-of-stream-0.1.5.tgz#8e177206c3c80837d85632e8b9359dfe8b2f6eaf" - dependencies: - once "~1.3.0" - -escape-string-regexp@^1.0.2: - version "1.0.5" - resolved "http://registry.npm.taobao.org/escape-string-regexp/download/escape-string-regexp-1.0.5.tgz#1b61c0562190a8dff6ae3bb2cf0200ca130b86d4" - -expand-brackets@^0.1.4: - version "0.1.5" - resolved "http://registry.npm.taobao.org/expand-brackets/download/expand-brackets-0.1.5.tgz#df07284e342a807cd733ac5af72411e581d1177b" - dependencies: - is-posix-bracket "^0.1.0" - -expand-range@^1.8.1: - version "1.8.2" - resolved "http://registry.npm.taobao.org/expand-range/download/expand-range-1.8.2.tgz#a299effd335fe2721ebae8e257ec79644fc85337" - dependencies: - fill-range "^2.1.0" - -expand-tilde@^1.2.1, expand-tilde@^1.2.2: - version "1.2.2" - resolved "http://registry.npm.taobao.org/expand-tilde/download/expand-tilde-1.2.2.tgz#0b81eba897e5a3d31d1c3d102f8f01441e559449" - dependencies: - os-homedir "^1.0.1" - -extend@^3.0.0: - version "3.0.0" - resolved "http://registry.npm.taobao.org/extend/download/extend-3.0.0.tgz#5a474353b9f3353ddd8176dfd37b91c83a46f1d4" - -extglob@^0.3.1: - version "0.3.2" - resolved "http://registry.npm.taobao.org/extglob/download/extglob-0.3.2.tgz#2e18ff3d2f49ab2765cec9023f011daa8d8349a1" - dependencies: - is-extglob "^1.0.0" - -fancy-log@^1.1.0: - version "1.3.0" - resolved "http://registry.npm.taobao.org/fancy-log/download/fancy-log-1.3.0.tgz#45be17d02bb9917d60ccffd4995c999e6c8c9948" - dependencies: - chalk "^1.1.1" - time-stamp "^1.0.0" - -filename-regex@^2.0.0: - version "2.0.0" - resolved "http://registry.npm.taobao.org/filename-regex/download/filename-regex-2.0.0.tgz#996e3e80479b98b9897f15a8a58b3d084e926775" - -fill-range@^2.1.0: - version "2.2.3" - resolved "http://registry.npm.taobao.org/fill-range/download/fill-range-2.2.3.tgz#50b77dfd7e469bc7492470963699fe7a8485a723" - dependencies: - is-number "^2.1.0" - isobject "^2.0.0" - randomatic "^1.1.3" - repeat-element "^1.1.2" - repeat-string "^1.5.2" - -find-index@^0.1.1: - version "0.1.1" - resolved "http://registry.npm.taobao.org/find-index/download/find-index-0.1.1.tgz#675d358b2ca3892d795a1ab47232f8b6e2e0dde4" - -findup-sync@^0.4.2: - version "0.4.3" - resolved "http://registry.npm.taobao.org/findup-sync/download/findup-sync-0.4.3.tgz#40043929e7bc60adf0b7f4827c4c6e75a0deca12" - dependencies: - detect-file "^0.1.0" - is-glob "^2.0.1" - micromatch "^2.3.7" - resolve-dir "^0.1.0" - -fined@^1.0.1: - version "1.0.2" - resolved "http://registry.npm.taobao.org/fined/download/fined-1.0.2.tgz#5b28424b760d7598960b7ef8480dff8ad3660e97" - dependencies: - expand-tilde "^1.2.1" - lodash.assignwith "^4.0.7" - lodash.isempty "^4.2.1" - lodash.isplainobject "^4.0.4" - lodash.isstring "^4.0.1" - lodash.pick "^4.2.1" - parse-filepath "^1.0.1" - -first-chunk-stream@^1.0.0: - version "1.0.0" - resolved "http://registry.npm.taobao.org/first-chunk-stream/download/first-chunk-stream-1.0.0.tgz#59bfb50cd905f60d7c394cd3d9acaab4e6ad934e" - -flagged-respawn@^0.3.2: - version "0.3.2" - resolved "http://registry.npm.taobao.org/flagged-respawn/download/flagged-respawn-0.3.2.tgz#ff191eddcd7088a675b2610fffc976be9b8074b5" - -for-in@^1.0.1: - version "1.0.2" - resolved "http://registry.npm.taobao.org/for-in/download/for-in-1.0.2.tgz#81068d295a8142ec0ac726c6e2200c30fb6d5e80" - -for-own@^0.1.4: - version "0.1.5" - resolved "http://registry.npm.taobao.org/for-own/download/for-own-0.1.5.tgz#5265c681a4f294dabbf17c9509b6763aa84510ce" - dependencies: - for-in "^1.0.1" - -fs-exists-sync@^0.1.0: - version "0.1.0" - resolved "http://registry.npm.taobao.org/fs-exists-sync/download/fs-exists-sync-0.1.0.tgz#982d6893af918e72d08dec9e8673ff2b5a8d6add" - -gaze@^0.5.1: - version "0.5.2" - resolved "http://registry.npm.taobao.org/gaze/download/gaze-0.5.2.tgz#40b709537d24d1d45767db5a908689dfe69ac44f" - dependencies: - globule "~0.1.0" - -glob-base@^0.3.0: - version "0.3.0" - resolved "http://registry.npm.taobao.org/glob-base/download/glob-base-0.3.0.tgz#dbb164f6221b1c0b1ccf82aea328b497df0ea3c4" - dependencies: - glob-parent "^2.0.0" - is-glob "^2.0.0" - -glob-parent@^2.0.0: - version "2.0.0" - resolved "http://registry.npm.taobao.org/glob-parent/download/glob-parent-2.0.0.tgz#81383d72db054fcccf5336daa902f182f6edbb28" - dependencies: - is-glob "^2.0.0" - -glob-stream@^3.1.5: - version "3.1.18" - resolved "http://registry.npm.taobao.org/glob-stream/download/glob-stream-3.1.18.tgz#9170a5f12b790306fdfe598f313f8f7954fd143b" - dependencies: - glob "^4.3.1" - glob2base "^0.0.12" - minimatch "^2.0.1" - ordered-read-streams "^0.1.0" - through2 "^0.6.1" - unique-stream "^1.0.0" - -glob-watcher@^0.0.6: - version "0.0.6" - resolved "http://registry.npm.taobao.org/glob-watcher/download/glob-watcher-0.0.6.tgz#b95b4a8df74b39c83298b0c05c978b4d9a3b710b" - dependencies: - gaze "^0.5.1" - -glob2base@^0.0.12: - version "0.0.12" - resolved "http://registry.npm.taobao.org/glob2base/download/glob2base-0.0.12.tgz#9d419b3e28f12e83a362164a277055922c9c0d56" - dependencies: - find-index "^0.1.1" - -glob@^4.3.1: - version "4.5.3" - resolved "http://registry.npm.taobao.org/glob/download/glob-4.5.3.tgz#c6cb73d3226c1efef04de3c56d012f03377ee15f" - dependencies: - inflight "^1.0.4" - inherits "2" - minimatch "^2.0.1" - once "^1.3.0" - -glob@~3.1.21: - version "3.1.21" - resolved "http://registry.npm.taobao.org/glob/download/glob-3.1.21.tgz#d29e0a055dea5138f4d07ed40e8982e83c2066cd" - dependencies: - graceful-fs "~1.2.0" - inherits "1" - minimatch "~0.2.11" - -global-modules@^0.2.3: - version "0.2.3" - resolved "http://registry.npm.taobao.org/global-modules/download/global-modules-0.2.3.tgz#ea5a3bed42c6d6ce995a4f8a1269b5dae223828d" - dependencies: - global-prefix "^0.1.4" - is-windows "^0.2.0" - -global-prefix@^0.1.4: - version "0.1.5" - resolved "http://registry.npm.taobao.org/global-prefix/download/global-prefix-0.1.5.tgz#8d3bc6b8da3ca8112a160d8d496ff0462bfef78f" - dependencies: - homedir-polyfill "^1.0.0" - ini "^1.3.4" - is-windows "^0.2.0" - which "^1.2.12" - -globule@~0.1.0: - version "0.1.0" - resolved "http://registry.npm.taobao.org/globule/download/globule-0.1.0.tgz#d9c8edde1da79d125a151b79533b978676346ae5" - dependencies: - glob "~3.1.21" - lodash "~1.0.1" - minimatch "~0.2.11" - -glogg@^1.0.0: - version "1.0.0" - resolved "http://registry.npm.taobao.org/glogg/download/glogg-1.0.0.tgz#7fe0f199f57ac906cf512feead8f90ee4a284fc5" - dependencies: - sparkles "^1.0.0" - -graceful-fs@4.X: - version "4.1.11" - resolved "http://registry.npm.taobao.org/graceful-fs/download/graceful-fs-4.1.11.tgz#0e8bdfe4d1ddb8854d64e04ea7c00e2a026e5658" - -graceful-fs@^3.0.0: - version "3.0.11" - resolved "http://registry.npm.taobao.org/graceful-fs/download/graceful-fs-3.0.11.tgz#7613c778a1afea62f25c630a086d7f3acbbdd818" - dependencies: - natives "^1.1.0" - -graceful-fs@~1.2.0: - version "1.2.3" - resolved "http://registry.npm.taobao.org/graceful-fs/download/graceful-fs-1.2.3.tgz#15a4806a57547cb2d2dbf27f42e89a8c3451b364" - -"graceful-readlink@>= 1.0.0": - version "1.0.1" - resolved "http://registry.npm.taobao.org/graceful-readlink/download/graceful-readlink-1.0.1.tgz#4cafad76bc62f02fa039b2f94e9a3dd3a391a725" - -gulp-concat@^2.6.1: - version "2.6.1" - resolved "http://registry.npm.taobao.org/gulp-concat/download/gulp-concat-2.6.1.tgz#633d16c95d88504628ad02665663cee5a4793353" - dependencies: - concat-with-sourcemaps "^1.0.0" - through2 "^2.0.0" - vinyl "^2.0.0" - -gulp-minify-css@^1.2.4: - version "1.2.4" - resolved "http://registry.npm.taobao.org/gulp-minify-css/download/gulp-minify-css-1.2.4.tgz#b6164957602ea27f9e5ad88227695dd205778c06" - dependencies: - clean-css "^3.3.3" - gulp-util "^3.0.5" - object-assign "^4.0.1" - readable-stream "^2.0.0" - vinyl-bufferstream "^1.0.1" - vinyl-sourcemaps-apply "^0.2.0" - -gulp-sourcemaps@^2.6.0: - version "2.6.0" - resolved "http://registry.npm.taobao.org/gulp-sourcemaps/download/gulp-sourcemaps-2.6.0.tgz#7ccce899a8a3bfca1593a3348d0fbf41dd3f51e5" - dependencies: - "@gulp-sourcemaps/identity-map" "1.X" - "@gulp-sourcemaps/map-sources" "1.X" - acorn "4.X" - convert-source-map "1.X" - css "2.X" - debug-fabulous "0.1.X" - detect-newline "2.X" - graceful-fs "4.X" - source-map "0.X" - strip-bom-string "1.X" - through2 "2.X" - vinyl "1.X" - -gulp-uglify@^2.1.2: - version "2.1.2" - resolved "http://registry.npm.taobao.org/gulp-uglify/download/gulp-uglify-2.1.2.tgz#6db85b1d0ee63d18058592b658649d65c2ec4541" - dependencies: - gulplog "^1.0.0" - has-gulplog "^0.1.0" - lodash "^4.13.1" - make-error-cause "^1.1.1" - through2 "^2.0.0" - uglify-js "~2.8.10" - uglify-save-license "^0.4.1" - vinyl-sourcemaps-apply "^0.2.0" - -gulp-util@^3.0.0, gulp-util@^3.0.5: - version "3.0.8" - resolved "http://registry.npm.taobao.org/gulp-util/download/gulp-util-3.0.8.tgz#0054e1e744502e27c04c187c3ecc505dd54bbb4f" - dependencies: - array-differ "^1.0.0" - array-uniq "^1.0.2" - beeper "^1.0.0" - chalk "^1.0.0" - dateformat "^2.0.0" - fancy-log "^1.1.0" - gulplog "^1.0.0" - has-gulplog "^0.1.0" - lodash._reescape "^3.0.0" - lodash._reevaluate "^3.0.0" - lodash._reinterpolate "^3.0.0" - lodash.template "^3.0.0" - minimist "^1.1.0" - multipipe "^0.1.2" - object-assign "^3.0.0" - replace-ext "0.0.1" - through2 "^2.0.0" - vinyl "^0.5.0" - -gulp@^3.9.1: - version "3.9.1" - resolved "http://registry.npm.taobao.org/gulp/download/gulp-3.9.1.tgz#571ce45928dd40af6514fc4011866016c13845b4" - dependencies: - archy "^1.0.0" - chalk "^1.0.0" - deprecated "^0.0.1" - gulp-util "^3.0.0" - interpret "^1.0.0" - liftoff "^2.1.0" - minimist "^1.1.0" - orchestrator "^0.3.0" - pretty-hrtime "^1.0.0" - semver "^4.1.0" - tildify "^1.0.0" - v8flags "^2.0.2" - vinyl-fs "^0.3.0" - -gulplog@^1.0.0: - version "1.0.0" - resolved "http://registry.npm.taobao.org/gulplog/download/gulplog-1.0.0.tgz#e28c4d45d05ecbbed818363ce8f9c5926229ffe5" - dependencies: - glogg "^1.0.0" - -has-ansi@^2.0.0: - version "2.0.0" - resolved "http://registry.npm.taobao.org/has-ansi/download/has-ansi-2.0.0.tgz#34f5049ce1ecdf2b0649af3ef24e45ed35416d91" - dependencies: - ansi-regex "^2.0.0" - -has-gulplog@^0.1.0: - version "0.1.0" - resolved "http://registry.npm.taobao.org/has-gulplog/download/has-gulplog-0.1.0.tgz#6414c82913697da51590397dafb12f22967811ce" - dependencies: - sparkles "^1.0.0" - -homedir-polyfill@^1.0.0: - version "1.0.1" - resolved "http://registry.npm.taobao.org/homedir-polyfill/download/homedir-polyfill-1.0.1.tgz#4c2bbc8a758998feebf5ed68580f76d46768b4bc" - dependencies: - parse-passwd "^1.0.0" - -inflight@^1.0.4: - version "1.0.6" - resolved "http://registry.npm.taobao.org/inflight/download/inflight-1.0.6.tgz#49bd6331d7d02d0c09bc910a1075ba8165b56df9" - dependencies: - once "^1.3.0" - wrappy "1" - -inherits@1: - version "1.0.2" - resolved "http://registry.npm.taobao.org/inherits/download/inherits-1.0.2.tgz#ca4309dadee6b54cc0b8d247e8d7c7a0975bdc9b" - -inherits@2, inherits@^2.0.1, inherits@~2.0.1: - version "2.0.3" - resolved "http://registry.npm.taobao.org/inherits/download/inherits-2.0.3.tgz#633c2c83e3da42a502f52466022480f4208261de" - -ini@^1.3.4: - version "1.3.4" - resolved "http://registry.npm.taobao.org/ini/download/ini-1.3.4.tgz#0537cb79daf59b59a1a517dff706c86ec039162e" - -interpret@^1.0.0: - version "1.0.3" - resolved "http://registry.npm.taobao.org/interpret/download/interpret-1.0.3.tgz#cbc35c62eeee73f19ab7b10a801511401afc0f90" - -is-absolute@^0.2.3: - version "0.2.6" - resolved "http://registry.npm.taobao.org/is-absolute/download/is-absolute-0.2.6.tgz#20de69f3db942ef2d87b9c2da36f172235b1b5eb" - dependencies: - is-relative "^0.2.1" - is-windows "^0.2.0" - -is-buffer@^1.0.2: - version "1.1.5" - resolved "http://registry.npm.taobao.org/is-buffer/download/is-buffer-1.1.5.tgz#1f3b26ef613b214b88cbca23cc6c01d87961eecc" - -is-dotfile@^1.0.0: - version "1.0.2" - resolved "http://registry.npm.taobao.org/is-dotfile/download/is-dotfile-1.0.2.tgz#2c132383f39199f8edc268ca01b9b007d205cc4d" - -is-equal-shallow@^0.1.3: - version "0.1.3" - resolved "http://registry.npm.taobao.org/is-equal-shallow/download/is-equal-shallow-0.1.3.tgz#2238098fc221de0bcfa5d9eac4c45d638aa1c534" - dependencies: - is-primitive "^2.0.0" - -is-extendable@^0.1.1: - version "0.1.1" - resolved "http://registry.npm.taobao.org/is-extendable/download/is-extendable-0.1.1.tgz#62b110e289a471418e3ec36a617d472e301dfc89" - -is-extglob@^1.0.0: - version "1.0.0" - resolved "http://registry.npm.taobao.org/is-extglob/download/is-extglob-1.0.0.tgz#ac468177c4943405a092fc8f29760c6ffc6206c0" - -is-glob@^2.0.0, is-glob@^2.0.1: - version "2.0.1" - resolved "http://registry.npm.taobao.org/is-glob/download/is-glob-2.0.1.tgz#d096f926a3ded5600f3fdfd91198cb0888c2d863" - dependencies: - is-extglob "^1.0.0" - -is-number@^2.0.2, is-number@^2.1.0: - version "2.1.0" - resolved "http://registry.npm.taobao.org/is-number/download/is-number-2.1.0.tgz#01fcbbb393463a548f2f466cce16dece49db908f" - dependencies: - kind-of "^3.0.2" - -is-posix-bracket@^0.1.0: - version "0.1.1" - resolved "http://registry.npm.taobao.org/is-posix-bracket/download/is-posix-bracket-0.1.1.tgz#3334dc79774368e92f016e6fbc0a88f5cd6e6bc4" - -is-primitive@^2.0.0: - version "2.0.0" - resolved "http://registry.npm.taobao.org/is-primitive/download/is-primitive-2.0.0.tgz#207bab91638499c07b2adf240a41a87210034575" - -is-relative@^0.2.1: - version "0.2.1" - resolved "http://registry.npm.taobao.org/is-relative/download/is-relative-0.2.1.tgz#d27f4c7d516d175fb610db84bbeef23c3bc97aa5" - dependencies: - is-unc-path "^0.1.1" - -is-stream@^1.1.0: - version "1.1.0" - resolved "http://registry.npm.taobao.org/is-stream/download/is-stream-1.1.0.tgz#12d4a3dd4e68e0b79ceb8dbc84173ae80d91ca44" - -is-unc-path@^0.1.1: - version "0.1.2" - resolved "http://registry.npm.taobao.org/is-unc-path/download/is-unc-path-0.1.2.tgz#6ab053a72573c10250ff416a3814c35178af39b9" - dependencies: - unc-path-regex "^0.1.0" - -is-utf8@^0.2.0: - version "0.2.1" - resolved "http://registry.npm.taobao.org/is-utf8/download/is-utf8-0.2.1.tgz#4b0da1442104d1b336340e80797e865cf39f7d72" - -is-windows@^0.2.0: - version "0.2.0" - resolved "http://registry.npm.taobao.org/is-windows/download/is-windows-0.2.0.tgz#de1aa6d63ea29dd248737b69f1ff8b8002d2108c" - -isarray@0.0.1: - version "0.0.1" - resolved "http://registry.npm.taobao.org/isarray/download/isarray-0.0.1.tgz#8a18acfca9a8f4177e09abfc6038939b05d1eedf" - -isarray@1.0.0, isarray@~1.0.0: - version "1.0.0" - resolved "http://registry.npm.taobao.org/isarray/download/isarray-1.0.0.tgz#bb935d48582cba168c06834957a54a3e07124f11" - -isexe@^2.0.0: - version "2.0.0" - resolved "http://registry.npm.taobao.org/isexe/download/isexe-2.0.0.tgz#e8fbf374dc556ff8947a10dcb0572d633f2cfa10" - -isobject@^2.0.0: - version "2.1.0" - resolved "http://registry.npm.taobao.org/isobject/download/isobject-2.1.0.tgz#f065561096a3f1da2ef46272f815c840d87e0c89" - dependencies: - isarray "1.0.0" - -kind-of@^3.0.2: - version "3.1.0" - resolved "http://registry.npm.taobao.org/kind-of/download/kind-of-3.1.0.tgz#475d698a5e49ff5e53d14e3e732429dc8bf4cf47" - dependencies: - is-buffer "^1.0.2" - -lazy-cache@^1.0.3: - version "1.0.4" - resolved "http://registry.npm.taobao.org/lazy-cache/download/lazy-cache-1.0.4.tgz#a1d78fc3a50474cb80845d3b3b6e1da49a446e8e" - -liftoff@^2.1.0: - version "2.3.0" - resolved "http://registry.npm.taobao.org/liftoff/download/liftoff-2.3.0.tgz#a98f2ff67183d8ba7cfaca10548bd7ff0550b385" - dependencies: - extend "^3.0.0" - findup-sync "^0.4.2" - fined "^1.0.1" - flagged-respawn "^0.3.2" - lodash.isplainobject "^4.0.4" - lodash.isstring "^4.0.1" - lodash.mapvalues "^4.4.0" - rechoir "^0.6.2" - resolve "^1.1.7" - -lodash._basecopy@^3.0.0: - version "3.0.1" - resolved "http://registry.npm.taobao.org/lodash._basecopy/download/lodash._basecopy-3.0.1.tgz#8da0e6a876cf344c0ad8a54882111dd3c5c7ca36" - -lodash._basetostring@^3.0.0: - version "3.0.1" - resolved "http://registry.npm.taobao.org/lodash._basetostring/download/lodash._basetostring-3.0.1.tgz#d1861d877f824a52f669832dcaf3ee15566a07d5" - -lodash._basevalues@^3.0.0: - version "3.0.0" - resolved "http://registry.npm.taobao.org/lodash._basevalues/download/lodash._basevalues-3.0.0.tgz#5b775762802bde3d3297503e26300820fdf661b7" - -lodash._getnative@^3.0.0: - version "3.9.1" - resolved "http://registry.npm.taobao.org/lodash._getnative/download/lodash._getnative-3.9.1.tgz#570bc7dede46d61cdcde687d65d3eecbaa3aaff5" - -lodash._isiterateecall@^3.0.0: - version "3.0.9" - resolved "http://registry.npm.taobao.org/lodash._isiterateecall/download/lodash._isiterateecall-3.0.9.tgz#5203ad7ba425fae842460e696db9cf3e6aac057c" - -lodash._reescape@^3.0.0: - version "3.0.0" - resolved "http://registry.npm.taobao.org/lodash._reescape/download/lodash._reescape-3.0.0.tgz#2b1d6f5dfe07c8a355753e5f27fac7f1cde1616a" - -lodash._reevaluate@^3.0.0: - version "3.0.0" - resolved "http://registry.npm.taobao.org/lodash._reevaluate/download/lodash._reevaluate-3.0.0.tgz#58bc74c40664953ae0b124d806996daca431e2ed" - -lodash._reinterpolate@^3.0.0: - version "3.0.0" - resolved "http://registry.npm.taobao.org/lodash._reinterpolate/download/lodash._reinterpolate-3.0.0.tgz#0ccf2d89166af03b3663c796538b75ac6e114d9d" - -lodash._root@^3.0.0: - version "3.0.1" - resolved "http://registry.npm.taobao.org/lodash._root/download/lodash._root-3.0.1.tgz#fba1c4524c19ee9a5f8136b4609f017cf4ded692" - -lodash.assignwith@^4.0.7: - version "4.2.0" - resolved "http://registry.npm.taobao.org/lodash.assignwith/download/lodash.assignwith-4.2.0.tgz#127a97f02adc41751a954d24b0de17e100e038eb" - -lodash.escape@^3.0.0: - version "3.2.0" - resolved "http://registry.npm.taobao.org/lodash.escape/download/lodash.escape-3.2.0.tgz#995ee0dc18c1b48cc92effae71a10aab5b487698" - dependencies: - lodash._root "^3.0.0" - -lodash.isarguments@^3.0.0: - version "3.1.0" - resolved "http://registry.npm.taobao.org/lodash.isarguments/download/lodash.isarguments-3.1.0.tgz#2f573d85c6a24289ff00663b491c1d338ff3458a" - -lodash.isarray@^3.0.0: - version "3.0.4" - resolved "http://registry.npm.taobao.org/lodash.isarray/download/lodash.isarray-3.0.4.tgz#79e4eb88c36a8122af86f844aa9bcd851b5fbb55" - -lodash.isempty@^4.2.1: - version "4.4.0" - resolved "http://registry.npm.taobao.org/lodash.isempty/download/lodash.isempty-4.4.0.tgz#6f86cbedd8be4ec987be9aaf33c9684db1b31e7e" - -lodash.isplainobject@^4.0.4: - version "4.0.6" - resolved "http://registry.npm.taobao.org/lodash.isplainobject/download/lodash.isplainobject-4.0.6.tgz#7c526a52d89b45c45cc690b88163be0497f550cb" - -lodash.isstring@^4.0.1: - version "4.0.1" - resolved "http://registry.npm.taobao.org/lodash.isstring/download/lodash.isstring-4.0.1.tgz#d527dfb5456eca7cc9bb95d5daeaf88ba54a5451" - -lodash.keys@^3.0.0: - version "3.1.2" - resolved "http://registry.npm.taobao.org/lodash.keys/download/lodash.keys-3.1.2.tgz#4dbc0472b156be50a0b286855d1bd0b0c656098a" - dependencies: - lodash._getnative "^3.0.0" - lodash.isarguments "^3.0.0" - lodash.isarray "^3.0.0" - -lodash.mapvalues@^4.4.0: - version "4.6.0" - resolved "http://registry.npm.taobao.org/lodash.mapvalues/download/lodash.mapvalues-4.6.0.tgz#1bafa5005de9dd6f4f26668c30ca37230cc9689c" - -lodash.pick@^4.2.1: - version "4.4.0" - resolved "http://registry.npm.taobao.org/lodash.pick/download/lodash.pick-4.4.0.tgz#52f05610fff9ded422611441ed1fc123a03001b3" - -lodash.restparam@^3.0.0: - version "3.6.1" - resolved "http://registry.npm.taobao.org/lodash.restparam/download/lodash.restparam-3.6.1.tgz#936a4e309ef330a7645ed4145986c85ae5b20805" - -lodash.template@^3.0.0: - version "3.6.2" - resolved "http://registry.npm.taobao.org/lodash.template/download/lodash.template-3.6.2.tgz#f8cdecc6169a255be9098ae8b0c53d378931d14f" - dependencies: - lodash._basecopy "^3.0.0" - lodash._basetostring "^3.0.0" - lodash._basevalues "^3.0.0" - lodash._isiterateecall "^3.0.0" - lodash._reinterpolate "^3.0.0" - lodash.escape "^3.0.0" - lodash.keys "^3.0.0" - lodash.restparam "^3.0.0" - lodash.templatesettings "^3.0.0" - -lodash.templatesettings@^3.0.0: - version "3.1.1" - resolved "http://registry.npm.taobao.org/lodash.templatesettings/download/lodash.templatesettings-3.1.1.tgz#fb307844753b66b9f1afa54e262c745307dba8e5" - dependencies: - lodash._reinterpolate "^3.0.0" - lodash.escape "^3.0.0" - -lodash@^4.13.1: - version "4.17.4" - resolved "http://registry.npm.taobao.org/lodash/download/lodash-4.17.4.tgz#78203a4d1c328ae1d86dca6460e369b57f4055ae" - -lodash@~1.0.1: - version "1.0.2" - resolved "http://registry.npm.taobao.org/lodash/download/lodash-1.0.2.tgz#8f57560c83b59fc270bd3d561b690043430e2551" - -longest@^1.0.1: - version "1.0.1" - resolved "http://registry.npm.taobao.org/longest/download/longest-1.0.1.tgz#30a0b2da38f73770e8294a0d22e6625ed77d0097" - -lru-cache@2: - version "2.7.3" - resolved "http://registry.npm.taobao.org/lru-cache/download/lru-cache-2.7.3.tgz#6d4524e8b955f95d4f5b58851ce21dd72fb4e952" - -make-error-cause@^1.1.1: - version "1.2.2" - resolved "http://registry.npm.taobao.org/make-error-cause/download/make-error-cause-1.2.2.tgz#df0388fcd0b37816dff0a5fb8108939777dcbc9d" - dependencies: - make-error "^1.2.0" - -make-error@^1.2.0: - version "1.2.3" - resolved "http://registry.npm.taobao.org/make-error/download/make-error-1.2.3.tgz#6c4402df732e0977ac6faf754a5074b3d2b1d19d" - -map-cache@^0.2.0: - version "0.2.2" - resolved "http://registry.npm.taobao.org/map-cache/download/map-cache-0.2.2.tgz#c32abd0bd6525d9b051645bb4f26ac5dc98a0dbf" - -micromatch@^2.3.7: - version "2.3.11" - resolved "http://registry.npm.taobao.org/micromatch/download/micromatch-2.3.11.tgz#86677c97d1720b363431d04d0d15293bd38c1565" - dependencies: - arr-diff "^2.0.0" - array-unique "^0.2.1" - braces "^1.8.2" - expand-brackets "^0.1.4" - extglob "^0.3.1" - filename-regex "^2.0.0" - is-extglob "^1.0.0" - is-glob "^2.0.1" - kind-of "^3.0.2" - normalize-path "^2.0.1" - object.omit "^2.0.0" - parse-glob "^3.0.4" - regex-cache "^0.4.2" - -minimatch@^2.0.1: - version "2.0.10" - resolved "http://registry.npm.taobao.org/minimatch/download/minimatch-2.0.10.tgz#8d087c39c6b38c001b97fca7ce6d0e1e80afbac7" - dependencies: - brace-expansion "^1.0.0" - -minimatch@~0.2.11: - version "0.2.14" - resolved "http://registry.npm.taobao.org/minimatch/download/minimatch-0.2.14.tgz#c74e780574f63c6f9a090e90efbe6ef53a6a756a" - dependencies: - lru-cache "2" - sigmund "~1.0.0" - -minimist@0.0.8: - version "0.0.8" - resolved "http://registry.npm.taobao.org/minimist/download/minimist-0.0.8.tgz#857fcabfc3397d2625b8228262e86aa7a011b05d" - -minimist@^1.1.0: - version "1.2.0" - resolved "http://registry.npm.taobao.org/minimist/download/minimist-1.2.0.tgz#a35008b20f41383eec1fb914f4cd5df79a264284" - -mkdirp@^0.5.0: - version "0.5.1" - resolved "http://registry.npm.taobao.org/mkdirp/download/mkdirp-0.5.1.tgz#30057438eac6cf7f8c4767f38648d6697d75c903" - dependencies: - minimist "0.0.8" - -ms@0.7.3: - version "0.7.3" - resolved "http://registry.npm.taobao.org/ms/download/ms-0.7.3.tgz#708155a5e44e33f5fd0fc53e81d0d40a91be1fff" - -multipipe@^0.1.2: - version "0.1.2" - resolved "http://registry.npm.taobao.org/multipipe/download/multipipe-0.1.2.tgz#2a8f2ddf70eed564dff2d57f1e1a137d9f05078b" - dependencies: - duplexer2 "0.0.2" - -natives@^1.1.0: - version "1.1.0" - resolved "http://registry.npm.taobao.org/natives/download/natives-1.1.0.tgz#e9ff841418a6b2ec7a495e939984f78f163e6e31" - -normalize-path@^2.0.1, normalize-path@^2.1.1: - version "2.1.1" - resolved "http://registry.npm.taobao.org/normalize-path/download/normalize-path-2.1.1.tgz#1ab28b556e198363a8c1a6f7e6fa20137fe6aed9" - dependencies: - remove-trailing-separator "^1.0.1" - -object-assign@4.1.0: - version "4.1.0" - resolved "http://registry.npm.taobao.org/object-assign/download/object-assign-4.1.0.tgz#7a3b3d0e98063d43f4c03f2e8ae6cd51a86883a0" - -object-assign@^3.0.0: - version "3.0.0" - resolved "http://registry.npm.taobao.org/object-assign/download/object-assign-3.0.0.tgz#9bedd5ca0897949bca47e7ff408062d549f587f2" - -object-assign@^4.0.1: - version "4.1.1" - resolved "http://registry.npm.taobao.org/object-assign/download/object-assign-4.1.1.tgz#2109adc7965887cfc05cbbd442cac8bfbb360863" - -object.omit@^2.0.0: - version "2.0.1" - resolved "http://registry.npm.taobao.org/object.omit/download/object.omit-2.0.1.tgz#1a9c744829f39dbb858c76ca3579ae2a54ebd1fa" - dependencies: - for-own "^0.1.4" - is-extendable "^0.1.1" - -once@^1.3.0, once@~1.3.0: - version "1.3.3" - resolved "http://registry.npm.taobao.org/once/download/once-1.3.3.tgz#b2e261557ce4c314ec8304f3fa82663e4297ca20" - dependencies: - wrappy "1" - -orchestrator@^0.3.0: - version "0.3.8" - resolved "http://registry.npm.taobao.org/orchestrator/download/orchestrator-0.3.8.tgz#14e7e9e2764f7315fbac184e506c7aa6df94ad7e" - dependencies: - end-of-stream "~0.1.5" - sequencify "~0.0.7" - stream-consume "~0.1.0" - -ordered-read-streams@^0.1.0: - version "0.1.0" - resolved "http://registry.npm.taobao.org/ordered-read-streams/download/ordered-read-streams-0.1.0.tgz#fd565a9af8eb4473ba69b6ed8a34352cb552f126" - -os-homedir@^1.0.0, os-homedir@^1.0.1: - version "1.0.2" - resolved "http://registry.npm.taobao.org/os-homedir/download/os-homedir-1.0.2.tgz#ffbc4988336e0e833de0c168c7ef152121aa7fb3" - -parse-filepath@^1.0.1: - version "1.0.1" - resolved "http://registry.npm.taobao.org/parse-filepath/download/parse-filepath-1.0.1.tgz#159d6155d43904d16c10ef698911da1e91969b73" - dependencies: - is-absolute "^0.2.3" - map-cache "^0.2.0" - path-root "^0.1.1" - -parse-glob@^3.0.4: - version "3.0.4" - resolved "http://registry.npm.taobao.org/parse-glob/download/parse-glob-3.0.4.tgz#b2c376cfb11f35513badd173ef0bb6e3a388391c" - dependencies: - glob-base "^0.3.0" - is-dotfile "^1.0.0" - is-extglob "^1.0.0" - is-glob "^2.0.0" - -parse-passwd@^1.0.0: - version "1.0.0" - resolved "http://registry.npm.taobao.org/parse-passwd/download/parse-passwd-1.0.0.tgz#6d5b934a456993b23d37f40a382d6f1666a8e5c6" - -path-parse@^1.0.5: - version "1.0.5" - resolved "http://registry.npm.taobao.org/path-parse/download/path-parse-1.0.5.tgz#3c1adf871ea9cd6c9431b6ea2bd74a0ff055c4c1" - -path-root-regex@^0.1.0: - version "0.1.2" - resolved "http://registry.npm.taobao.org/path-root-regex/download/path-root-regex-0.1.2.tgz#bfccdc8df5b12dc52c8b43ec38d18d72c04ba96d" - -path-root@^0.1.1: - version "0.1.1" - resolved "http://registry.npm.taobao.org/path-root/download/path-root-0.1.1.tgz#9a4a6814cac1c0cd73360a95f32083c8ea4745b7" - dependencies: - path-root-regex "^0.1.0" - -preserve@^0.2.0: - version "0.2.0" - resolved "http://registry.npm.taobao.org/preserve/download/preserve-0.2.0.tgz#815ed1f6ebc65926f865b310c0713bcb3315ce4b" - -pretty-hrtime@^1.0.0: - version "1.0.3" - resolved "http://registry.npm.taobao.org/pretty-hrtime/download/pretty-hrtime-1.0.3.tgz#b7e3ea42435a4c9b2759d99e0f201eb195802ee1" - -process-nextick-args@^1.0.6, process-nextick-args@~1.0.6: - version "1.0.7" - resolved "http://registry.npm.taobao.org/process-nextick-args/download/process-nextick-args-1.0.7.tgz#150e20b756590ad3f91093f25a4f2ad8bff30ba3" - -randomatic@^1.1.3: - version "1.1.6" - resolved "http://registry.npm.taobao.org/randomatic/download/randomatic-1.1.6.tgz#110dcabff397e9dcff7c0789ccc0a49adf1ec5bb" - dependencies: - is-number "^2.0.2" - kind-of "^3.0.2" - -"readable-stream@>=1.0.33-1 <1.1.0-0": - version "1.0.34" - resolved "http://registry.npm.taobao.org/readable-stream/download/readable-stream-1.0.34.tgz#125820e34bc842d2f2aaafafe4c2916ee32c157c" - dependencies: - core-util-is "~1.0.0" - inherits "~2.0.1" - isarray "0.0.1" - string_decoder "~0.10.x" - -readable-stream@^1.0.33, readable-stream@~1.1.9: - version "1.1.14" - resolved "http://registry.npm.taobao.org/readable-stream/download/readable-stream-1.1.14.tgz#7cf4c54ef648e3813084c636dd2079e166c081d9" - dependencies: - core-util-is "~1.0.0" - inherits "~2.0.1" - isarray "0.0.1" - string_decoder "~0.10.x" - -readable-stream@^2.0.0, readable-stream@^2.1.5: - version "2.2.9" - resolved "http://registry.npm.taobao.org/readable-stream/download/readable-stream-2.2.9.tgz#cf78ec6f4a6d1eb43d26488cac97f042e74b7fc8" - dependencies: - buffer-shims "~1.0.0" - core-util-is "~1.0.0" - inherits "~2.0.1" - isarray "~1.0.0" - process-nextick-args "~1.0.6" - string_decoder "~1.0.0" - util-deprecate "~1.0.1" - -rechoir@^0.6.2: - version "0.6.2" - resolved "http://registry.npm.taobao.org/rechoir/download/rechoir-0.6.2.tgz#85204b54dba82d5742e28c96756ef43af50e3384" - dependencies: - resolve "^1.1.6" - -regex-cache@^0.4.2: - version "0.4.3" - resolved "http://registry.npm.taobao.org/regex-cache/download/regex-cache-0.4.3.tgz#9b1a6c35d4d0dfcef5711ae651e8e9d3d7114145" - dependencies: - is-equal-shallow "^0.1.3" - is-primitive "^2.0.0" - -remove-trailing-separator@^1.0.1: - version "1.0.1" - resolved "http://registry.npm.taobao.org/remove-trailing-separator/download/remove-trailing-separator-1.0.1.tgz#615ebb96af559552d4bf4057c8436d486ab63cc4" - -repeat-element@^1.1.2: - version "1.1.2" - resolved "http://registry.npm.taobao.org/repeat-element/download/repeat-element-1.1.2.tgz#ef089a178d1483baae4d93eb98b4f9e4e11d990a" - -repeat-string@^1.5.2: - version "1.6.1" - resolved "http://registry.npm.taobao.org/repeat-string/download/repeat-string-1.6.1.tgz#8dcae470e1c88abc2d600fff4a776286da75e637" - -replace-ext@0.0.1: - version "0.0.1" - resolved "http://registry.npm.taobao.org/replace-ext/download/replace-ext-0.0.1.tgz#29bbd92078a739f0bcce2b4ee41e837953522924" - -replace-ext@^1.0.0: - version "1.0.0" - resolved "http://registry.npm.taobao.org/replace-ext/download/replace-ext-1.0.0.tgz#de63128373fcbf7c3ccfa4de5a480c45a67958eb" - -resolve-dir@^0.1.0: - version "0.1.1" - resolved "http://registry.npm.taobao.org/resolve-dir/download/resolve-dir-0.1.1.tgz#b219259a5602fac5c5c496ad894a6e8cc430261e" - dependencies: - expand-tilde "^1.2.2" - global-modules "^0.2.3" - -resolve-url@~0.2.1: - version "0.2.1" - resolved "http://registry.npm.taobao.org/resolve-url/download/resolve-url-0.2.1.tgz#2c637fe77c893afd2a663fe21aa9080068e2052a" - -resolve@^1.1.6, resolve@^1.1.7: - version "1.3.3" - resolved "http://registry.npm.taobao.org/resolve/download/resolve-1.3.3.tgz#655907c3469a8680dc2de3a275a8fdd69691f0e5" - dependencies: - path-parse "^1.0.5" - -right-align@^0.1.1: - version "0.1.3" - resolved "http://registry.npm.taobao.org/right-align/download/right-align-0.1.3.tgz#61339b722fe6a3515689210d24e14c96148613ef" - dependencies: - align-text "^0.1.1" - -semver@^4.1.0: - version "4.3.6" - resolved "http://registry.npm.taobao.org/semver/download/semver-4.3.6.tgz#300bc6e0e86374f7ba61068b5b1ecd57fc6532da" - -sequencify@~0.0.7: - version "0.0.7" - resolved "http://registry.npm.taobao.org/sequencify/download/sequencify-0.0.7.tgz#90cff19d02e07027fd767f5ead3e7b95d1e7380c" - -sigmund@~1.0.0: - version "1.0.1" - resolved "http://registry.npm.taobao.org/sigmund/download/sigmund-1.0.1.tgz#3ff21f198cad2175f9f3b781853fd94d0d19b590" - -source-map-resolve@^0.3.0: - version "0.3.1" - resolved "http://registry.npm.taobao.org/source-map-resolve/download/source-map-resolve-0.3.1.tgz#610f6122a445b8dd51535a2a71b783dfc1248761" - dependencies: - atob "~1.1.0" - resolve-url "~0.2.1" - source-map-url "~0.3.0" - urix "~0.1.0" - -source-map-url@~0.3.0: - version "0.3.0" - resolved "http://registry.npm.taobao.org/source-map-url/download/source-map-url-0.3.0.tgz#7ecaf13b57bcd09da8a40c5d269db33799d4aaf9" - -source-map@0.4.x: - version "0.4.4" - resolved "http://registry.npm.taobao.org/source-map/download/source-map-0.4.4.tgz#eba4f5da9c0dc999de68032d8b4f76173652036b" - dependencies: - amdefine ">=0.0.4" - -source-map@0.X, source-map@^0.5.1, source-map@^0.5.6, source-map@~0.5.1: - version "0.5.6" - resolved "http://registry.npm.taobao.org/source-map/download/source-map-0.5.6.tgz#75ce38f52bf0733c5a7f0c118d81334a2bb5f412" - -source-map@^0.1.38: - version "0.1.43" - resolved "http://registry.npm.taobao.org/source-map/download/source-map-0.1.43.tgz#c24bc146ca517c1471f5dacbe2571b2b7f9e3346" - dependencies: - amdefine ">=0.0.4" - -sparkles@^1.0.0: - version "1.0.0" - resolved "http://registry.npm.taobao.org/sparkles/download/sparkles-1.0.0.tgz#1acbbfb592436d10bbe8f785b7cc6f82815012c3" - -stream-consume@~0.1.0: - version "0.1.0" - resolved "http://registry.npm.taobao.org/stream-consume/download/stream-consume-0.1.0.tgz#a41ead1a6d6081ceb79f65b061901b6d8f3d1d0f" - -string_decoder@~0.10.x: - version "0.10.31" - resolved "http://registry.npm.taobao.org/string_decoder/download/string_decoder-0.10.31.tgz#62e203bc41766c6c28c9fc84301dab1c5310fa94" - -string_decoder@~1.0.0: - version "1.0.0" - resolved "http://registry.npm.taobao.org/string_decoder/download/string_decoder-1.0.0.tgz#f06f41157b664d86069f84bdbdc9b0d8ab281667" - dependencies: - buffer-shims "~1.0.0" - -strip-ansi@^3.0.0: - version "3.0.1" - resolved "http://registry.npm.taobao.org/strip-ansi/download/strip-ansi-3.0.1.tgz#6a385fb8853d952d5ff05d0e8aaf94278dc63dcf" - dependencies: - ansi-regex "^2.0.0" - -strip-bom-string@1.X: - version "1.0.0" - resolved "http://registry.npm.taobao.org/strip-bom-string/download/strip-bom-string-1.0.0.tgz#e5211e9224369fbb81d633a2f00044dc8cedad92" - -strip-bom@^1.0.0: - version "1.0.0" - resolved "http://registry.npm.taobao.org/strip-bom/download/strip-bom-1.0.0.tgz#85b8862f3844b5a6d5ec8467a93598173a36f794" - dependencies: - first-chunk-stream "^1.0.0" - is-utf8 "^0.2.0" - -supports-color@^2.0.0: - version "2.0.0" - resolved "http://registry.npm.taobao.org/supports-color/download/supports-color-2.0.0.tgz#535d045ce6b6363fa40117084629995e9df324c7" - -through2@2.X, through2@^2.0.0, through2@^2.0.1, through2@^2.0.3: - version "2.0.3" - resolved "http://registry.npm.taobao.org/through2/download/through2-2.0.3.tgz#0004569b37c7c74ba39c43f3ced78d1ad94140be" - dependencies: - readable-stream "^2.1.5" - xtend "~4.0.1" - -through2@^0.6.1: - version "0.6.5" - resolved "http://registry.npm.taobao.org/through2/download/through2-0.6.5.tgz#41ab9c67b29d57209071410e1d7a7a968cd3ad48" - dependencies: - readable-stream ">=1.0.33-1 <1.1.0-0" - xtend ">=4.0.0 <4.1.0-0" - -tildify@^1.0.0: - version "1.2.0" - resolved "http://registry.npm.taobao.org/tildify/download/tildify-1.2.0.tgz#dcec03f55dca9b7aa3e5b04f21817eb56e63588a" - dependencies: - os-homedir "^1.0.0" - -time-stamp@^1.0.0: - version "1.0.1" - resolved "http://registry.npm.taobao.org/time-stamp/download/time-stamp-1.0.1.tgz#9f4bd23559c9365966f3302dbba2b07c6b99b151" - -uglify-js@~2.8.10: - version "2.8.22" - resolved "http://registry.npm.taobao.org/uglify-js/download/uglify-js-2.8.22.tgz#d54934778a8da14903fa29a326fb24c0ab51a1a0" - dependencies: - source-map "~0.5.1" - yargs "~3.10.0" - optionalDependencies: - uglify-to-browserify "~1.0.0" - -uglify-save-license@^0.4.1: - version "0.4.1" - resolved "http://registry.npm.taobao.org/uglify-save-license/download/uglify-save-license-0.4.1.tgz#95726c17cc6fd171c3617e3bf4d8d82aa8c4cce1" - -uglify-to-browserify@~1.0.0: - version "1.0.2" - resolved "http://registry.npm.taobao.org/uglify-to-browserify/download/uglify-to-browserify-1.0.2.tgz#6e0924d6bda6b5afe349e39a6d632850a0f882b7" - -unc-path-regex@^0.1.0: - version "0.1.2" - resolved "http://registry.npm.taobao.org/unc-path-regex/download/unc-path-regex-0.1.2.tgz#e73dd3d7b0d7c5ed86fbac6b0ae7d8c6a69d50fa" - -unique-stream@^1.0.0: - version "1.0.0" - resolved "http://registry.npm.taobao.org/unique-stream/download/unique-stream-1.0.0.tgz#d59a4a75427447d9aa6c91e70263f8d26a4b104b" - -urix@^0.1.0, urix@~0.1.0: - version "0.1.0" - resolved "http://registry.npm.taobao.org/urix/download/urix-0.1.0.tgz#da937f7a62e21fec1fd18d49b35c2935067a6c72" - -user-home@^1.1.1: - version "1.1.1" - resolved "http://registry.npm.taobao.org/user-home/download/user-home-1.1.1.tgz#2b5be23a32b63a7c9deb8d0f28d485724a3df190" - -util-deprecate@~1.0.1: - version "1.0.2" - resolved "http://registry.npm.taobao.org/util-deprecate/download/util-deprecate-1.0.2.tgz#450d4dc9fa70de732762fbd2d4a28981419a0ccf" - -v8flags@^2.0.2: - version "2.1.1" - resolved "http://registry.npm.taobao.org/v8flags/download/v8flags-2.1.1.tgz#aab1a1fa30d45f88dd321148875ac02c0b55e5b4" - dependencies: - user-home "^1.1.1" - -vinyl-bufferstream@^1.0.1: - version "1.0.1" - resolved "http://registry.npm.taobao.org/vinyl-bufferstream/download/vinyl-bufferstream-1.0.1.tgz#0537869f580effa4ca45acb47579e4b9fe63081a" - dependencies: - bufferstreams "1.0.1" - -vinyl-fs@^0.3.0: - version "0.3.14" - resolved "http://registry.npm.taobao.org/vinyl-fs/download/vinyl-fs-0.3.14.tgz#9a6851ce1cac1c1cea5fe86c0931d620c2cfa9e6" - dependencies: - defaults "^1.0.0" - glob-stream "^3.1.5" - glob-watcher "^0.0.6" - graceful-fs "^3.0.0" - mkdirp "^0.5.0" - strip-bom "^1.0.0" - through2 "^0.6.1" - vinyl "^0.4.0" - -vinyl-sourcemaps-apply@^0.2.0: - version "0.2.1" - resolved "http://registry.npm.taobao.org/vinyl-sourcemaps-apply/download/vinyl-sourcemaps-apply-0.2.1.tgz#ab6549d61d172c2b1b87be5c508d239c8ef87705" - dependencies: - source-map "^0.5.1" - -vinyl@1.X: - version "1.2.0" - resolved "http://registry.npm.taobao.org/vinyl/download/vinyl-1.2.0.tgz#5c88036cf565e5df05558bfc911f8656df218884" - dependencies: - clone "^1.0.0" - clone-stats "^0.0.1" - replace-ext "0.0.1" - -vinyl@^0.4.0: - version "0.4.6" - resolved "http://registry.npm.taobao.org/vinyl/download/vinyl-0.4.6.tgz#2f356c87a550a255461f36bbeb2a5ba8bf784847" - dependencies: - clone "^0.2.0" - clone-stats "^0.0.1" - -vinyl@^0.5.0: - version "0.5.3" - resolved "http://registry.npm.taobao.org/vinyl/download/vinyl-0.5.3.tgz#b0455b38fc5e0cf30d4325132e461970c2091cde" - dependencies: - clone "^1.0.0" - clone-stats "^0.0.1" - replace-ext "0.0.1" - -vinyl@^2.0.0: - version "2.0.2" - resolved "http://registry.npm.taobao.org/vinyl/download/vinyl-2.0.2.tgz#0a3713d8d4e9221c58f10ca16c0116c9e25eda7c" - dependencies: - clone "^1.0.0" - clone-buffer "^1.0.0" - clone-stats "^1.0.0" - cloneable-readable "^1.0.0" - is-stream "^1.1.0" - remove-trailing-separator "^1.0.1" - replace-ext "^1.0.0" - -which@^1.2.12: - version "1.2.14" - resolved "http://registry.npm.taobao.org/which/download/which-1.2.14.tgz#9a87c4378f03e827cecaf1acdf56c736c01c14e5" - dependencies: - isexe "^2.0.0" - -window-size@0.1.0: - version "0.1.0" - resolved "http://registry.npm.taobao.org/window-size/download/window-size-0.1.0.tgz#5438cd2ea93b202efa3a19fe8887aee7c94f9c9d" - -wordwrap@0.0.2: - version "0.0.2" - resolved "http://registry.npm.taobao.org/wordwrap/download/wordwrap-0.0.2.tgz#b79669bb42ecb409f83d583cad52ca17eaa1643f" - -wrappy@1: - version "1.0.2" - resolved "http://registry.npm.taobao.org/wrappy/download/wrappy-1.0.2.tgz#b5243d8f3ec1aa35f1364605bc0d1036e30ab69f" - -"xtend@>=4.0.0 <4.1.0-0", xtend@~4.0.1: - version "4.0.1" - resolved "http://registry.npm.taobao.org/xtend/download/xtend-4.0.1.tgz#a5c6d532be656e23db820efb943a1f04998d63af" - -yargs@~3.10.0: - version "3.10.0" - resolved "http://registry.npm.taobao.org/yargs/download/yargs-3.10.0.tgz#f7ee7bd857dd7c1d2d38c0e74efbd681d1431fd1" - dependencies: - camelcase "^1.0.2" - cliui "^2.1.0" - decamelize "^1.0.0" - window-size "0.1.0" diff --git a/vendor/github.com/bradfitz/goimports/LICENSE b/vendor/github.com/bradfitz/goimports/LICENSE deleted file mode 100644 index 65d761b..0000000 --- a/vendor/github.com/bradfitz/goimports/LICENSE +++ /dev/null @@ -1,27 +0,0 @@ -Copyright (c) 2013 The Go Authors. All rights reserved. - -Redistribution and use in source and binary forms, with or without -modification, are permitted provided that the following conditions are -met: - - * Redistributions of source code must retain the above copyright -notice, this list of conditions and the following disclaimer. - * Redistributions in binary form must reproduce the above -copyright notice, this list of conditions and the following disclaimer -in the documentation and/or other materials provided with the -distribution. - * Neither the name of Google Inc. nor the names of its -contributors may be used to endorse or promote products derived from -this software without specific prior written permission. - -THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS -"AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT -LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR -A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT -OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, -SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT -LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, -DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY -THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE -OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. diff --git a/vendor/github.com/bradfitz/goimports/README b/vendor/github.com/bradfitz/goimports/README deleted file mode 100644 index b362bd2..0000000 --- a/vendor/github.com/bradfitz/goimports/README +++ /dev/null @@ -1,17 +0,0 @@ -This tool updates your Go import lines, adding missing ones and -removing unreferenced ones. - - $ go get golang.org/x/tools/cmd/goimports - - Note the new location. This project has moved to the official - go.tools repo. Pull requests here will no longer be accepted. - Please use the Go process: http://golang.org/doc/contribute.html - -It acts the same as gofmt (same flags, etc) but in addition to code -formatting, also fixes imports. - -See usage and editor integration notes, now moved elsewhere: - - http://godoc.org/golang.org/x/tools/cmd/goimports - -Happy hacking! diff --git a/vendor/github.com/bradfitz/goimports/goimports.go b/vendor/github.com/bradfitz/goimports/goimports.go deleted file mode 100644 index a008d82..0000000 --- a/vendor/github.com/bradfitz/goimports/goimports.go +++ /dev/null @@ -1,195 +0,0 @@ -// Copyright 2013 The Go Authors. All rights reserved. -// Use of this source code is governed by a BSD-style -// license that can be found in the LICENSE file. - -package main - -import ( - "bytes" - "flag" - "fmt" - "go/scanner" - "io" - "io/ioutil" - "os" - "os/exec" - "path/filepath" - "runtime" - "strings" - - "golang.org/x/tools/imports" -) - -var ( - // main operation modes - list = flag.Bool("l", false, "list files whose formatting differs from goimport's") - write = flag.Bool("w", false, "write result to (source) file instead of stdout") - doDiff = flag.Bool("d", false, "display diffs instead of rewriting files") - - options = &imports.Options{ - TabWidth: 8, - TabIndent: true, - Comments: true, - Fragment: true, - } - exitCode = 0 -) - -func init() { - flag.BoolVar(&options.AllErrors, "e", false, "report all errors (not just the first 10 on different lines)") -} - -func report(err error) { - scanner.PrintError(os.Stderr, err) - exitCode = 2 -} - -func usage() { - fmt.Fprintf(os.Stderr, "usage: goimports [flags] [path ...]\n") - flag.PrintDefaults() - os.Exit(2) -} - -func isGoFile(f os.FileInfo) bool { - // ignore non-Go files - name := f.Name() - return !f.IsDir() && !strings.HasPrefix(name, ".") && strings.HasSuffix(name, ".go") -} - -func processFile(filename string, in io.Reader, out io.Writer, stdin bool) error { - opt := options - if stdin { - nopt := *options - nopt.Fragment = true - opt = &nopt - } - - if in == nil { - f, err := os.Open(filename) - if err != nil { - return err - } - defer f.Close() - in = f - } - - src, err := ioutil.ReadAll(in) - if err != nil { - return err - } - - res, err := imports.Process(filename, src, opt) - if err != nil { - return err - } - - if !bytes.Equal(src, res) { - // formatting has changed - if *list { - fmt.Fprintln(out, filename) - } - if *write { - err = ioutil.WriteFile(filename, res, 0) - if err != nil { - return err - } - } - if *doDiff { - data, err := diff(src, res) - if err != nil { - return fmt.Errorf("computing diff: %s", err) - } - fmt.Printf("diff %s gofmt/%s\n", filename, filename) - out.Write(data) - } - } - - if !*list && !*write && !*doDiff { - _, err = out.Write(res) - } - - return err -} - -func visitFile(path string, f os.FileInfo, err error) error { - if err == nil && isGoFile(f) { - err = processFile(path, nil, os.Stdout, false) - } - if err != nil { - report(err) - } - return nil -} - -func walkDir(path string) { - filepath.Walk(path, visitFile) -} - -func main() { - runtime.GOMAXPROCS(runtime.NumCPU()) - - // call gofmtMain in a separate function - // so that it can use defer and have them - // run before the exit. - gofmtMain() - os.Exit(exitCode) -} - -func gofmtMain() { - flag.Usage = usage - flag.Parse() - - if options.TabWidth < 0 { - fmt.Fprintf(os.Stderr, "negative tabwidth %d\n", options.TabWidth) - exitCode = 2 - return - } - - if flag.NArg() == 0 { - if err := processFile("", os.Stdin, os.Stdout, true); err != nil { - report(err) - } - return - } - - for i := 0; i < flag.NArg(); i++ { - path := flag.Arg(i) - switch dir, err := os.Stat(path); { - case err != nil: - report(err) - case dir.IsDir(): - walkDir(path) - default: - if err := processFile(path, nil, os.Stdout, false); err != nil { - report(err) - } - } - } -} - -func diff(b1, b2 []byte) (data []byte, err error) { - f1, err := ioutil.TempFile("", "gofmt") - if err != nil { - return - } - defer os.Remove(f1.Name()) - defer f1.Close() - - f2, err := ioutil.TempFile("", "gofmt") - if err != nil { - return - } - defer os.Remove(f2.Name()) - defer f2.Close() - - f1.Write(b1) - f2.Write(b2) - - data, err = exec.Command("diff", "-u", f1.Name(), f2.Name()).CombinedOutput() - if len(data) > 0 { - // diff exits with a non-zero status when the files don't match. - // Ignore that failure as long as we get output. - err = nil - } - return -} diff --git a/vendor/github.com/go-fsnotify/fsnotify/AUTHORS b/vendor/github.com/go-fsnotify/fsnotify/AUTHORS deleted file mode 100644 index 4e0e828..0000000 --- a/vendor/github.com/go-fsnotify/fsnotify/AUTHORS +++ /dev/null @@ -1,34 +0,0 @@ -# Names should be added to this file as -# Name or Organization -# The email address is not required for organizations. - -# You can update this list using the following command: -# -# $ git shortlog -se | awk '{print $2 " " $3 " " $4}' - -# Please keep the list sorted. - -Adrien Bustany -Caleb Spare -Case Nelson -Chris Howey -Christoffer Buchholz -Dave Cheney -Francisco Souza -Hari haran -John C Barstow -Kelvin Fo -Matt Layher -Nathan Youngman -Paul Hammond -Pieter Droogendijk -Pursuit92 -Rob Figueiredo -Soge Zhang -Tilak Sharma -Travis Cline -Tudor Golubenco -Yukang -bronze1man -debrando -henrikedwards diff --git a/vendor/github.com/go-fsnotify/fsnotify/CHANGELOG.md b/vendor/github.com/go-fsnotify/fsnotify/CHANGELOG.md deleted file mode 100644 index ea9428a..0000000 --- a/vendor/github.com/go-fsnotify/fsnotify/CHANGELOG.md +++ /dev/null @@ -1,263 +0,0 @@ -# Changelog - -## v1.2.0 / 2015-02-08 - -* inotify: use epoll to wake up readEvents [#66](https://github.com/go-fsnotify/fsnotify/pull/66) (thanks @PieterD) -* inotify: closing watcher should now always shut down goroutine [#63](https://github.com/go-fsnotify/fsnotify/pull/63) (thanks @PieterD) -* kqueue: close kqueue after removing watches, fixes [#59](https://github.com/go-fsnotify/fsnotify/issues/59) - -## v1.1.1 / 2015-02-05 - -* inotify: Retry read on EINTR [#61](https://github.com/go-fsnotify/fsnotify/issues/61) (thanks @PieterD) - -## v1.1.0 / 2014-12-12 - -* kqueue: rework internals [#43](https://github.com/go-fsnotify/fsnotify/pull/43) - * add low-level functions - * only need to store flags on directories - * less mutexes [#13](https://github.com/go-fsnotify/fsnotify/issues/13) - * done can be an unbuffered channel - * remove calls to os.NewSyscallError -* More efficient string concatenation for Event.String() [#52](https://github.com/go-fsnotify/fsnotify/pull/52) (thanks @mdlayher) -* kqueue: fix regression in rework causing subdirectories to be watched [#48](https://github.com/go-fsnotify/fsnotify/issues/48) -* kqueue: cleanup internal watch before sending remove event [#51](https://github.com/go-fsnotify/fsnotify/issues/51) - -## v1.0.4 / 2014-09-07 - -* kqueue: add dragonfly to the build tags. -* Rename source code files, rearrange code so exported APIs are at the top. -* Add done channel to example code. [#37](https://github.com/go-fsnotify/fsnotify/pull/37) (thanks @chenyukang) - -## v1.0.3 / 2014-08-19 - -* [Fix] Windows MOVED_TO now translates to Create like on BSD and Linux. [#36](https://github.com/go-fsnotify/fsnotify/issues/36) - -## v1.0.2 / 2014-08-17 - -* [Fix] Missing create events on OS X. [#14](https://github.com/go-fsnotify/fsnotify/issues/14) (thanks @zhsso) -* [Fix] Make ./path and path equivalent. (thanks @zhsso) - -## v1.0.0 / 2014-08-15 - -* [API] Remove AddWatch on Windows, use Add. -* Improve documentation for exported identifiers. [#30](https://github.com/go-fsnotify/fsnotify/issues/30) -* Minor updates based on feedback from golint. - -## dev / 2014-07-09 - -* Moved to [github.com/go-fsnotify/fsnotify](https://github.com/go-fsnotify/fsnotify). -* Use os.NewSyscallError instead of returning errno (thanks @hariharan-uno) - -## dev / 2014-07-04 - -* kqueue: fix incorrect mutex used in Close() -* Update example to demonstrate usage of Op. - -## dev / 2014-06-28 - -* [API] Don't set the Write Op for attribute notifications [#4](https://github.com/go-fsnotify/fsnotify/issues/4) -* Fix for String() method on Event (thanks Alex Brainman) -* Don't build on Plan 9 or Solaris (thanks @4ad) - -## dev / 2014-06-21 - -* Events channel of type Event rather than *Event. -* [internal] use syscall constants directly for inotify and kqueue. -* [internal] kqueue: rename events to kevents and fileEvent to event. - -## dev / 2014-06-19 - -* Go 1.3+ required on Windows (uses syscall.ERROR_MORE_DATA internally). -* [internal] remove cookie from Event struct (unused). -* [internal] Event struct has the same definition across every OS. -* [internal] remove internal watch and removeWatch methods. - -## dev / 2014-06-12 - -* [API] Renamed Watch() to Add() and RemoveWatch() to Remove(). -* [API] Pluralized channel names: Events and Errors. -* [API] Renamed FileEvent struct to Event. -* [API] Op constants replace methods like IsCreate(). - -## dev / 2014-06-12 - -* Fix data race on kevent buffer (thanks @tilaks) [#98](https://github.com/howeyc/fsnotify/pull/98) - -## dev / 2014-05-23 - -* [API] Remove current implementation of WatchFlags. - * current implementation doesn't take advantage of OS for efficiency - * provides little benefit over filtering events as they are received, but has extra bookkeeping and mutexes - * no tests for the current implementation - * not fully implemented on Windows [#93](https://github.com/howeyc/fsnotify/issues/93#issuecomment-39285195) - -## v0.9.3 / 2014-12-31 - -* kqueue: cleanup internal watch before sending remove event [#51](https://github.com/go-fsnotify/fsnotify/issues/51) - -## v0.9.2 / 2014-08-17 - -* [Backport] Fix missing create events on OS X. [#14](https://github.com/go-fsnotify/fsnotify/issues/14) (thanks @zhsso) - -## v0.9.1 / 2014-06-12 - -* Fix data race on kevent buffer (thanks @tilaks) [#98](https://github.com/howeyc/fsnotify/pull/98) - -## v0.9.0 / 2014-01-17 - -* IsAttrib() for events that only concern a file's metadata [#79][] (thanks @abustany) -* [Fix] kqueue: fix deadlock [#77][] (thanks @cespare) -* [NOTICE] Development has moved to `code.google.com/p/go.exp/fsnotify` in preparation for inclusion in the Go standard library. - -## v0.8.12 / 2013-11-13 - -* [API] Remove FD_SET and friends from Linux adapter - -## v0.8.11 / 2013-11-02 - -* [Doc] Add Changelog [#72][] (thanks @nathany) -* [Doc] Spotlight and double modify events on OS X [#62][] (reported by @paulhammond) - -## v0.8.10 / 2013-10-19 - -* [Fix] kqueue: remove file watches when parent directory is removed [#71][] (reported by @mdwhatcott) -* [Fix] kqueue: race between Close and readEvents [#70][] (reported by @bernerdschaefer) -* [Doc] specify OS-specific limits in README (thanks @debrando) - -## v0.8.9 / 2013-09-08 - -* [Doc] Contributing (thanks @nathany) -* [Doc] update package path in example code [#63][] (thanks @paulhammond) -* [Doc] GoCI badge in README (Linux only) [#60][] -* [Doc] Cross-platform testing with Vagrant [#59][] (thanks @nathany) - -## v0.8.8 / 2013-06-17 - -* [Fix] Windows: handle `ERROR_MORE_DATA` on Windows [#49][] (thanks @jbowtie) - -## v0.8.7 / 2013-06-03 - -* [API] Make syscall flags internal -* [Fix] inotify: ignore event changes -* [Fix] race in symlink test [#45][] (reported by @srid) -* [Fix] tests on Windows -* lower case error messages - -## v0.8.6 / 2013-05-23 - -* kqueue: Use EVT_ONLY flag on Darwin -* [Doc] Update README with full example - -## v0.8.5 / 2013-05-09 - -* [Fix] inotify: allow monitoring of "broken" symlinks (thanks @tsg) - -## v0.8.4 / 2013-04-07 - -* [Fix] kqueue: watch all file events [#40][] (thanks @ChrisBuchholz) - -## v0.8.3 / 2013-03-13 - -* [Fix] inoitfy/kqueue memory leak [#36][] (reported by @nbkolchin) -* [Fix] kqueue: use fsnFlags for watching a directory [#33][] (reported by @nbkolchin) - -## v0.8.2 / 2013-02-07 - -* [Doc] add Authors -* [Fix] fix data races for map access [#29][] (thanks @fsouza) - -## v0.8.1 / 2013-01-09 - -* [Fix] Windows path separators -* [Doc] BSD License - -## v0.8.0 / 2012-11-09 - -* kqueue: directory watching improvements (thanks @vmirage) -* inotify: add `IN_MOVED_TO` [#25][] (requested by @cpisto) -* [Fix] kqueue: deleting watched directory [#24][] (reported by @jakerr) - -## v0.7.4 / 2012-10-09 - -* [Fix] inotify: fixes from https://codereview.appspot.com/5418045/ (ugorji) -* [Fix] kqueue: preserve watch flags when watching for delete [#21][] (reported by @robfig) -* [Fix] kqueue: watch the directory even if it isn't a new watch (thanks @robfig) -* [Fix] kqueue: modify after recreation of file - -## v0.7.3 / 2012-09-27 - -* [Fix] kqueue: watch with an existing folder inside the watched folder (thanks @vmirage) -* [Fix] kqueue: no longer get duplicate CREATE events - -## v0.7.2 / 2012-09-01 - -* kqueue: events for created directories - -## v0.7.1 / 2012-07-14 - -* [Fix] for renaming files - -## v0.7.0 / 2012-07-02 - -* [Feature] FSNotify flags -* [Fix] inotify: Added file name back to event path - -## v0.6.0 / 2012-06-06 - -* kqueue: watch files after directory created (thanks @tmc) - -## v0.5.1 / 2012-05-22 - -* [Fix] inotify: remove all watches before Close() - -## v0.5.0 / 2012-05-03 - -* [API] kqueue: return errors during watch instead of sending over channel -* kqueue: match symlink behavior on Linux -* inotify: add `DELETE_SELF` (requested by @taralx) -* [Fix] kqueue: handle EINTR (reported by @robfig) -* [Doc] Godoc example [#1][] (thanks @davecheney) - -## v0.4.0 / 2012-03-30 - -* Go 1 released: build with go tool -* [Feature] Windows support using winfsnotify -* Windows does not have attribute change notifications -* Roll attribute notifications into IsModify - -## v0.3.0 / 2012-02-19 - -* kqueue: add files when watch directory - -## v0.2.0 / 2011-12-30 - -* update to latest Go weekly code - -## v0.1.0 / 2011-10-19 - -* kqueue: add watch on file creation to match inotify -* kqueue: create file event -* inotify: ignore `IN_IGNORED` events -* event String() -* linux: common FileEvent functions -* initial commit - -[#79]: https://github.com/howeyc/fsnotify/pull/79 -[#77]: https://github.com/howeyc/fsnotify/pull/77 -[#72]: https://github.com/howeyc/fsnotify/issues/72 -[#71]: https://github.com/howeyc/fsnotify/issues/71 -[#70]: https://github.com/howeyc/fsnotify/issues/70 -[#63]: https://github.com/howeyc/fsnotify/issues/63 -[#62]: https://github.com/howeyc/fsnotify/issues/62 -[#60]: https://github.com/howeyc/fsnotify/issues/60 -[#59]: https://github.com/howeyc/fsnotify/issues/59 -[#49]: https://github.com/howeyc/fsnotify/issues/49 -[#45]: https://github.com/howeyc/fsnotify/issues/45 -[#40]: https://github.com/howeyc/fsnotify/issues/40 -[#36]: https://github.com/howeyc/fsnotify/issues/36 -[#33]: https://github.com/howeyc/fsnotify/issues/33 -[#29]: https://github.com/howeyc/fsnotify/issues/29 -[#25]: https://github.com/howeyc/fsnotify/issues/25 -[#24]: https://github.com/howeyc/fsnotify/issues/24 -[#21]: https://github.com/howeyc/fsnotify/issues/21 - diff --git a/vendor/github.com/go-fsnotify/fsnotify/CONTRIBUTING.md b/vendor/github.com/go-fsnotify/fsnotify/CONTRIBUTING.md deleted file mode 100644 index 0f377f3..0000000 --- a/vendor/github.com/go-fsnotify/fsnotify/CONTRIBUTING.md +++ /dev/null @@ -1,77 +0,0 @@ -# Contributing - -## Issues - -* Request features and report bugs using the [GitHub Issue Tracker](https://github.com/go-fsnotify/fsnotify/issues). -* Please indicate the platform you are using fsnotify on. -* A code example to reproduce the problem is appreciated. - -## Pull Requests - -### Contributor License Agreement - -fsnotify is derived from code in the [golang.org/x/exp](https://godoc.org/golang.org/x/exp) package and it may be included [in the standard library](https://github.com/go-fsnotify/fsnotify/issues/1) in the future. Therefore fsnotify carries the same [LICENSE](https://github.com/go-fsnotify/fsnotify/blob/master/LICENSE) as Go. Contributors retain their copyright, so you need to fill out a short form before we can accept your contribution: [Google Individual Contributor License Agreement](https://developers.google.com/open-source/cla/individual). - -Please indicate that you have signed the CLA in your pull request. - -### How fsnotify is Developed - -* Development is done on feature branches. -* Tests are run on BSD, Linux, OS X and Windows. -* Pull requests are reviewed and [applied to master][am] using [hub][]. - * Maintainers may modify or squash commits rather than asking contributors to. -* To issue a new release, the maintainers will: - * Update the CHANGELOG - * Tag a version, which will become available through gopkg.in. - -### How to Fork - -For smooth sailing, always use the original import path. Installing with `go get` makes this easy. - -1. Install from GitHub (`go get -u github.com/go-fsnotify/fsnotify`) -2. Create your feature branch (`git checkout -b my-new-feature`) -3. Ensure everything works and the tests pass (see below) -4. Commit your changes (`git commit -am 'Add some feature'`) - -Contribute upstream: - -1. Fork fsnotify on GitHub -2. Add your remote (`git remote add fork git@github.com:mycompany/repo.git`) -3. Push to the branch (`git push fork my-new-feature`) -4. Create a new Pull Request on GitHub - -This workflow is [thoroughly explained by Katrina Owen](https://blog.splice.com/contributing-open-source-git-repositories-go/). - -### Testing - -fsnotify uses build tags to compile different code on Linux, BSD, OS X, and Windows. - -Before doing a pull request, please do your best to test your changes on multiple platforms, and list which platforms you were able/unable to test on. - -To aid in cross-platform testing there is a Vagrantfile for Linux and BSD. - -* Install [Vagrant](http://www.vagrantup.com/) and [VirtualBox](https://www.virtualbox.org/) -* Setup [Vagrant Gopher](https://github.com/nathany/vagrant-gopher) in your `src` folder. -* Run `vagrant up` from the project folder. You can also setup just one box with `vagrant up linux` or `vagrant up bsd` (note: the BSD box doesn't support Windows hosts at this time, and NFS may prompt for your host OS password) -* Once setup, you can run the test suite on a given OS with a single command `vagrant ssh linux -c 'cd go-fsnotify/fsnotify; go test'`. -* When you're done, you will want to halt or destroy the Vagrant boxes. - -Notice: fsnotify file system events won't trigger in shared folders. The tests get around this limitation by using the /tmp directory. - -Right now there is no equivalent solution for Windows and OS X, but there are Windows VMs [freely available from Microsoft](http://www.modern.ie/en-us/virtualization-tools#downloads). - -### Maintainers - -Help maintaining fsnotify is welcome. To be a maintainer: - -* Submit a pull request and sign the CLA as above. -* You must be able to run the test suite on Mac, Windows, Linux and BSD. - -To keep master clean, the fsnotify project uses the "apply mail" workflow outlined in Nathaniel Talbott's post ["Merge pull request" Considered Harmful][am]. This requires installing [hub][]. - -All code changes should be internal pull requests. - -Releases are tagged using [Semantic Versioning](http://semver.org/). - -[hub]: https://github.com/github/hub -[am]: http://blog.spreedly.com/2014/06/24/merge-pull-request-considered-harmful/#.VGa5yZPF_Zs diff --git a/vendor/github.com/go-fsnotify/fsnotify/LICENSE b/vendor/github.com/go-fsnotify/fsnotify/LICENSE deleted file mode 100644 index f21e540..0000000 --- a/vendor/github.com/go-fsnotify/fsnotify/LICENSE +++ /dev/null @@ -1,28 +0,0 @@ -Copyright (c) 2012 The Go Authors. All rights reserved. -Copyright (c) 2012 fsnotify Authors. All rights reserved. - -Redistribution and use in source and binary forms, with or without -modification, are permitted provided that the following conditions are -met: - - * Redistributions of source code must retain the above copyright -notice, this list of conditions and the following disclaimer. - * Redistributions in binary form must reproduce the above -copyright notice, this list of conditions and the following disclaimer -in the documentation and/or other materials provided with the -distribution. - * Neither the name of Google Inc. nor the names of its -contributors may be used to endorse or promote products derived from -this software without specific prior written permission. - -THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS -"AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT -LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR -A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT -OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, -SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT -LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, -DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY -THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE -OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. diff --git a/vendor/github.com/go-fsnotify/fsnotify/NotUsed.xcworkspace b/vendor/github.com/go-fsnotify/fsnotify/NotUsed.xcworkspace deleted file mode 100644 index e69de29..0000000 diff --git a/vendor/github.com/go-fsnotify/fsnotify/README.md b/vendor/github.com/go-fsnotify/fsnotify/README.md deleted file mode 100644 index c497a0f..0000000 --- a/vendor/github.com/go-fsnotify/fsnotify/README.md +++ /dev/null @@ -1,64 +0,0 @@ -# File system notifications for Go - -[![Coverage](http://gocover.io/_badge/github.com/go-fsnotify/fsnotify)](http://gocover.io/github.com/go-fsnotify/fsnotify) [![GoDoc](https://godoc.org/gopkg.in/fsnotify.v1?status.svg)](https://godoc.org/gopkg.in/fsnotify.v1) - -Go 1.3+ required. - -Cross platform: Windows, Linux, BSD and OS X. - -|Adapter |OS |Status | -|----------|----------|----------| -|inotify |Linux, Android\*|Supported [![Build Status](https://travis-ci.org/go-fsnotify/fsnotify.svg?branch=master)](https://travis-ci.org/go-fsnotify/fsnotify)| -|kqueue |BSD, OS X, iOS\*|Supported [![Circle CI](https://circleci.com/gh/go-fsnotify/fsnotify.svg?style=svg)](https://circleci.com/gh/go-fsnotify/fsnotify)| -|ReadDirectoryChangesW|Windows|Supported [![Build status](https://ci.appveyor.com/api/projects/status/ivwjubaih4r0udeh/branch/master?svg=true)](https://ci.appveyor.com/project/NathanYoungman/fsnotify/branch/master)| -|FSEvents |OS X |[Planned](https://github.com/go-fsnotify/fsnotify/issues/11)| -|FEN |Solaris 11 |[Planned](https://github.com/go-fsnotify/fsnotify/issues/12)| -|fanotify |Linux 2.6.37+ | | -|USN Journals |Windows |[Maybe](https://github.com/go-fsnotify/fsnotify/issues/53)| -|Polling |*All* |[Maybe](https://github.com/go-fsnotify/fsnotify/issues/9)| - -\* Android and iOS are untested. - -Please see [the documentation](https://godoc.org/gopkg.in/fsnotify.v1) for usage. Consult the [Wiki](https://github.com/go-fsnotify/fsnotify/wiki) for the FAQ and further information. - -## API stability - -Two major versions of fsnotify exist. - -**[fsnotify.v0](https://gopkg.in/fsnotify.v0)** is API-compatible with [howeyc/fsnotify](https://godoc.org/github.com/howeyc/fsnotify). Bugfixes *may* be backported, but I recommend upgrading to v1. - -```go -import "gopkg.in/fsnotify.v0" -``` - -\* Refer to the package as fsnotify (without the .v0 suffix). - -**[fsnotify.v1](https://gopkg.in/fsnotify.v1)** provides [a new API](https://godoc.org/gopkg.in/fsnotify.v1) based on [this design document](http://goo.gl/MrYxyA). You can import v1 with: - -```go -import "gopkg.in/fsnotify.v1" -``` - -Further API changes are [planned](https://github.com/go-fsnotify/fsnotify/milestones), but a new major revision will be tagged, so you can depend on the v1 API. - -**Master** may have unreleased changes. Use it to test the very latest code or when [contributing][], but don't expect it to remain API-compatible: - -```go -import "github.com/go-fsnotify/fsnotify" -``` - -## Contributing - -Please refer to [CONTRIBUTING][] before opening an issue or pull request. - -## Example - -See [example_test.go](https://github.com/go-fsnotify/fsnotify/blob/master/example_test.go). - -[contributing]: https://github.com/go-fsnotify/fsnotify/blob/master/CONTRIBUTING.md - -## Related Projects - -* [notify](https://github.com/rjeczalik/notify) -* [fsevents](https://github.com/go-fsnotify/fsevents) - diff --git a/vendor/github.com/go-fsnotify/fsnotify/circle.yml b/vendor/github.com/go-fsnotify/fsnotify/circle.yml deleted file mode 100644 index 204217f..0000000 --- a/vendor/github.com/go-fsnotify/fsnotify/circle.yml +++ /dev/null @@ -1,26 +0,0 @@ -## OS X build (CircleCI iOS beta) - -# Pretend like it's an Xcode project, at least to get it running. -machine: - environment: - XCODE_WORKSPACE: NotUsed.xcworkspace - XCODE_SCHEME: NotUsed - # This is where the go project is actually checked out to: - CIRCLE_BUILD_DIR: $HOME/.go_project/src/github.com/go-fsnotify/fsnotify - -dependencies: - pre: - - brew upgrade go - -test: - override: - - go test ./... - -# Idealized future config, eventually with cross-platform build matrix :-) - -# machine: -# go: -# version: 1.4 -# os: -# - osx -# - linux diff --git a/vendor/github.com/go-fsnotify/fsnotify/fsnotify.go b/vendor/github.com/go-fsnotify/fsnotify/fsnotify.go deleted file mode 100644 index c899ee0..0000000 --- a/vendor/github.com/go-fsnotify/fsnotify/fsnotify.go +++ /dev/null @@ -1,62 +0,0 @@ -// Copyright 2012 The Go Authors. All rights reserved. -// Use of this source code is governed by a BSD-style -// license that can be found in the LICENSE file. - -// +build !plan9,!solaris - -// Package fsnotify provides a platform-independent interface for file system notifications. -package fsnotify - -import ( - "bytes" - "fmt" -) - -// Event represents a single file system notification. -type Event struct { - Name string // Relative path to the file or directory. - Op Op // File operation that triggered the event. -} - -// Op describes a set of file operations. -type Op uint32 - -// These are the generalized file operations that can trigger a notification. -const ( - Create Op = 1 << iota - Write - Remove - Rename - Chmod -) - -// String returns a string representation of the event in the form -// "file: REMOVE|WRITE|..." -func (e Event) String() string { - // Use a buffer for efficient string concatenation - var buffer bytes.Buffer - - if e.Op&Create == Create { - buffer.WriteString("|CREATE") - } - if e.Op&Remove == Remove { - buffer.WriteString("|REMOVE") - } - if e.Op&Write == Write { - buffer.WriteString("|WRITE") - } - if e.Op&Rename == Rename { - buffer.WriteString("|RENAME") - } - if e.Op&Chmod == Chmod { - buffer.WriteString("|CHMOD") - } - - // If buffer remains empty, return no event names - if buffer.Len() == 0 { - return fmt.Sprintf("%q: ", e.Name) - } - - // Return a list of event names, with leading pipe character stripped - return fmt.Sprintf("%q: %s", e.Name, buffer.String()[1:]) -} diff --git a/vendor/github.com/go-fsnotify/fsnotify/inotify.go b/vendor/github.com/go-fsnotify/fsnotify/inotify.go deleted file mode 100644 index d7759ec..0000000 --- a/vendor/github.com/go-fsnotify/fsnotify/inotify.go +++ /dev/null @@ -1,306 +0,0 @@ -// Copyright 2010 The Go Authors. All rights reserved. -// Use of this source code is governed by a BSD-style -// license that can be found in the LICENSE file. - -// +build linux - -package fsnotify - -import ( - "errors" - "fmt" - "io" - "os" - "path/filepath" - "strings" - "sync" - "syscall" - "unsafe" -) - -// Watcher watches a set of files, delivering events to a channel. -type Watcher struct { - Events chan Event - Errors chan error - mu sync.Mutex // Map access - fd int - poller *fdPoller - watches map[string]*watch // Map of inotify watches (key: path) - paths map[int]string // Map of watched paths (key: watch descriptor) - done chan struct{} // Channel for sending a "quit message" to the reader goroutine - doneResp chan struct{} // Channel to respond to Close -} - -// NewWatcher establishes a new watcher with the underlying OS and begins waiting for events. -func NewWatcher() (*Watcher, error) { - // Create inotify fd - fd, errno := syscall.InotifyInit() - if fd == -1 { - return nil, errno - } - // Create epoll - poller, err := newFdPoller(fd) - if err != nil { - syscall.Close(fd) - return nil, err - } - w := &Watcher{ - fd: fd, - poller: poller, - watches: make(map[string]*watch), - paths: make(map[int]string), - Events: make(chan Event), - Errors: make(chan error), - done: make(chan struct{}), - doneResp: make(chan struct{}), - } - - go w.readEvents() - return w, nil -} - -func (w *Watcher) isClosed() bool { - select { - case <-w.done: - return true - default: - return false - } -} - -// Close removes all watches and closes the events channel. -func (w *Watcher) Close() error { - if w.isClosed() { - return nil - } - - // Send 'close' signal to goroutine, and set the Watcher to closed. - close(w.done) - - // Wake up goroutine - w.poller.wake() - - // Wait for goroutine to close - <-w.doneResp - - return nil -} - -// Add starts watching the named file or directory (non-recursively). -func (w *Watcher) Add(name string) error { - name = filepath.Clean(name) - if w.isClosed() { - return errors.New("inotify instance already closed") - } - - const agnosticEvents = syscall.IN_MOVED_TO | syscall.IN_MOVED_FROM | - syscall.IN_CREATE | syscall.IN_ATTRIB | syscall.IN_MODIFY | - syscall.IN_MOVE_SELF | syscall.IN_DELETE | syscall.IN_DELETE_SELF - - var flags uint32 = agnosticEvents - - w.mu.Lock() - watchEntry, found := w.watches[name] - w.mu.Unlock() - if found { - watchEntry.flags |= flags - flags |= syscall.IN_MASK_ADD - } - wd, errno := syscall.InotifyAddWatch(w.fd, name, flags) - if wd == -1 { - return errno - } - - w.mu.Lock() - w.watches[name] = &watch{wd: uint32(wd), flags: flags} - w.paths[wd] = name - w.mu.Unlock() - - return nil -} - -// Remove stops watching the named file or directory (non-recursively). -func (w *Watcher) Remove(name string) error { - name = filepath.Clean(name) - - // Fetch the watch. - w.mu.Lock() - defer w.mu.Unlock() - watch, ok := w.watches[name] - - // Remove it from inotify. - if !ok { - return fmt.Errorf("can't remove non-existent inotify watch for: %s", name) - } - // inotify_rm_watch will return EINVAL if the file has been deleted; - // the inotify will already have been removed. - // That means we can safely delete it from our watches, whatever inotify_rm_watch does. - delete(w.watches, name) - success, errno := syscall.InotifyRmWatch(w.fd, watch.wd) - if success == -1 { - // TODO: Perhaps it's not helpful to return an error here in every case. - // the only two possible errors are: - // EBADF, which happens when w.fd is not a valid file descriptor of any kind. - // EINVAL, which is when fd is not an inotify descriptor or wd is not a valid watch descriptor. - // Watch descriptors are invalidated when they are removed explicitly or implicitly; - // explicitly by inotify_rm_watch, implicitly when the file they are watching is deleted. - return errno - } - return nil -} - -type watch struct { - wd uint32 // Watch descriptor (as returned by the inotify_add_watch() syscall) - flags uint32 // inotify flags of this watch (see inotify(7) for the list of valid flags) -} - -// readEvents reads from the inotify file descriptor, converts the -// received events into Event objects and sends them via the Events channel -func (w *Watcher) readEvents() { - var ( - buf [syscall.SizeofInotifyEvent * 4096]byte // Buffer for a maximum of 4096 raw events - n int // Number of bytes read with read() - errno error // Syscall errno - ok bool // For poller.wait - ) - - defer close(w.doneResp) - defer close(w.Errors) - defer close(w.Events) - defer syscall.Close(w.fd) - defer w.poller.close() - - for { - // See if we have been closed. - if w.isClosed() { - return - } - - ok, errno = w.poller.wait() - if errno != nil { - select { - case w.Errors <- errno: - case <-w.done: - return - } - continue - } - - if !ok { - continue - } - - n, errno = syscall.Read(w.fd, buf[:]) - // If a signal interrupted execution, see if we've been asked to close, and try again. - // http://man7.org/linux/man-pages/man7/signal.7.html : - // "Before Linux 3.8, reads from an inotify(7) file descriptor were not restartable" - if errno == syscall.EINTR { - continue - } - - // syscall.Read might have been woken up by Close. If so, we're done. - if w.isClosed() { - return - } - - if n < syscall.SizeofInotifyEvent { - var err error - if n == 0 { - // If EOF is received. This should really never happen. - err = io.EOF - } else if n < 0 { - // If an error occured while reading. - err = errno - } else { - // Read was too short. - err = errors.New("notify: short read in readEvents()") - } - select { - case w.Errors <- err: - case <-w.done: - return - } - continue - } - - var offset uint32 - // We don't know how many events we just read into the buffer - // While the offset points to at least one whole event... - for offset <= uint32(n-syscall.SizeofInotifyEvent) { - // Point "raw" to the event in the buffer - raw := (*syscall.InotifyEvent)(unsafe.Pointer(&buf[offset])) - - mask := uint32(raw.Mask) - nameLen := uint32(raw.Len) - // If the event happened to the watched directory or the watched file, the kernel - // doesn't append the filename to the event, but we would like to always fill the - // the "Name" field with a valid filename. We retrieve the path of the watch from - // the "paths" map. - w.mu.Lock() - name := w.paths[int(raw.Wd)] - w.mu.Unlock() - if nameLen > 0 { - // Point "bytes" at the first byte of the filename - bytes := (*[syscall.PathMax]byte)(unsafe.Pointer(&buf[offset+syscall.SizeofInotifyEvent])) - // The filename is padded with NULL bytes. TrimRight() gets rid of those. - name += "/" + strings.TrimRight(string(bytes[0:nameLen]), "\000") - } - - event := newEvent(name, mask) - - // Send the events that are not ignored on the events channel - if !event.ignoreLinux(mask) { - select { - case w.Events <- event: - case <-w.done: - return - } - } - - // Move to the next event in the buffer - offset += syscall.SizeofInotifyEvent + nameLen - } - } -} - -// Certain types of events can be "ignored" and not sent over the Events -// channel. Such as events marked ignore by the kernel, or MODIFY events -// against files that do not exist. -func (e *Event) ignoreLinux(mask uint32) bool { - // Ignore anything the inotify API says to ignore - if mask&syscall.IN_IGNORED == syscall.IN_IGNORED { - return true - } - - // If the event is not a DELETE or RENAME, the file must exist. - // Otherwise the event is ignored. - // *Note*: this was put in place because it was seen that a MODIFY - // event was sent after the DELETE. This ignores that MODIFY and - // assumes a DELETE will come or has come if the file doesn't exist. - if !(e.Op&Remove == Remove || e.Op&Rename == Rename) { - _, statErr := os.Lstat(e.Name) - return os.IsNotExist(statErr) - } - return false -} - -// newEvent returns an platform-independent Event based on an inotify mask. -func newEvent(name string, mask uint32) Event { - e := Event{Name: name} - if mask&syscall.IN_CREATE == syscall.IN_CREATE || mask&syscall.IN_MOVED_TO == syscall.IN_MOVED_TO { - e.Op |= Create - } - if mask&syscall.IN_DELETE_SELF == syscall.IN_DELETE_SELF || mask&syscall.IN_DELETE == syscall.IN_DELETE { - e.Op |= Remove - } - if mask&syscall.IN_MODIFY == syscall.IN_MODIFY { - e.Op |= Write - } - if mask&syscall.IN_MOVE_SELF == syscall.IN_MOVE_SELF || mask&syscall.IN_MOVED_FROM == syscall.IN_MOVED_FROM { - e.Op |= Rename - } - if mask&syscall.IN_ATTRIB == syscall.IN_ATTRIB { - e.Op |= Chmod - } - return e -} diff --git a/vendor/github.com/go-fsnotify/fsnotify/inotify_poller.go b/vendor/github.com/go-fsnotify/fsnotify/inotify_poller.go deleted file mode 100644 index 3b41784..0000000 --- a/vendor/github.com/go-fsnotify/fsnotify/inotify_poller.go +++ /dev/null @@ -1,186 +0,0 @@ -// Copyright 2015 The Go Authors. All rights reserved. -// Use of this source code is governed by a BSD-style -// license that can be found in the LICENSE file. - -// +build linux - -package fsnotify - -import ( - "errors" - "syscall" -) - -type fdPoller struct { - fd int // File descriptor (as returned by the inotify_init() syscall) - epfd int // Epoll file descriptor - pipe [2]int // Pipe for waking up -} - -func emptyPoller(fd int) *fdPoller { - poller := new(fdPoller) - poller.fd = fd - poller.epfd = -1 - poller.pipe[0] = -1 - poller.pipe[1] = -1 - return poller -} - -// Create a new inotify poller. -// This creates an inotify handler, and an epoll handler. -func newFdPoller(fd int) (*fdPoller, error) { - var errno error - poller := emptyPoller(fd) - defer func() { - if errno != nil { - poller.close() - } - }() - poller.fd = fd - - // Create epoll fd - poller.epfd, errno = syscall.EpollCreate(1) - if poller.epfd == -1 { - return nil, errno - } - // Create pipe; pipe[0] is the read end, pipe[1] the write end. - errno = syscall.Pipe2(poller.pipe[:], syscall.O_NONBLOCK) - if errno != nil { - return nil, errno - } - - // Register inotify fd with epoll - event := syscall.EpollEvent{ - Fd: int32(poller.fd), - Events: syscall.EPOLLIN, - } - errno = syscall.EpollCtl(poller.epfd, syscall.EPOLL_CTL_ADD, poller.fd, &event) - if errno != nil { - return nil, errno - } - - // Register pipe fd with epoll - event = syscall.EpollEvent{ - Fd: int32(poller.pipe[0]), - Events: syscall.EPOLLIN, - } - errno = syscall.EpollCtl(poller.epfd, syscall.EPOLL_CTL_ADD, poller.pipe[0], &event) - if errno != nil { - return nil, errno - } - - return poller, nil -} - -// Wait using epoll. -// Returns true if something is ready to be read, -// false if there is not. -func (poller *fdPoller) wait() (bool, error) { - // 3 possible events per fd, and 2 fds, makes a maximum of 6 events. - // I don't know whether epoll_wait returns the number of events returned, - // or the total number of events ready. - // I decided to catch both by making the buffer one larger than the maximum. - events := make([]syscall.EpollEvent, 7) - for { - n, errno := syscall.EpollWait(poller.epfd, events, -1) - if n == -1 { - if errno == syscall.EINTR { - continue - } - return false, errno - } - if n == 0 { - // If there are no events, try again. - continue - } - if n > 6 { - // This should never happen. More events were returned than should be possible. - return false, errors.New("epoll_wait returned more events than I know what to do with") - } - ready := events[:n] - epollhup := false - epollerr := false - epollin := false - for _, event := range ready { - if event.Fd == int32(poller.fd) { - if event.Events&syscall.EPOLLHUP != 0 { - // This should not happen, but if it does, treat it as a wakeup. - epollhup = true - } - if event.Events&syscall.EPOLLERR != 0 { - // If an error is waiting on the file descriptor, we should pretend - // something is ready to read, and let syscall.Read pick up the error. - epollerr = true - } - if event.Events&syscall.EPOLLIN != 0 { - // There is data to read. - epollin = true - } - } - if event.Fd == int32(poller.pipe[0]) { - if event.Events&syscall.EPOLLHUP != 0 { - // Write pipe descriptor was closed, by us. This means we're closing down the - // watcher, and we should wake up. - } - if event.Events&syscall.EPOLLERR != 0 { - // If an error is waiting on the pipe file descriptor. - // This is an absolute mystery, and should never ever happen. - return false, errors.New("Error on the pipe descriptor.") - } - if event.Events&syscall.EPOLLIN != 0 { - // This is a regular wakeup, so we have to clear the buffer. - err := poller.clearWake() - if err != nil { - return false, err - } - } - } - } - - if epollhup || epollerr || epollin { - return true, nil - } - return false, nil - } -} - -// Close the write end of the poller. -func (poller *fdPoller) wake() error { - buf := make([]byte, 1) - n, errno := syscall.Write(poller.pipe[1], buf) - if n == -1 { - if errno == syscall.EAGAIN { - // Buffer is full, poller will wake. - return nil - } - return errno - } - return nil -} - -func (poller *fdPoller) clearWake() error { - // You have to be woken up a LOT in order to get to 100! - buf := make([]byte, 100) - n, errno := syscall.Read(poller.pipe[0], buf) - if n == -1 { - if errno == syscall.EAGAIN { - // Buffer is empty, someone else cleared our wake. - return nil - } - return errno - } - return nil -} - -// Close all poller file descriptors, but not the one passed to it. -func (poller *fdPoller) close() { - if poller.pipe[1] != -1 { - syscall.Close(poller.pipe[1]) - } - if poller.pipe[0] != -1 { - syscall.Close(poller.pipe[0]) - } - if poller.epfd != -1 { - syscall.Close(poller.epfd) - } -} diff --git a/vendor/github.com/go-fsnotify/fsnotify/kqueue.go b/vendor/github.com/go-fsnotify/fsnotify/kqueue.go deleted file mode 100644 index 265622d..0000000 --- a/vendor/github.com/go-fsnotify/fsnotify/kqueue.go +++ /dev/null @@ -1,463 +0,0 @@ -// Copyright 2010 The Go Authors. All rights reserved. -// Use of this source code is governed by a BSD-style -// license that can be found in the LICENSE file. - -// +build freebsd openbsd netbsd dragonfly darwin - -package fsnotify - -import ( - "errors" - "fmt" - "io/ioutil" - "os" - "path/filepath" - "sync" - "syscall" - "time" -) - -// Watcher watches a set of files, delivering events to a channel. -type Watcher struct { - Events chan Event - Errors chan error - done chan bool // Channel for sending a "quit message" to the reader goroutine - - kq int // File descriptor (as returned by the kqueue() syscall). - - mu sync.Mutex // Protects access to watcher data - watches map[string]int // Map of watched file descriptors (key: path). - externalWatches map[string]bool // Map of watches added by user of the library. - dirFlags map[string]uint32 // Map of watched directories to fflags used in kqueue. - paths map[int]pathInfo // Map file descriptors to path names for processing kqueue events. - fileExists map[string]bool // Keep track of if we know this file exists (to stop duplicate create events). - isClosed bool // Set to true when Close() is first called -} - -type pathInfo struct { - name string - isDir bool -} - -// NewWatcher establishes a new watcher with the underlying OS and begins waiting for events. -func NewWatcher() (*Watcher, error) { - kq, err := kqueue() - if err != nil { - return nil, err - } - - w := &Watcher{ - kq: kq, - watches: make(map[string]int), - dirFlags: make(map[string]uint32), - paths: make(map[int]pathInfo), - fileExists: make(map[string]bool), - externalWatches: make(map[string]bool), - Events: make(chan Event), - Errors: make(chan error), - done: make(chan bool), - } - - go w.readEvents() - return w, nil -} - -// Close removes all watches and closes the events channel. -func (w *Watcher) Close() error { - w.mu.Lock() - if w.isClosed { - w.mu.Unlock() - return nil - } - w.isClosed = true - w.mu.Unlock() - - w.mu.Lock() - ws := w.watches - w.mu.Unlock() - - var err error - for name := range ws { - if e := w.Remove(name); e != nil && err == nil { - err = e - } - } - - // Send "quit" message to the reader goroutine: - w.done <- true - - return nil -} - -// Add starts watching the named file or directory (non-recursively). -func (w *Watcher) Add(name string) error { - w.mu.Lock() - w.externalWatches[name] = true - w.mu.Unlock() - return w.addWatch(name, noteAllEvents) -} - -// Remove stops watching the the named file or directory (non-recursively). -func (w *Watcher) Remove(name string) error { - name = filepath.Clean(name) - w.mu.Lock() - watchfd, ok := w.watches[name] - w.mu.Unlock() - if !ok { - return fmt.Errorf("can't remove non-existent kevent watch for: %s", name) - } - - const registerRemove = syscall.EV_DELETE - if err := register(w.kq, []int{watchfd}, registerRemove, 0); err != nil { - return err - } - - syscall.Close(watchfd) - - w.mu.Lock() - isDir := w.paths[watchfd].isDir - delete(w.watches, name) - delete(w.paths, watchfd) - delete(w.dirFlags, name) - w.mu.Unlock() - - // Find all watched paths that are in this directory that are not external. - if isDir { - var pathsToRemove []string - w.mu.Lock() - for _, path := range w.paths { - wdir, _ := filepath.Split(path.name) - if filepath.Clean(wdir) == name { - if !w.externalWatches[path.name] { - pathsToRemove = append(pathsToRemove, path.name) - } - } - } - w.mu.Unlock() - for _, name := range pathsToRemove { - // Since these are internal, not much sense in propagating error - // to the user, as that will just confuse them with an error about - // a path they did not explicitly watch themselves. - w.Remove(name) - } - } - - return nil -} - -// Watch all events (except NOTE_EXTEND, NOTE_LINK, NOTE_REVOKE) -const noteAllEvents = syscall.NOTE_DELETE | syscall.NOTE_WRITE | syscall.NOTE_ATTRIB | syscall.NOTE_RENAME - -// keventWaitTime to block on each read from kevent -var keventWaitTime = durationToTimespec(100 * time.Millisecond) - -// addWatch adds name to the watched file set. -// The flags are interpreted as described in kevent(2). -func (w *Watcher) addWatch(name string, flags uint32) error { - var isDir bool - // Make ./name and name equivalent - name = filepath.Clean(name) - - w.mu.Lock() - if w.isClosed { - w.mu.Unlock() - return errors.New("kevent instance already closed") - } - watchfd, alreadyWatching := w.watches[name] - // We already have a watch, but we can still override flags. - if alreadyWatching { - isDir = w.paths[watchfd].isDir - } - w.mu.Unlock() - - if !alreadyWatching { - fi, err := os.Lstat(name) - if err != nil { - return err - } - - // Don't watch sockets. - if fi.Mode()&os.ModeSocket == os.ModeSocket { - return nil - } - - // Follow Symlinks - // Unfortunately, Linux can add bogus symlinks to watch list without - // issue, and Windows can't do symlinks period (AFAIK). To maintain - // consistency, we will act like everything is fine. There will simply - // be no file events for broken symlinks. - // Hence the returns of nil on errors. - if fi.Mode()&os.ModeSymlink == os.ModeSymlink { - name, err = filepath.EvalSymlinks(name) - if err != nil { - return nil - } - - fi, err = os.Lstat(name) - if err != nil { - return nil - } - } - - watchfd, err = syscall.Open(name, openMode, 0700) - if watchfd == -1 { - return err - } - - isDir = fi.IsDir() - } - - const registerAdd = syscall.EV_ADD | syscall.EV_CLEAR | syscall.EV_ENABLE - if err := register(w.kq, []int{watchfd}, registerAdd, flags); err != nil { - syscall.Close(watchfd) - return err - } - - if !alreadyWatching { - w.mu.Lock() - w.watches[name] = watchfd - w.paths[watchfd] = pathInfo{name: name, isDir: isDir} - w.mu.Unlock() - } - - if isDir { - // Watch the directory if it has not been watched before, - // or if it was watched before, but perhaps only a NOTE_DELETE (watchDirectoryFiles) - w.mu.Lock() - watchDir := (flags&syscall.NOTE_WRITE) == syscall.NOTE_WRITE && - (!alreadyWatching || (w.dirFlags[name]&syscall.NOTE_WRITE) != syscall.NOTE_WRITE) - // Store flags so this watch can be updated later - w.dirFlags[name] = flags - w.mu.Unlock() - - if watchDir { - if err := w.watchDirectoryFiles(name); err != nil { - return err - } - } - } - return nil -} - -// readEvents reads from kqueue and converts the received kevents into -// Event values that it sends down the Events channel. -func (w *Watcher) readEvents() { - eventBuffer := make([]syscall.Kevent_t, 10) - - for { - // See if there is a message on the "done" channel - select { - case <-w.done: - err := syscall.Close(w.kq) - if err != nil { - w.Errors <- err - } - close(w.Events) - close(w.Errors) - return - default: - } - - // Get new events - kevents, err := read(w.kq, eventBuffer, &keventWaitTime) - // EINTR is okay, the syscall was interrupted before timeout expired. - if err != nil && err != syscall.EINTR { - w.Errors <- err - continue - } - - // Flush the events we received to the Events channel - for len(kevents) > 0 { - kevent := &kevents[0] - watchfd := int(kevent.Ident) - mask := uint32(kevent.Fflags) - w.mu.Lock() - path := w.paths[watchfd] - w.mu.Unlock() - event := newEvent(path.name, mask) - - if path.isDir && !(event.Op&Remove == Remove) { - // Double check to make sure the directory exists. This can happen when - // we do a rm -fr on a recursively watched folders and we receive a - // modification event first but the folder has been deleted and later - // receive the delete event - if _, err := os.Lstat(event.Name); os.IsNotExist(err) { - // mark is as delete event - event.Op |= Remove - } - } - - if event.Op&Rename == Rename || event.Op&Remove == Remove { - w.Remove(event.Name) - w.mu.Lock() - delete(w.fileExists, event.Name) - w.mu.Unlock() - } - - if path.isDir && event.Op&Write == Write && !(event.Op&Remove == Remove) { - w.sendDirectoryChangeEvents(event.Name) - } else { - // Send the event on the Events channel - w.Events <- event - } - - if event.Op&Remove == Remove { - // Look for a file that may have overwritten this. - // For example, mv f1 f2 will delete f2, then create f2. - fileDir, _ := filepath.Split(event.Name) - fileDir = filepath.Clean(fileDir) - w.mu.Lock() - _, found := w.watches[fileDir] - w.mu.Unlock() - if found { - // make sure the directory exists before we watch for changes. When we - // do a recursive watch and perform rm -fr, the parent directory might - // have gone missing, ignore the missing directory and let the - // upcoming delete event remove the watch from the parent directory. - if _, err := os.Lstat(fileDir); os.IsExist(err) { - w.sendDirectoryChangeEvents(fileDir) - // FIXME: should this be for events on files or just isDir? - } - } - } - - // Move to next event - kevents = kevents[1:] - } - } -} - -// newEvent returns an platform-independent Event based on kqueue Fflags. -func newEvent(name string, mask uint32) Event { - e := Event{Name: name} - if mask&syscall.NOTE_DELETE == syscall.NOTE_DELETE { - e.Op |= Remove - } - if mask&syscall.NOTE_WRITE == syscall.NOTE_WRITE { - e.Op |= Write - } - if mask&syscall.NOTE_RENAME == syscall.NOTE_RENAME { - e.Op |= Rename - } - if mask&syscall.NOTE_ATTRIB == syscall.NOTE_ATTRIB { - e.Op |= Chmod - } - return e -} - -func newCreateEvent(name string) Event { - return Event{Name: name, Op: Create} -} - -// watchDirectoryFiles to mimic inotify when adding a watch on a directory -func (w *Watcher) watchDirectoryFiles(dirPath string) error { - // Get all files - files, err := ioutil.ReadDir(dirPath) - if err != nil { - return err - } - - for _, fileInfo := range files { - filePath := filepath.Join(dirPath, fileInfo.Name()) - if err := w.internalWatch(filePath, fileInfo); err != nil { - return err - } - - w.mu.Lock() - w.fileExists[filePath] = true - w.mu.Unlock() - } - - return nil -} - -// sendDirectoryEvents searches the directory for newly created files -// and sends them over the event channel. This functionality is to have -// the BSD version of fsnotify match Linux inotify which provides a -// create event for files created in a watched directory. -func (w *Watcher) sendDirectoryChangeEvents(dirPath string) { - // Get all files - files, err := ioutil.ReadDir(dirPath) - if err != nil { - w.Errors <- err - } - - // Search for new files - for _, fileInfo := range files { - filePath := filepath.Join(dirPath, fileInfo.Name()) - w.mu.Lock() - _, doesExist := w.fileExists[filePath] - w.mu.Unlock() - if !doesExist { - // Send create event - w.Events <- newCreateEvent(filePath) - } - - // like watchDirectoryFiles (but without doing another ReadDir) - if err := w.internalWatch(filePath, fileInfo); err != nil { - return - } - - w.mu.Lock() - w.fileExists[filePath] = true - w.mu.Unlock() - } -} - -func (w *Watcher) internalWatch(name string, fileInfo os.FileInfo) error { - if fileInfo.IsDir() { - // mimic Linux providing delete events for subdirectories - // but preserve the flags used if currently watching subdirectory - w.mu.Lock() - flags := w.dirFlags[name] - w.mu.Unlock() - - flags |= syscall.NOTE_DELETE - return w.addWatch(name, flags) - } - - // watch file to mimic Linux inotify - return w.addWatch(name, noteAllEvents) -} - -// kqueue creates a new kernel event queue and returns a descriptor. -func kqueue() (kq int, err error) { - kq, err = syscall.Kqueue() - if kq == -1 { - return kq, err - } - return kq, nil -} - -// register events with the queue -func register(kq int, fds []int, flags int, fflags uint32) error { - changes := make([]syscall.Kevent_t, len(fds)) - - for i, fd := range fds { - // SetKevent converts int to the platform-specific types: - syscall.SetKevent(&changes[i], fd, syscall.EVFILT_VNODE, flags) - changes[i].Fflags = fflags - } - - // register the events - success, err := syscall.Kevent(kq, changes, nil, nil) - if success == -1 { - return err - } - return nil -} - -// read retrieves pending events, or waits until an event occurs. -// A timeout of nil blocks indefinitely, while 0 polls the queue. -func read(kq int, events []syscall.Kevent_t, timeout *syscall.Timespec) ([]syscall.Kevent_t, error) { - n, err := syscall.Kevent(kq, nil, events, timeout) - if err != nil { - return nil, err - } - return events[0:n], nil -} - -// durationToTimespec prepares a timeout value -func durationToTimespec(d time.Duration) syscall.Timespec { - return syscall.NsecToTimespec(d.Nanoseconds()) -} diff --git a/vendor/github.com/go-fsnotify/fsnotify/open_mode_bsd.go b/vendor/github.com/go-fsnotify/fsnotify/open_mode_bsd.go deleted file mode 100644 index c57ccb4..0000000 --- a/vendor/github.com/go-fsnotify/fsnotify/open_mode_bsd.go +++ /dev/null @@ -1,11 +0,0 @@ -// Copyright 2013 The Go Authors. All rights reserved. -// Use of this source code is governed by a BSD-style -// license that can be found in the LICENSE file. - -// +build freebsd openbsd netbsd dragonfly - -package fsnotify - -import "syscall" - -const openMode = syscall.O_NONBLOCK | syscall.O_RDONLY diff --git a/vendor/github.com/go-fsnotify/fsnotify/open_mode_darwin.go b/vendor/github.com/go-fsnotify/fsnotify/open_mode_darwin.go deleted file mode 100644 index 174b2c3..0000000 --- a/vendor/github.com/go-fsnotify/fsnotify/open_mode_darwin.go +++ /dev/null @@ -1,12 +0,0 @@ -// Copyright 2013 The Go Authors. All rights reserved. -// Use of this source code is governed by a BSD-style -// license that can be found in the LICENSE file. - -// +build darwin - -package fsnotify - -import "syscall" - -// note: this constant is not defined on BSD -const openMode = syscall.O_EVTONLY diff --git a/vendor/github.com/go-fsnotify/fsnotify/windows.go b/vendor/github.com/go-fsnotify/fsnotify/windows.go deleted file mode 100644 index 8115852..0000000 --- a/vendor/github.com/go-fsnotify/fsnotify/windows.go +++ /dev/null @@ -1,561 +0,0 @@ -// Copyright 2011 The Go Authors. All rights reserved. -// Use of this source code is governed by a BSD-style -// license that can be found in the LICENSE file. - -// +build windows - -package fsnotify - -import ( - "errors" - "fmt" - "os" - "path/filepath" - "runtime" - "sync" - "syscall" - "unsafe" -) - -// Watcher watches a set of files, delivering events to a channel. -type Watcher struct { - Events chan Event - Errors chan error - isClosed bool // Set to true when Close() is first called - mu sync.Mutex // Map access - port syscall.Handle // Handle to completion port - watches watchMap // Map of watches (key: i-number) - input chan *input // Inputs to the reader are sent on this channel - quit chan chan<- error -} - -// NewWatcher establishes a new watcher with the underlying OS and begins waiting for events. -func NewWatcher() (*Watcher, error) { - port, e := syscall.CreateIoCompletionPort(syscall.InvalidHandle, 0, 0, 0) - if e != nil { - return nil, os.NewSyscallError("CreateIoCompletionPort", e) - } - w := &Watcher{ - port: port, - watches: make(watchMap), - input: make(chan *input, 1), - Events: make(chan Event, 50), - Errors: make(chan error), - quit: make(chan chan<- error, 1), - } - go w.readEvents() - return w, nil -} - -// Close removes all watches and closes the events channel. -func (w *Watcher) Close() error { - if w.isClosed { - return nil - } - w.isClosed = true - - // Send "quit" message to the reader goroutine - ch := make(chan error) - w.quit <- ch - if err := w.wakeupReader(); err != nil { - return err - } - return <-ch -} - -// Add starts watching the named file or directory (non-recursively). -func (w *Watcher) Add(name string) error { - if w.isClosed { - return errors.New("watcher already closed") - } - in := &input{ - op: opAddWatch, - path: filepath.Clean(name), - flags: sys_FS_ALL_EVENTS, - reply: make(chan error), - } - w.input <- in - if err := w.wakeupReader(); err != nil { - return err - } - return <-in.reply -} - -// Remove stops watching the the named file or directory (non-recursively). -func (w *Watcher) Remove(name string) error { - in := &input{ - op: opRemoveWatch, - path: filepath.Clean(name), - reply: make(chan error), - } - w.input <- in - if err := w.wakeupReader(); err != nil { - return err - } - return <-in.reply -} - -const ( - // Options for AddWatch - sys_FS_ONESHOT = 0x80000000 - sys_FS_ONLYDIR = 0x1000000 - - // Events - sys_FS_ACCESS = 0x1 - sys_FS_ALL_EVENTS = 0xfff - sys_FS_ATTRIB = 0x4 - sys_FS_CLOSE = 0x18 - sys_FS_CREATE = 0x100 - sys_FS_DELETE = 0x200 - sys_FS_DELETE_SELF = 0x400 - sys_FS_MODIFY = 0x2 - sys_FS_MOVE = 0xc0 - sys_FS_MOVED_FROM = 0x40 - sys_FS_MOVED_TO = 0x80 - sys_FS_MOVE_SELF = 0x800 - - // Special events - sys_FS_IGNORED = 0x8000 - sys_FS_Q_OVERFLOW = 0x4000 -) - -func newEvent(name string, mask uint32) Event { - e := Event{Name: name} - if mask&sys_FS_CREATE == sys_FS_CREATE || mask&sys_FS_MOVED_TO == sys_FS_MOVED_TO { - e.Op |= Create - } - if mask&sys_FS_DELETE == sys_FS_DELETE || mask&sys_FS_DELETE_SELF == sys_FS_DELETE_SELF { - e.Op |= Remove - } - if mask&sys_FS_MODIFY == sys_FS_MODIFY { - e.Op |= Write - } - if mask&sys_FS_MOVE == sys_FS_MOVE || mask&sys_FS_MOVE_SELF == sys_FS_MOVE_SELF || mask&sys_FS_MOVED_FROM == sys_FS_MOVED_FROM { - e.Op |= Rename - } - if mask&sys_FS_ATTRIB == sys_FS_ATTRIB { - e.Op |= Chmod - } - return e -} - -const ( - opAddWatch = iota - opRemoveWatch -) - -const ( - provisional uint64 = 1 << (32 + iota) -) - -type input struct { - op int - path string - flags uint32 - reply chan error -} - -type inode struct { - handle syscall.Handle - volume uint32 - index uint64 -} - -type watch struct { - ov syscall.Overlapped - ino *inode // i-number - path string // Directory path - mask uint64 // Directory itself is being watched with these notify flags - names map[string]uint64 // Map of names being watched and their notify flags - rename string // Remembers the old name while renaming a file - buf [4096]byte -} - -type indexMap map[uint64]*watch -type watchMap map[uint32]indexMap - -func (w *Watcher) wakeupReader() error { - e := syscall.PostQueuedCompletionStatus(w.port, 0, 0, nil) - if e != nil { - return os.NewSyscallError("PostQueuedCompletionStatus", e) - } - return nil -} - -func getDir(pathname string) (dir string, err error) { - attr, e := syscall.GetFileAttributes(syscall.StringToUTF16Ptr(pathname)) - if e != nil { - return "", os.NewSyscallError("GetFileAttributes", e) - } - if attr&syscall.FILE_ATTRIBUTE_DIRECTORY != 0 { - dir = pathname - } else { - dir, _ = filepath.Split(pathname) - dir = filepath.Clean(dir) - } - return -} - -func getIno(path string) (ino *inode, err error) { - h, e := syscall.CreateFile(syscall.StringToUTF16Ptr(path), - syscall.FILE_LIST_DIRECTORY, - syscall.FILE_SHARE_READ|syscall.FILE_SHARE_WRITE|syscall.FILE_SHARE_DELETE, - nil, syscall.OPEN_EXISTING, - syscall.FILE_FLAG_BACKUP_SEMANTICS|syscall.FILE_FLAG_OVERLAPPED, 0) - if e != nil { - return nil, os.NewSyscallError("CreateFile", e) - } - var fi syscall.ByHandleFileInformation - if e = syscall.GetFileInformationByHandle(h, &fi); e != nil { - syscall.CloseHandle(h) - return nil, os.NewSyscallError("GetFileInformationByHandle", e) - } - ino = &inode{ - handle: h, - volume: fi.VolumeSerialNumber, - index: uint64(fi.FileIndexHigh)<<32 | uint64(fi.FileIndexLow), - } - return ino, nil -} - -// Must run within the I/O thread. -func (m watchMap) get(ino *inode) *watch { - if i := m[ino.volume]; i != nil { - return i[ino.index] - } - return nil -} - -// Must run within the I/O thread. -func (m watchMap) set(ino *inode, watch *watch) { - i := m[ino.volume] - if i == nil { - i = make(indexMap) - m[ino.volume] = i - } - i[ino.index] = watch -} - -// Must run within the I/O thread. -func (w *Watcher) addWatch(pathname string, flags uint64) error { - dir, err := getDir(pathname) - if err != nil { - return err - } - if flags&sys_FS_ONLYDIR != 0 && pathname != dir { - return nil - } - ino, err := getIno(dir) - if err != nil { - return err - } - w.mu.Lock() - watchEntry := w.watches.get(ino) - w.mu.Unlock() - if watchEntry == nil { - if _, e := syscall.CreateIoCompletionPort(ino.handle, w.port, 0, 0); e != nil { - syscall.CloseHandle(ino.handle) - return os.NewSyscallError("CreateIoCompletionPort", e) - } - watchEntry = &watch{ - ino: ino, - path: dir, - names: make(map[string]uint64), - } - w.mu.Lock() - w.watches.set(ino, watchEntry) - w.mu.Unlock() - flags |= provisional - } else { - syscall.CloseHandle(ino.handle) - } - if pathname == dir { - watchEntry.mask |= flags - } else { - watchEntry.names[filepath.Base(pathname)] |= flags - } - if err = w.startRead(watchEntry); err != nil { - return err - } - if pathname == dir { - watchEntry.mask &= ^provisional - } else { - watchEntry.names[filepath.Base(pathname)] &= ^provisional - } - return nil -} - -// Must run within the I/O thread. -func (w *Watcher) remWatch(pathname string) error { - dir, err := getDir(pathname) - if err != nil { - return err - } - ino, err := getIno(dir) - if err != nil { - return err - } - w.mu.Lock() - watch := w.watches.get(ino) - w.mu.Unlock() - if watch == nil { - return fmt.Errorf("can't remove non-existent watch for: %s", pathname) - } - if pathname == dir { - w.sendEvent(watch.path, watch.mask&sys_FS_IGNORED) - watch.mask = 0 - } else { - name := filepath.Base(pathname) - w.sendEvent(watch.path+"\\"+name, watch.names[name]&sys_FS_IGNORED) - delete(watch.names, name) - } - return w.startRead(watch) -} - -// Must run within the I/O thread. -func (w *Watcher) deleteWatch(watch *watch) { - for name, mask := range watch.names { - if mask&provisional == 0 { - w.sendEvent(watch.path+"\\"+name, mask&sys_FS_IGNORED) - } - delete(watch.names, name) - } - if watch.mask != 0 { - if watch.mask&provisional == 0 { - w.sendEvent(watch.path, watch.mask&sys_FS_IGNORED) - } - watch.mask = 0 - } -} - -// Must run within the I/O thread. -func (w *Watcher) startRead(watch *watch) error { - if e := syscall.CancelIo(watch.ino.handle); e != nil { - w.Errors <- os.NewSyscallError("CancelIo", e) - w.deleteWatch(watch) - } - mask := toWindowsFlags(watch.mask) - for _, m := range watch.names { - mask |= toWindowsFlags(m) - } - if mask == 0 { - if e := syscall.CloseHandle(watch.ino.handle); e != nil { - w.Errors <- os.NewSyscallError("CloseHandle", e) - } - w.mu.Lock() - delete(w.watches[watch.ino.volume], watch.ino.index) - w.mu.Unlock() - return nil - } - e := syscall.ReadDirectoryChanges(watch.ino.handle, &watch.buf[0], - uint32(unsafe.Sizeof(watch.buf)), false, mask, nil, &watch.ov, 0) - if e != nil { - err := os.NewSyscallError("ReadDirectoryChanges", e) - if e == syscall.ERROR_ACCESS_DENIED && watch.mask&provisional == 0 { - // Watched directory was probably removed - if w.sendEvent(watch.path, watch.mask&sys_FS_DELETE_SELF) { - if watch.mask&sys_FS_ONESHOT != 0 { - watch.mask = 0 - } - } - err = nil - } - w.deleteWatch(watch) - w.startRead(watch) - return err - } - return nil -} - -// readEvents reads from the I/O completion port, converts the -// received events into Event objects and sends them via the Events channel. -// Entry point to the I/O thread. -func (w *Watcher) readEvents() { - var ( - n, key uint32 - ov *syscall.Overlapped - ) - runtime.LockOSThread() - - for { - e := syscall.GetQueuedCompletionStatus(w.port, &n, &key, &ov, syscall.INFINITE) - watch := (*watch)(unsafe.Pointer(ov)) - - if watch == nil { - select { - case ch := <-w.quit: - w.mu.Lock() - var indexes []indexMap - for _, index := range w.watches { - indexes = append(indexes, index) - } - w.mu.Unlock() - for _, index := range indexes { - for _, watch := range index { - w.deleteWatch(watch) - w.startRead(watch) - } - } - var err error - if e := syscall.CloseHandle(w.port); e != nil { - err = os.NewSyscallError("CloseHandle", e) - } - close(w.Events) - close(w.Errors) - ch <- err - return - case in := <-w.input: - switch in.op { - case opAddWatch: - in.reply <- w.addWatch(in.path, uint64(in.flags)) - case opRemoveWatch: - in.reply <- w.remWatch(in.path) - } - default: - } - continue - } - - switch e { - case syscall.ERROR_MORE_DATA: - if watch == nil { - w.Errors <- errors.New("ERROR_MORE_DATA has unexpectedly null lpOverlapped buffer") - } else { - // The i/o succeeded but the buffer is full. - // In theory we should be building up a full packet. - // In practice we can get away with just carrying on. - n = uint32(unsafe.Sizeof(watch.buf)) - } - case syscall.ERROR_ACCESS_DENIED: - // Watched directory was probably removed - w.sendEvent(watch.path, watch.mask&sys_FS_DELETE_SELF) - w.deleteWatch(watch) - w.startRead(watch) - continue - case syscall.ERROR_OPERATION_ABORTED: - // CancelIo was called on this handle - continue - default: - w.Errors <- os.NewSyscallError("GetQueuedCompletionPort", e) - continue - case nil: - } - - var offset uint32 - for { - if n == 0 { - w.Events <- newEvent("", sys_FS_Q_OVERFLOW) - w.Errors <- errors.New("short read in readEvents()") - break - } - - // Point "raw" to the event in the buffer - raw := (*syscall.FileNotifyInformation)(unsafe.Pointer(&watch.buf[offset])) - buf := (*[syscall.MAX_PATH]uint16)(unsafe.Pointer(&raw.FileName)) - name := syscall.UTF16ToString(buf[:raw.FileNameLength/2]) - fullname := watch.path + "\\" + name - - var mask uint64 - switch raw.Action { - case syscall.FILE_ACTION_REMOVED: - mask = sys_FS_DELETE_SELF - case syscall.FILE_ACTION_MODIFIED: - mask = sys_FS_MODIFY - case syscall.FILE_ACTION_RENAMED_OLD_NAME: - watch.rename = name - case syscall.FILE_ACTION_RENAMED_NEW_NAME: - if watch.names[watch.rename] != 0 { - watch.names[name] |= watch.names[watch.rename] - delete(watch.names, watch.rename) - mask = sys_FS_MOVE_SELF - } - } - - sendNameEvent := func() { - if w.sendEvent(fullname, watch.names[name]&mask) { - if watch.names[name]&sys_FS_ONESHOT != 0 { - delete(watch.names, name) - } - } - } - if raw.Action != syscall.FILE_ACTION_RENAMED_NEW_NAME { - sendNameEvent() - } - if raw.Action == syscall.FILE_ACTION_REMOVED { - w.sendEvent(fullname, watch.names[name]&sys_FS_IGNORED) - delete(watch.names, name) - } - if w.sendEvent(fullname, watch.mask&toFSnotifyFlags(raw.Action)) { - if watch.mask&sys_FS_ONESHOT != 0 { - watch.mask = 0 - } - } - if raw.Action == syscall.FILE_ACTION_RENAMED_NEW_NAME { - fullname = watch.path + "\\" + watch.rename - sendNameEvent() - } - - // Move to the next event in the buffer - if raw.NextEntryOffset == 0 { - break - } - offset += raw.NextEntryOffset - - // Error! - if offset >= n { - w.Errors <- errors.New("Windows system assumed buffer larger than it is, events have likely been missed.") - break - } - } - - if err := w.startRead(watch); err != nil { - w.Errors <- err - } - } -} - -func (w *Watcher) sendEvent(name string, mask uint64) bool { - if mask == 0 { - return false - } - event := newEvent(name, uint32(mask)) - select { - case ch := <-w.quit: - w.quit <- ch - case w.Events <- event: - } - return true -} - -func toWindowsFlags(mask uint64) uint32 { - var m uint32 - if mask&sys_FS_ACCESS != 0 { - m |= syscall.FILE_NOTIFY_CHANGE_LAST_ACCESS - } - if mask&sys_FS_MODIFY != 0 { - m |= syscall.FILE_NOTIFY_CHANGE_LAST_WRITE - } - if mask&sys_FS_ATTRIB != 0 { - m |= syscall.FILE_NOTIFY_CHANGE_ATTRIBUTES - } - if mask&(sys_FS_MOVE|sys_FS_CREATE|sys_FS_DELETE) != 0 { - m |= syscall.FILE_NOTIFY_CHANGE_FILE_NAME | syscall.FILE_NOTIFY_CHANGE_DIR_NAME - } - return m -} - -func toFSnotifyFlags(action uint32) uint64 { - switch action { - case syscall.FILE_ACTION_ADDED: - return sys_FS_CREATE - case syscall.FILE_ACTION_REMOVED: - return sys_FS_DELETE - case syscall.FILE_ACTION_MODIFIED: - return sys_FS_MODIFY - case syscall.FILE_ACTION_RENAMED_OLD_NAME: - return sys_FS_MOVED_FROM - case syscall.FILE_ACTION_RENAMED_NEW_NAME: - return sys_FS_MOVED_TO - } - return 0 -} diff --git a/vendor/github.com/gorilla/context/LICENSE b/vendor/github.com/gorilla/context/LICENSE deleted file mode 100644 index 0e5fb87..0000000 --- a/vendor/github.com/gorilla/context/LICENSE +++ /dev/null @@ -1,27 +0,0 @@ -Copyright (c) 2012 Rodrigo Moraes. All rights reserved. - -Redistribution and use in source and binary forms, with or without -modification, are permitted provided that the following conditions are -met: - - * Redistributions of source code must retain the above copyright -notice, this list of conditions and the following disclaimer. - * Redistributions in binary form must reproduce the above -copyright notice, this list of conditions and the following disclaimer -in the documentation and/or other materials provided with the -distribution. - * Neither the name of Google Inc. nor the names of its -contributors may be used to endorse or promote products derived from -this software without specific prior written permission. - -THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS -"AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT -LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR -A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT -OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, -SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT -LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, -DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY -THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE -OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. diff --git a/vendor/github.com/gorilla/context/README.md b/vendor/github.com/gorilla/context/README.md deleted file mode 100644 index c60a31b..0000000 --- a/vendor/github.com/gorilla/context/README.md +++ /dev/null @@ -1,7 +0,0 @@ -context -======= -[![Build Status](https://travis-ci.org/gorilla/context.png?branch=master)](https://travis-ci.org/gorilla/context) - -gorilla/context is a general purpose registry for global request variables. - -Read the full documentation here: http://www.gorillatoolkit.org/pkg/context diff --git a/vendor/github.com/gorilla/context/context.go b/vendor/github.com/gorilla/context/context.go deleted file mode 100644 index 81cb128..0000000 --- a/vendor/github.com/gorilla/context/context.go +++ /dev/null @@ -1,143 +0,0 @@ -// Copyright 2012 The Gorilla Authors. All rights reserved. -// Use of this source code is governed by a BSD-style -// license that can be found in the LICENSE file. - -package context - -import ( - "net/http" - "sync" - "time" -) - -var ( - mutex sync.RWMutex - data = make(map[*http.Request]map[interface{}]interface{}) - datat = make(map[*http.Request]int64) -) - -// Set stores a value for a given key in a given request. -func Set(r *http.Request, key, val interface{}) { - mutex.Lock() - if data[r] == nil { - data[r] = make(map[interface{}]interface{}) - datat[r] = time.Now().Unix() - } - data[r][key] = val - mutex.Unlock() -} - -// Get returns a value stored for a given key in a given request. -func Get(r *http.Request, key interface{}) interface{} { - mutex.RLock() - if ctx := data[r]; ctx != nil { - value := ctx[key] - mutex.RUnlock() - return value - } - mutex.RUnlock() - return nil -} - -// GetOk returns stored value and presence state like multi-value return of map access. -func GetOk(r *http.Request, key interface{}) (interface{}, bool) { - mutex.RLock() - if _, ok := data[r]; ok { - value, ok := data[r][key] - mutex.RUnlock() - return value, ok - } - mutex.RUnlock() - return nil, false -} - -// GetAll returns all stored values for the request as a map. Nil is returned for invalid requests. -func GetAll(r *http.Request) map[interface{}]interface{} { - mutex.RLock() - if context, ok := data[r]; ok { - result := make(map[interface{}]interface{}, len(context)) - for k, v := range context { - result[k] = v - } - mutex.RUnlock() - return result - } - mutex.RUnlock() - return nil -} - -// GetAllOk returns all stored values for the request as a map and a boolean value that indicates if -// the request was registered. -func GetAllOk(r *http.Request) (map[interface{}]interface{}, bool) { - mutex.RLock() - context, ok := data[r] - result := make(map[interface{}]interface{}, len(context)) - for k, v := range context { - result[k] = v - } - mutex.RUnlock() - return result, ok -} - -// Delete removes a value stored for a given key in a given request. -func Delete(r *http.Request, key interface{}) { - mutex.Lock() - if data[r] != nil { - delete(data[r], key) - } - mutex.Unlock() -} - -// Clear removes all values stored for a given request. -// -// This is usually called by a handler wrapper to clean up request -// variables at the end of a request lifetime. See ClearHandler(). -func Clear(r *http.Request) { - mutex.Lock() - clear(r) - mutex.Unlock() -} - -// clear is Clear without the lock. -func clear(r *http.Request) { - delete(data, r) - delete(datat, r) -} - -// Purge removes request data stored for longer than maxAge, in seconds. -// It returns the amount of requests removed. -// -// If maxAge <= 0, all request data is removed. -// -// This is only used for sanity check: in case context cleaning was not -// properly set some request data can be kept forever, consuming an increasing -// amount of memory. In case this is detected, Purge() must be called -// periodically until the problem is fixed. -func Purge(maxAge int) int { - mutex.Lock() - count := 0 - if maxAge <= 0 { - count = len(data) - data = make(map[*http.Request]map[interface{}]interface{}) - datat = make(map[*http.Request]int64) - } else { - min := time.Now().Unix() - int64(maxAge) - for r := range data { - if datat[r] < min { - clear(r) - count++ - } - } - } - mutex.Unlock() - return count -} - -// ClearHandler wraps an http.Handler and clears request values at the end -// of a request lifetime. -func ClearHandler(h http.Handler) http.Handler { - return http.HandlerFunc(func(w http.ResponseWriter, r *http.Request) { - defer Clear(r) - h.ServeHTTP(w, r) - }) -} diff --git a/vendor/github.com/gorilla/context/doc.go b/vendor/github.com/gorilla/context/doc.go deleted file mode 100644 index 73c7400..0000000 --- a/vendor/github.com/gorilla/context/doc.go +++ /dev/null @@ -1,82 +0,0 @@ -// Copyright 2012 The Gorilla Authors. All rights reserved. -// Use of this source code is governed by a BSD-style -// license that can be found in the LICENSE file. - -/* -Package context stores values shared during a request lifetime. - -For example, a router can set variables extracted from the URL and later -application handlers can access those values, or it can be used to store -sessions values to be saved at the end of a request. There are several -others common uses. - -The idea was posted by Brad Fitzpatrick to the go-nuts mailing list: - - http://groups.google.com/group/golang-nuts/msg/e2d679d303aa5d53 - -Here's the basic usage: first define the keys that you will need. The key -type is interface{} so a key can be of any type that supports equality. -Here we define a key using a custom int type to avoid name collisions: - - package foo - - import ( - "github.com/gorilla/context" - ) - - type key int - - const MyKey key = 0 - -Then set a variable. Variables are bound to an http.Request object, so you -need a request instance to set a value: - - context.Set(r, MyKey, "bar") - -The application can later access the variable using the same key you provided: - - func MyHandler(w http.ResponseWriter, r *http.Request) { - // val is "bar". - val := context.Get(r, foo.MyKey) - - // returns ("bar", true) - val, ok := context.GetOk(r, foo.MyKey) - // ... - } - -And that's all about the basic usage. We discuss some other ideas below. - -Any type can be stored in the context. To enforce a given type, make the key -private and wrap Get() and Set() to accept and return values of a specific -type: - - type key int - - const mykey key = 0 - - // GetMyKey returns a value for this package from the request values. - func GetMyKey(r *http.Request) SomeType { - if rv := context.Get(r, mykey); rv != nil { - return rv.(SomeType) - } - return nil - } - - // SetMyKey sets a value for this package in the request values. - func SetMyKey(r *http.Request, val SomeType) { - context.Set(r, mykey, val) - } - -Variables must be cleared at the end of a request, to remove all values -that were stored. This can be done in an http.Handler, after a request was -served. Just call Clear() passing the request: - - context.Clear(r) - -...or use ClearHandler(), which conveniently wraps an http.Handler to clear -variables at the end of a request lifetime. - -The Routers from the packages gorilla/mux and gorilla/pat call Clear() -so if you are using either of them you don't need to clear the context manually. -*/ -package context diff --git a/vendor/github.com/gorilla/securecookie/LICENSE b/vendor/github.com/gorilla/securecookie/LICENSE deleted file mode 100644 index 0e5fb87..0000000 --- a/vendor/github.com/gorilla/securecookie/LICENSE +++ /dev/null @@ -1,27 +0,0 @@ -Copyright (c) 2012 Rodrigo Moraes. All rights reserved. - -Redistribution and use in source and binary forms, with or without -modification, are permitted provided that the following conditions are -met: - - * Redistributions of source code must retain the above copyright -notice, this list of conditions and the following disclaimer. - * Redistributions in binary form must reproduce the above -copyright notice, this list of conditions and the following disclaimer -in the documentation and/or other materials provided with the -distribution. - * Neither the name of Google Inc. nor the names of its -contributors may be used to endorse or promote products derived from -this software without specific prior written permission. - -THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS -"AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT -LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR -A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT -OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, -SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT -LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, -DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY -THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE -OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. diff --git a/vendor/github.com/gorilla/securecookie/README.md b/vendor/github.com/gorilla/securecookie/README.md deleted file mode 100644 index 2f0d5d4..0000000 --- a/vendor/github.com/gorilla/securecookie/README.md +++ /dev/null @@ -1,3 +0,0 @@ -securecookie -============ -[![Build Status](https://travis-ci.org/gorilla/securecookie.png?branch=master)](https://travis-ci.org/gorilla/securecookie) diff --git a/vendor/github.com/gorilla/securecookie/doc.go b/vendor/github.com/gorilla/securecookie/doc.go deleted file mode 100644 index e80e3ae..0000000 --- a/vendor/github.com/gorilla/securecookie/doc.go +++ /dev/null @@ -1,61 +0,0 @@ -// Copyright 2012 The Gorilla Authors. All rights reserved. -// Use of this source code is governed by a BSD-style -// license that can be found in the LICENSE file. - -/* -Package gorilla/securecookie encodes and decodes authenticated and optionally -encrypted cookie values. - -Secure cookies can't be forged, because their values are validated using HMAC. -When encrypted, the content is also inaccessible to malicious eyes. - -To use it, first create a new SecureCookie instance: - - var hashKey = []byte("very-secret") - var blockKey = []byte("a-lot-secret") - var s = securecookie.New(hashKey, blockKey) - -The hashKey is required, used to authenticate the cookie value using HMAC. -It is recommended to use a key with 32 or 64 bytes. - -The blockKey is optional, used to encrypt the cookie value -- set it to nil -to not use encryption. If set, the length must correspond to the block size -of the encryption algorithm. For AES, used by default, valid lengths are -16, 24, or 32 bytes to select AES-128, AES-192, or AES-256. - -Strong keys can be created using the convenience function GenerateRandomKey(). - -Once a SecureCookie instance is set, use it to encode a cookie value: - - func SetCookieHandler(w http.ResponseWriter, r *http.Request) { - value := map[string]string{ - "foo": "bar", - } - if encoded, err := s.Encode("cookie-name", value); err == nil { - cookie := &http.Cookie{ - Name: "cookie-name", - Value: encoded, - Path: "/", - } - http.SetCookie(w, cookie) - } - } - -Later, use the same SecureCookie instance to decode and validate a cookie -value: - - func ReadCookieHandler(w http.ResponseWriter, r *http.Request) { - if cookie, err := r.Cookie("cookie-name"); err == nil { - value := make(map[string]string) - if err = s2.Decode("cookie-name", cookie.Value, &value); err == nil { - fmt.Fprintf(w, "The value of foo is %q", value["foo"]) - } - } - } - -We stored a map[string]string, but secure cookies can hold any value that -can be encoded using encoding/gob. To store custom types, they must be -registered first using gob.Register(). For basic types this is not needed; -it works out of the box. -*/ -package securecookie diff --git a/vendor/github.com/gorilla/securecookie/securecookie.go b/vendor/github.com/gorilla/securecookie/securecookie.go deleted file mode 100644 index 1b7acf8..0000000 --- a/vendor/github.com/gorilla/securecookie/securecookie.go +++ /dev/null @@ -1,429 +0,0 @@ -// Copyright 2012 The Gorilla Authors. All rights reserved. -// Use of this source code is governed by a BSD-style -// license that can be found in the LICENSE file. - -package securecookie - -import ( - "bytes" - "crypto/aes" - "crypto/cipher" - "crypto/hmac" - "crypto/rand" - "crypto/sha256" - "crypto/subtle" - "encoding/base64" - "encoding/gob" - "errors" - "fmt" - "hash" - "io" - "strconv" - "time" -) - -var ( - errNoCodecs = errors.New("securecookie: no codecs provided") - errHashKeyNotSet = errors.New("securecookie: hash key is not set") - - ErrMacInvalid = errors.New("securecookie: the value is not valid") -) - -// Codec defines an interface to encode and decode cookie values. -type Codec interface { - Encode(name string, value interface{}) (string, error) - Decode(name, value string, dst interface{}) error -} - -// New returns a new SecureCookie. -// -// hashKey is required, used to authenticate values using HMAC. Create it using -// GenerateRandomKey(). It is recommended to use a key with 32 or 64 bytes. -// -// blockKey is optional, used to encrypt values. Create it using -// GenerateRandomKey(). The key length must correspond to the block size -// of the encryption algorithm. For AES, used by default, valid lengths are -// 16, 24, or 32 bytes to select AES-128, AES-192, or AES-256. -func New(hashKey, blockKey []byte) *SecureCookie { - s := &SecureCookie{ - hashKey: hashKey, - blockKey: blockKey, - hashFunc: sha256.New, - maxAge: 86400 * 30, - maxLength: 4096, - } - if hashKey == nil { - s.err = errHashKeyNotSet - } - if blockKey != nil { - s.BlockFunc(aes.NewCipher) - } - return s -} - -// SecureCookie encodes and decodes authenticated and optionally encrypted -// cookie values. -type SecureCookie struct { - hashKey []byte - hashFunc func() hash.Hash - blockKey []byte - block cipher.Block - maxLength int - maxAge int64 - minAge int64 - err error - // For testing purposes, the function that returns the current timestamp. - // If not set, it will use time.Now().UTC().Unix(). - timeFunc func() int64 -} - -// MaxLength restricts the maximum length, in bytes, for the cookie value. -// -// Default is 4096, which is the maximum value accepted by Internet Explorer. -func (s *SecureCookie) MaxLength(value int) *SecureCookie { - s.maxLength = value - return s -} - -// MaxAge restricts the maximum age, in seconds, for the cookie value. -// -// Default is 86400 * 30. Set it to 0 for no restriction. -func (s *SecureCookie) MaxAge(value int) *SecureCookie { - s.maxAge = int64(value) - return s -} - -// MinAge restricts the minimum age, in seconds, for the cookie value. -// -// Default is 0 (no restriction). -func (s *SecureCookie) MinAge(value int) *SecureCookie { - s.minAge = int64(value) - return s -} - -// HashFunc sets the hash function used to create HMAC. -// -// Default is crypto/sha256.New. -func (s *SecureCookie) HashFunc(f func() hash.Hash) *SecureCookie { - s.hashFunc = f - return s -} - -// BlockFunc sets the encryption function used to create a cipher.Block. -// -// Default is crypto/aes.New. -func (s *SecureCookie) BlockFunc(f func([]byte) (cipher.Block, error)) *SecureCookie { - if s.blockKey == nil { - s.err = errors.New("securecookie: block key is not set") - } else if block, err := f(s.blockKey); err == nil { - s.block = block - } else { - s.err = err - } - return s -} - -// Encode encodes a cookie value. -// -// It serializes, optionally encrypts, signs with a message authentication code, and -// finally encodes the value. -// -// The name argument is the cookie name. It is stored with the encoded value. -// The value argument is the value to be encoded. It can be any value that can -// be encoded using encoding/gob. To store special structures, they must be -// registered first using gob.Register(). -func (s *SecureCookie) Encode(name string, value interface{}) (string, error) { - if s.err != nil { - return "", s.err - } - if s.hashKey == nil { - s.err = errHashKeyNotSet - return "", s.err - } - var err error - var b []byte - // 1. Serialize. - if b, err = serialize(value); err != nil { - return "", err - } - // 2. Encrypt (optional). - if s.block != nil { - if b, err = encrypt(s.block, b); err != nil { - return "", err - } - } - b = encode(b) - // 3. Create MAC for "name|date|value". Extra pipe to be used later. - b = []byte(fmt.Sprintf("%s|%d|%s|", name, s.timestamp(), b)) - mac := createMac(hmac.New(s.hashFunc, s.hashKey), b[:len(b)-1]) - // Append mac, remove name. - b = append(b, mac...)[len(name)+1:] - // 4. Encode to base64. - b = encode(b) - // 5. Check length. - if s.maxLength != 0 && len(b) > s.maxLength { - return "", errors.New("securecookie: the value is too long") - } - // Done. - return string(b), nil -} - -// Decode decodes a cookie value. -// -// It decodes, verifies a message authentication code, optionally decrypts and -// finally deserializes the value. -// -// The name argument is the cookie name. It must be the same name used when -// it was stored. The value argument is the encoded cookie value. The dst -// argument is where the cookie will be decoded. It must be a pointer. -func (s *SecureCookie) Decode(name, value string, dst interface{}) error { - if s.err != nil { - return s.err - } - if s.hashKey == nil { - s.err = errHashKeyNotSet - return s.err - } - // 1. Check length. - if s.maxLength != 0 && len(value) > s.maxLength { - return errors.New("securecookie: the value is too long") - } - // 2. Decode from base64. - b, err := decode([]byte(value)) - if err != nil { - return err - } - // 3. Verify MAC. Value is "date|value|mac". - parts := bytes.SplitN(b, []byte("|"), 3) - if len(parts) != 3 { - return ErrMacInvalid - } - h := hmac.New(s.hashFunc, s.hashKey) - b = append([]byte(name+"|"), b[:len(b)-len(parts[2])-1]...) - if err = verifyMac(h, b, parts[2]); err != nil { - return err - } - // 4. Verify date ranges. - var t1 int64 - if t1, err = strconv.ParseInt(string(parts[0]), 10, 64); err != nil { - return errors.New("securecookie: invalid timestamp") - } - t2 := s.timestamp() - if s.minAge != 0 && t1 > t2-s.minAge { - return errors.New("securecookie: timestamp is too new") - } - if s.maxAge != 0 && t1 < t2-s.maxAge { - return errors.New("securecookie: expired timestamp") - } - // 5. Decrypt (optional). - b, err = decode(parts[1]) - if err != nil { - return err - } - if s.block != nil { - if b, err = decrypt(s.block, b); err != nil { - return err - } - } - // 6. Deserialize. - if err = deserialize(b, dst); err != nil { - return err - } - // Done. - return nil -} - -// timestamp returns the current timestamp, in seconds. -// -// For testing purposes, the function that generates the timestamp can be -// overridden. If not set, it will return time.Now().UTC().Unix(). -func (s *SecureCookie) timestamp() int64 { - if s.timeFunc == nil { - return time.Now().UTC().Unix() - } - return s.timeFunc() -} - -// Authentication ------------------------------------------------------------- - -// createMac creates a message authentication code (MAC). -func createMac(h hash.Hash, value []byte) []byte { - h.Write(value) - return h.Sum(nil) -} - -// verifyMac verifies that a message authentication code (MAC) is valid. -func verifyMac(h hash.Hash, value []byte, mac []byte) error { - mac2 := createMac(h, value) - if subtle.ConstantTimeCompare(mac, mac2) == 1 { - return nil - } - return ErrMacInvalid -} - -// Encryption ----------------------------------------------------------------- - -// encrypt encrypts a value using the given block in counter mode. -// -// A random initialization vector (http://goo.gl/zF67k) with the length of the -// block size is prepended to the resulting ciphertext. -func encrypt(block cipher.Block, value []byte) ([]byte, error) { - iv := GenerateRandomKey(block.BlockSize()) - if iv == nil { - return nil, errors.New("securecookie: failed to generate random iv") - } - // Encrypt it. - stream := cipher.NewCTR(block, iv) - stream.XORKeyStream(value, value) - // Return iv + ciphertext. - return append(iv, value...), nil -} - -// decrypt decrypts a value using the given block in counter mode. -// -// The value to be decrypted must be prepended by a initialization vector -// (http://goo.gl/zF67k) with the length of the block size. -func decrypt(block cipher.Block, value []byte) ([]byte, error) { - size := block.BlockSize() - if len(value) > size { - // Extract iv. - iv := value[:size] - // Extract ciphertext. - value = value[size:] - // Decrypt it. - stream := cipher.NewCTR(block, iv) - stream.XORKeyStream(value, value) - return value, nil - } - return nil, errors.New("securecookie: the value could not be decrypted") -} - -// Serialization -------------------------------------------------------------- - -// serialize encodes a value using gob. -func serialize(src interface{}) ([]byte, error) { - buf := new(bytes.Buffer) - enc := gob.NewEncoder(buf) - if err := enc.Encode(src); err != nil { - return nil, err - } - return buf.Bytes(), nil -} - -// deserialize decodes a value using gob. -func deserialize(src []byte, dst interface{}) error { - dec := gob.NewDecoder(bytes.NewBuffer(src)) - if err := dec.Decode(dst); err != nil { - return err - } - return nil -} - -// Encoding ------------------------------------------------------------------- - -// encode encodes a value using base64. -func encode(value []byte) []byte { - encoded := make([]byte, base64.URLEncoding.EncodedLen(len(value))) - base64.URLEncoding.Encode(encoded, value) - return encoded -} - -// decode decodes a cookie using base64. -func decode(value []byte) ([]byte, error) { - decoded := make([]byte, base64.URLEncoding.DecodedLen(len(value))) - b, err := base64.URLEncoding.Decode(decoded, value) - if err != nil { - return nil, err - } - return decoded[:b], nil -} - -// Helpers -------------------------------------------------------------------- - -// GenerateRandomKey creates a random key with the given length in bytes. -func GenerateRandomKey(length int) []byte { - k := make([]byte, length) - if _, err := io.ReadFull(rand.Reader, k); err != nil { - return nil - } - return k -} - -// CodecsFromPairs returns a slice of SecureCookie instances. -// -// It is a convenience function to create a list of codecs for key rotation. -func CodecsFromPairs(keyPairs ...[]byte) []Codec { - codecs := make([]Codec, len(keyPairs)/2+len(keyPairs)%2) - for i := 0; i < len(keyPairs); i += 2 { - var blockKey []byte - if i+1 < len(keyPairs) { - blockKey = keyPairs[i+1] - } - codecs[i/2] = New(keyPairs[i], blockKey) - } - return codecs -} - -// EncodeMulti encodes a cookie value using a group of codecs. -// -// The codecs are tried in order. Multiple codecs are accepted to allow -// key rotation. -func EncodeMulti(name string, value interface{}, codecs ...Codec) (string, error) { - if len(codecs) == 0 { - return "", errNoCodecs - } - - var errors MultiError - for _, codec := range codecs { - encoded, err := codec.Encode(name, value) - if err == nil { - return encoded, nil - } - errors = append(errors, err) - } - return "", errors -} - -// DecodeMulti decodes a cookie value using a group of codecs. -// -// The codecs are tried in order. Multiple codecs are accepted to allow -// key rotation. -func DecodeMulti(name string, value string, dst interface{}, codecs ...Codec) error { - if len(codecs) == 0 { - return errNoCodecs - } - - var errors MultiError - for _, codec := range codecs { - err := codec.Decode(name, value, dst) - if err == nil { - return nil - } - errors = append(errors, err) - } - return errors -} - -// MultiError groups multiple errors. -type MultiError []error - -func (m MultiError) Error() string { - s, n := "", 0 - for _, e := range m { - if e != nil { - if n == 0 { - s = e.Error() - } - n++ - } - } - switch n { - case 0: - return "(0 errors)" - case 1: - return s - case 2: - return s + " (and 1 other error)" - } - return fmt.Sprintf("%s (and %d other errors)", s, n-1) -} diff --git a/vendor/github.com/gorilla/sessions/LICENSE b/vendor/github.com/gorilla/sessions/LICENSE deleted file mode 100644 index 0e5fb87..0000000 --- a/vendor/github.com/gorilla/sessions/LICENSE +++ /dev/null @@ -1,27 +0,0 @@ -Copyright (c) 2012 Rodrigo Moraes. All rights reserved. - -Redistribution and use in source and binary forms, with or without -modification, are permitted provided that the following conditions are -met: - - * Redistributions of source code must retain the above copyright -notice, this list of conditions and the following disclaimer. - * Redistributions in binary form must reproduce the above -copyright notice, this list of conditions and the following disclaimer -in the documentation and/or other materials provided with the -distribution. - * Neither the name of Google Inc. nor the names of its -contributors may be used to endorse or promote products derived from -this software without specific prior written permission. - -THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS -"AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT -LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR -A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT -OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, -SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT -LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, -DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY -THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE -OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. diff --git a/vendor/github.com/gorilla/sessions/README.md b/vendor/github.com/gorilla/sessions/README.md deleted file mode 100644 index 1ffa2cf..0000000 --- a/vendor/github.com/gorilla/sessions/README.md +++ /dev/null @@ -1,20 +0,0 @@ -sessions -======== - -Store Implementations ---------------------- -Other implementations of the sessions.Store interface: - - * [github.com/starJammer/gorilla-sessions-arangodb](https://github.com/starJammer/gorilla-sessions-arangodb) - ArangoDB - * [github.com/yosssi/boltstore](https://github.com/yosssi/boltstore) - Bolt - * [github.com/srinathgs/couchbasestore](https://github.com/srinathgs/couchbasestore) - Couchbase - * [github.com/denizeren/dynamostore](https://github.com/denizeren/dynamostore) - Dynamodb on AWS - * [github.com/bradleypeabody/gorilla-sessions-memcache](https://github.com/bradleypeabody/gorilla-sessions-memcache) - Memcache - * [github.com/hnakamur/gaesessions](https://github.com/hnakamur/gaesessions) - Memcache on GAE - * [github.com/kidstuff/mongostore](https://github.com/kidstuff/mongostore) - MongoDB - * [github.com/srinathgs/mysqlstore](https://github.com/srinathgs/mysqlstore) - MySQL - * [github.com/antonlindstrom/pgstore](https://github.com/antonlindstrom/pgstore) - PostgreSQL - * [github.com/boj/redistore](https://github.com/boj/redistore) - Redis - * [github.com/boj/rethinkstore](https://github.com/boj/rethinkstore) - RethinkDB - * [github.com/boj/riakstore](https://github.com/boj/riakstore) - Riak - * [github.com/michaeljs1990/sqlitestore](https://github.com/michaeljs1990/sqlitestore) - SQLite diff --git a/vendor/github.com/gorilla/sessions/doc.go b/vendor/github.com/gorilla/sessions/doc.go deleted file mode 100644 index 7f8be22..0000000 --- a/vendor/github.com/gorilla/sessions/doc.go +++ /dev/null @@ -1,168 +0,0 @@ -// Copyright 2012 The Gorilla Authors. All rights reserved. -// Use of this source code is governed by a BSD-style -// license that can be found in the LICENSE file. - -/* -Package gorilla/sessions provides cookie and filesystem sessions and -infrastructure for custom session backends. - -The key features are: - - * Simple API: use it as an easy way to set signed (and optionally - encrypted) cookies. - * Built-in backends to store sessions in cookies or the filesystem. - * Flash messages: session values that last until read. - * Convenient way to switch session persistency (aka "remember me") and set - other attributes. - * Mechanism to rotate authentication and encryption keys. - * Multiple sessions per request, even using different backends. - * Interfaces and infrastructure for custom session backends: sessions from - different stores can be retrieved and batch-saved using a common API. - -Let's start with an example that shows the sessions API in a nutshell: - - import ( - "net/http" - "github.com/gorilla/sessions" - ) - - var store = sessions.NewCookieStore([]byte("something-very-secret")) - - func MyHandler(w http.ResponseWriter, r *http.Request) { - // Get a session. We're ignoring the error resulted from decoding an - // existing session: Get() always returns a session, even if empty. - session, _ := store.Get(r, "session-name") - // Set some session values. - session.Values["foo"] = "bar" - session.Values[42] = 43 - // Save it. - session.Save(r, w) - } - -First we initialize a session store calling NewCookieStore() and passing a -secret key used to authenticate the session. Inside the handler, we call -store.Get() to retrieve an existing session or a new one. Then we set some -session values in session.Values, which is a map[interface{}]interface{}. -And finally we call session.Save() to save the session in the response. - -Note that in production code, we should check for errors when calling -session.Save(r, w), and either display an error message or otherwise handle it. - -Important Note: If you aren't using gorilla/mux, you need to wrap your handlers -with context.ClearHandler as or else you will leak memory! An easy way to do this -is to wrap the top-level mux when calling http.ListenAndServe: - - http.ListenAndServe(":8080", context.ClearHandler(http.DefaultServeMux)) - -The ClearHandler function is provided by the gorilla/context package. - -That's all you need to know for the basic usage. Let's take a look at other -options, starting with flash messages. - -Flash messages are session values that last until read. The term appeared with -Ruby On Rails a few years back. When we request a flash message, it is removed -from the session. To add a flash, call session.AddFlash(), and to get all -flashes, call session.Flashes(). Here is an example: - - func MyHandler(w http.ResponseWriter, r *http.Request) { - // Get a session. - session, _ := store.Get(r, "session-name") - // Get the previously flashes, if any. - if flashes := session.Flashes(); len(flashes) > 0 { - // Just print the flash values. - fmt.Fprint(w, "%v", flashes) - } else { - // Set a new flash. - session.AddFlash("Hello, flash messages world!") - fmt.Fprint(w, "No flashes found.") - } - session.Save(r, w) - } - -Flash messages are useful to set information to be read after a redirection, -like after form submissions. - -There may also be cases where you want to store a complex datatype within a -session, such as a struct. Sessions are serialised using the encoding/gob package, -so it is easy to register new datatypes for storage in sessions: - - import( - "encoding/gob" - "github.com/gorilla/sessions" - ) - - type Person struct { - FirstName string - LastName string - Email string - Age int - } - - type M map[string]interface{} - - func init() { - - gob.Register(&Person{}) - gob.Register(&M{}) - } - -As it's not possible to pass a raw type as a parameter to a function, gob.Register() -relies on us passing it an empty pointer to the type as a parameter. In the example -above we've passed it a pointer to a struct and a pointer to a custom type -representing a map[string]interface. This will then allow us to serialise/deserialise -values of those types to and from our sessions. - -By default, session cookies last for a month. This is probably too long for -some cases, but it is easy to change this and other attributes during -runtime. Sessions can be configured individually or the store can be -configured and then all sessions saved using it will use that configuration. -We access session.Options or store.Options to set a new configuration. The -fields are basically a subset of http.Cookie fields. Let's change the -maximum age of a session to one week: - - session.Options = &sessions.Options{ - Path: "/", - MaxAge: 86400 * 7, - HttpOnly: true, - } - -Sometimes we may want to change authentication and/or encryption keys without -breaking existing sessions. The CookieStore supports key rotation, and to use -it you just need to set multiple authentication and encryption keys, in pairs, -to be tested in order: - - var store = sessions.NewCookieStore( - []byte("new-authentication-key"), - []byte("new-encryption-key"), - []byte("old-authentication-key"), - []byte("old-encryption-key"), - ) - -New sessions will be saved using the first pair. Old sessions can still be -read because the first pair will fail, and the second will be tested. This -makes it easy to "rotate" secret keys and still be able to validate existing -sessions. Note: for all pairs the encryption key is optional; set it to nil -or omit it and and encryption won't be used. - -Multiple sessions can be used in the same request, even with different -session backends. When this happens, calling Save() on each session -individually would be cumbersome, so we have a way to save all sessions -at once: it's sessions.Save(). Here's an example: - - var store = sessions.NewCookieStore([]byte("something-very-secret")) - - func MyHandler(w http.ResponseWriter, r *http.Request) { - // Get a session and set a value. - session1, _ := store.Get(r, "session-one") - session1.Values["foo"] = "bar" - // Get another session and set another value. - session2, _ := store.Get(r, "session-two") - session2.Values[42] = 43 - // Save all sessions. - sessions.Save(r, w) - } - -This is possible because when we call Get() from a session store, it adds the -session to a common registry. Save() uses it to save all registered sessions. -*/ -package sessions diff --git a/vendor/github.com/gorilla/sessions/sessions.go b/vendor/github.com/gorilla/sessions/sessions.go deleted file mode 100644 index 53111b3..0000000 --- a/vendor/github.com/gorilla/sessions/sessions.go +++ /dev/null @@ -1,234 +0,0 @@ -// Copyright 2012 The Gorilla Authors. All rights reserved. -// Use of this source code is governed by a BSD-style -// license that can be found in the LICENSE file. - -package sessions - -import ( - "encoding/gob" - "fmt" - "net/http" - "time" - - "github.com/gorilla/context" -) - -// Default flashes key. -const flashesKey = "_flash" - -// Options -------------------------------------------------------------------- - -// Options stores configuration for a session or session store. -// -// Fields are a subset of http.Cookie fields. -type Options struct { - Path string - Domain string - // MaxAge=0 means no 'Max-Age' attribute specified. - // MaxAge<0 means delete cookie now, equivalently 'Max-Age: 0'. - // MaxAge>0 means Max-Age attribute present and given in seconds. - MaxAge int - Secure bool - HttpOnly bool -} - -// Session -------------------------------------------------------------------- - -// NewSession is called by session stores to create a new session instance. -func NewSession(store Store, name string) *Session { - return &Session{ - Values: make(map[interface{}]interface{}), - store: store, - name: name, - } -} - -// Session stores the values and optional configuration for a session. -type Session struct { - ID string - Values map[interface{}]interface{} - Options *Options - IsNew bool - store Store - name string -} - -// Flashes returns a slice of flash messages from the session. -// -// A single variadic argument is accepted, and it is optional: it defines -// the flash key. If not defined "_flash" is used by default. -func (s *Session) Flashes(vars ...string) []interface{} { - var flashes []interface{} - key := flashesKey - if len(vars) > 0 { - key = vars[0] - } - if v, ok := s.Values[key]; ok { - // Drop the flashes and return it. - delete(s.Values, key) - flashes = v.([]interface{}) - } - return flashes -} - -// AddFlash adds a flash message to the session. -// -// A single variadic argument is accepted, and it is optional: it defines -// the flash key. If not defined "_flash" is used by default. -func (s *Session) AddFlash(value interface{}, vars ...string) { - key := flashesKey - if len(vars) > 0 { - key = vars[0] - } - var flashes []interface{} - if v, ok := s.Values[key]; ok { - flashes = v.([]interface{}) - } - s.Values[key] = append(flashes, value) -} - -// Save is a convenience method to save this session. It is the same as calling -// store.Save(request, response, session) -func (s *Session) Save(r *http.Request, w http.ResponseWriter) error { - return s.store.Save(r, w, s) -} - -// Name returns the name used to register the session. -func (s *Session) Name() string { - return s.name -} - -// Store returns the session store used to register the session. -func (s *Session) Store() Store { - return s.store -} - -// Registry ------------------------------------------------------------------- - -// sessionInfo stores a session tracked by the registry. -type sessionInfo struct { - s *Session - e error -} - -// contextKey is the type used to store the registry in the context. -type contextKey int - -// registryKey is the key used to store the registry in the context. -const registryKey contextKey = 0 - -// GetRegistry returns a registry instance for the current request. -func GetRegistry(r *http.Request) *Registry { - registry := context.Get(r, registryKey) - if registry != nil { - return registry.(*Registry) - } - newRegistry := &Registry{ - request: r, - sessions: make(map[string]sessionInfo), - } - context.Set(r, registryKey, newRegistry) - return newRegistry -} - -// Registry stores sessions used during a request. -type Registry struct { - request *http.Request - sessions map[string]sessionInfo -} - -// Get registers and returns a session for the given name and session store. -// -// It returns a new session if there are no sessions registered for the name. -func (s *Registry) Get(store Store, name string) (session *Session, err error) { - if info, ok := s.sessions[name]; ok { - session, err = info.s, info.e - } else { - session, err = store.New(s.request, name) - session.name = name - s.sessions[name] = sessionInfo{s: session, e: err} - } - session.store = store - return -} - -// Save saves all sessions registered for the current request. -func (s *Registry) Save(w http.ResponseWriter) error { - var errMulti MultiError - for name, info := range s.sessions { - session := info.s - if session.store == nil { - errMulti = append(errMulti, fmt.Errorf( - "sessions: missing store for session %q", name)) - } else if err := session.store.Save(s.request, w, session); err != nil { - errMulti = append(errMulti, fmt.Errorf( - "sessions: error saving session %q -- %v", name, err)) - } - } - if errMulti != nil { - return errMulti - } - return nil -} - -// Helpers -------------------------------------------------------------------- - -func init() { - gob.Register([]interface{}{}) -} - -// Save saves all sessions used during the current request. -func Save(r *http.Request, w http.ResponseWriter) error { - return GetRegistry(r).Save(w) -} - -// NewCookie returns an http.Cookie with the options set. It also sets -// the Expires field calculated based on the MaxAge value, for Internet -// Explorer compatibility. -func NewCookie(name, value string, options *Options) *http.Cookie { - cookie := &http.Cookie{ - Name: name, - Value: value, - Path: options.Path, - Domain: options.Domain, - MaxAge: options.MaxAge, - Secure: options.Secure, - HttpOnly: options.HttpOnly, - } - if options.MaxAge > 0 { - d := time.Duration(options.MaxAge) * time.Second - cookie.Expires = time.Now().Add(d) - } else if options.MaxAge < 0 { - // Set it to the past to expire now. - cookie.Expires = time.Unix(1, 0) - } - return cookie -} - -// Error ---------------------------------------------------------------------- - -// MultiError stores multiple errors. -// -// Borrowed from the App Engine SDK. -type MultiError []error - -func (m MultiError) Error() string { - s, n := "", 0 - for _, e := range m { - if e != nil { - if n == 0 { - s = e.Error() - } - n++ - } - } - switch n { - case 0: - return "(0 errors)" - case 1: - return s - case 2: - return s + " (and 1 other error)" - } - return fmt.Sprintf("%s (and %d other errors)", s, n-1) -} diff --git a/vendor/github.com/gorilla/sessions/store.go b/vendor/github.com/gorilla/sessions/store.go deleted file mode 100644 index 2c0257f..0000000 --- a/vendor/github.com/gorilla/sessions/store.go +++ /dev/null @@ -1,236 +0,0 @@ -// Copyright 2012 The Gorilla Authors. All rights reserved. -// Use of this source code is governed by a BSD-style -// license that can be found in the LICENSE file. - -package sessions - -import ( - "encoding/base32" - "io/ioutil" - "net/http" - "os" - "path/filepath" - "strings" - "sync" - - "github.com/gorilla/securecookie" -) - -// Store is an interface for custom session stores. -// -// See CookieStore and FilesystemStore for examples. -type Store interface { - // Get should return a cached session. - Get(r *http.Request, name string) (*Session, error) - - // New should create and return a new session. - // - // Note that New should never return a nil session, even in the case of - // an error if using the Registry infrastructure to cache the session. - New(r *http.Request, name string) (*Session, error) - - // Save should persist session to the underlying store implementation. - Save(r *http.Request, w http.ResponseWriter, s *Session) error -} - -// CookieStore ---------------------------------------------------------------- - -// NewCookieStore returns a new CookieStore. -// -// Keys are defined in pairs to allow key rotation, but the common case is -// to set a single authentication key and optionally an encryption key. -// -// The first key in a pair is used for authentication and the second for -// encryption. The encryption key can be set to nil or omitted in the last -// pair, but the authentication key is required in all pairs. -// -// It is recommended to use an authentication key with 32 or 64 bytes. -// The encryption key, if set, must be either 16, 24, or 32 bytes to select -// AES-128, AES-192, or AES-256 modes. -// -// Use the convenience function securecookie.GenerateRandomKey() to create -// strong keys. -func NewCookieStore(keyPairs ...[]byte) *CookieStore { - return &CookieStore{ - Codecs: securecookie.CodecsFromPairs(keyPairs...), - Options: &Options{ - Path: "/", - MaxAge: 86400 * 30, - }, - } -} - -// CookieStore stores sessions using secure cookies. -type CookieStore struct { - Codecs []securecookie.Codec - Options *Options // default configuration -} - -// Get returns a session for the given name after adding it to the registry. -// -// It returns a new session if the sessions doesn't exist. Access IsNew on -// the session to check if it is an existing session or a new one. -// -// It returns a new session and an error if the session exists but could -// not be decoded. -func (s *CookieStore) Get(r *http.Request, name string) (*Session, error) { - return GetRegistry(r).Get(s, name) -} - -// New returns a session for the given name without adding it to the registry. -// -// The difference between New() and Get() is that calling New() twice will -// decode the session data twice, while Get() registers and reuses the same -// decoded session after the first call. -func (s *CookieStore) New(r *http.Request, name string) (*Session, error) { - session := NewSession(s, name) - opts := *s.Options - session.Options = &opts - session.IsNew = true - var err error - if c, errCookie := r.Cookie(name); errCookie == nil { - err = securecookie.DecodeMulti(name, c.Value, &session.Values, - s.Codecs...) - if err == nil { - session.IsNew = false - } - } - return session, err -} - -// Save adds a single session to the response. -func (s *CookieStore) Save(r *http.Request, w http.ResponseWriter, - session *Session) error { - encoded, err := securecookie.EncodeMulti(session.Name(), session.Values, - s.Codecs...) - if err != nil { - return err - } - http.SetCookie(w, NewCookie(session.Name(), encoded, session.Options)) - return nil -} - -// FilesystemStore ------------------------------------------------------------ - -var fileMutex sync.RWMutex - -// NewFilesystemStore returns a new FilesystemStore. -// -// The path argument is the directory where sessions will be saved. If empty -// it will use os.TempDir(). -// -// See NewCookieStore() for a description of the other parameters. -func NewFilesystemStore(path string, keyPairs ...[]byte) *FilesystemStore { - if path == "" { - path = os.TempDir() - } - return &FilesystemStore{ - Codecs: securecookie.CodecsFromPairs(keyPairs...), - Options: &Options{ - Path: "/", - MaxAge: 86400 * 30, - }, - path: path, - } -} - -// FilesystemStore stores sessions in the filesystem. -// -// It also serves as a referece for custom stores. -// -// This store is still experimental and not well tested. Feedback is welcome. -type FilesystemStore struct { - Codecs []securecookie.Codec - Options *Options // default configuration - path string -} - -// MaxLength restricts the maximum length of new sessions to l. -// If l is 0 there is no limit to the size of a session, use with caution. -// The default for a new FilesystemStore is 4096. -func (s *FilesystemStore) MaxLength(l int) { - for _, c := range s.Codecs { - if codec, ok := c.(*securecookie.SecureCookie); ok { - codec.MaxLength(l) - } - } -} - -// Get returns a session for the given name after adding it to the registry. -// -// See CookieStore.Get(). -func (s *FilesystemStore) Get(r *http.Request, name string) (*Session, error) { - return GetRegistry(r).Get(s, name) -} - -// New returns a session for the given name without adding it to the registry. -// -// See CookieStore.New(). -func (s *FilesystemStore) New(r *http.Request, name string) (*Session, error) { - session := NewSession(s, name) - opts := *s.Options - session.Options = &opts - session.IsNew = true - var err error - if c, errCookie := r.Cookie(name); errCookie == nil { - err = securecookie.DecodeMulti(name, c.Value, &session.ID, s.Codecs...) - if err == nil { - err = s.load(session) - if err == nil { - session.IsNew = false - } - } - } - return session, err -} - -// Save adds a single session to the response. -func (s *FilesystemStore) Save(r *http.Request, w http.ResponseWriter, - session *Session) error { - if session.ID == "" { - // Because the ID is used in the filename, encode it to - // use alphanumeric characters only. - session.ID = strings.TrimRight( - base32.StdEncoding.EncodeToString( - securecookie.GenerateRandomKey(32)), "=") - } - if err := s.save(session); err != nil { - return err - } - encoded, err := securecookie.EncodeMulti(session.Name(), session.ID, - s.Codecs...) - if err != nil { - return err - } - http.SetCookie(w, NewCookie(session.Name(), encoded, session.Options)) - return nil -} - -// save writes encoded session.Values to a file. -func (s *FilesystemStore) save(session *Session) error { - encoded, err := securecookie.EncodeMulti(session.Name(), session.Values, - s.Codecs...) - if err != nil { - return err - } - filename := filepath.Join(s.path, "session_"+session.ID) - fileMutex.Lock() - defer fileMutex.Unlock() - return ioutil.WriteFile(filename, []byte(encoded), 0600) -} - -// load reads a file and decodes its content into session.Values. -func (s *FilesystemStore) load(session *Session) error { - filename := filepath.Join(s.path, "session_"+session.ID) - fileMutex.RLock() - defer fileMutex.RUnlock() - fdata, err := ioutil.ReadFile(filename) - if err != nil { - return err - } - if err = securecookie.DecodeMulti(session.Name(), string(fdata), - &session.Values, s.Codecs...); err != nil { - return err - } - return nil -} diff --git a/vendor/github.com/gorilla/websocket/AUTHORS b/vendor/github.com/gorilla/websocket/AUTHORS deleted file mode 100644 index b003eca..0000000 --- a/vendor/github.com/gorilla/websocket/AUTHORS +++ /dev/null @@ -1,8 +0,0 @@ -# This is the official list of Gorilla WebSocket authors for copyright -# purposes. -# -# Please keep the list sorted. - -Gary Burd -Joachim Bauch - diff --git a/vendor/github.com/gorilla/websocket/LICENSE b/vendor/github.com/gorilla/websocket/LICENSE deleted file mode 100644 index 9171c97..0000000 --- a/vendor/github.com/gorilla/websocket/LICENSE +++ /dev/null @@ -1,22 +0,0 @@ -Copyright (c) 2013 The Gorilla WebSocket Authors. All rights reserved. - -Redistribution and use in source and binary forms, with or without -modification, are permitted provided that the following conditions are met: - - Redistributions of source code must retain the above copyright notice, this - list of conditions and the following disclaimer. - - Redistributions in binary form must reproduce the above copyright notice, - this list of conditions and the following disclaimer in the documentation - and/or other materials provided with the distribution. - -THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND -ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED -WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE -DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE -FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL -DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR -SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER -CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, -OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE -OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. diff --git a/vendor/github.com/gorilla/websocket/README.md b/vendor/github.com/gorilla/websocket/README.md deleted file mode 100644 index 9ad75a0..0000000 --- a/vendor/github.com/gorilla/websocket/README.md +++ /dev/null @@ -1,59 +0,0 @@ -# Gorilla WebSocket - -Gorilla WebSocket is a [Go](http://golang.org/) implementation of the -[WebSocket](http://www.rfc-editor.org/rfc/rfc6455.txt) protocol. - -### Documentation - -* [API Reference](http://godoc.org/github.com/gorilla/websocket) -* [Chat example](https://github.com/gorilla/websocket/tree/master/examples/chat) -* [File watch example](https://github.com/gorilla/websocket/tree/master/examples/filewatch) - -### Status - -The Gorilla WebSocket package provides a complete and tested implementation of -the [WebSocket](http://www.rfc-editor.org/rfc/rfc6455.txt) protocol. The -package API is stable. - -### Installation - - go get github.com/gorilla/websocket - -### Protocol Compliance - -The Gorilla WebSocket package passes the server tests in the [Autobahn Test -Suite](http://autobahn.ws/testsuite) using the application in the [examples/autobahn -subdirectory](https://github.com/gorilla/websocket/tree/master/examples/autobahn). - -### Gorilla WebSocket compared with other packages - - - - - - - - - - - - - - - - - - -
github.com/gorillagolang.org/x/net
RFC 6455 Features
Passes Autobahn Test SuiteYesNo
Receive fragmented messageYesNo, see note 1
Send close messageYesNo
Send pings and receive pongsYesNo
Get the type of a received data messageYesYes, see note 2
Other Features
Limit size of received messageYesNo
Read message using io.ReaderYesNo, see note 3
Write message using io.WriteCloserYesNo, see note 3
- -Notes: - -1. Large messages are fragmented in [Chrome's new WebSocket implementation](http://www.ietf.org/mail-archive/web/hybi/current/msg10503.html). -2. The application can get the type of a received data message by implementing - a [Codec marshal](http://godoc.org/golang.org/x/net/websocket#Codec.Marshal) - function. -3. The go.net io.Reader and io.Writer operate across WebSocket frame boundaries. - Read returns when the input buffer is full or a frame boundary is - encountered. Each call to Write sends a single frame message. The Gorilla - io.Reader and io.WriteCloser operate on a single WebSocket message. - diff --git a/vendor/github.com/gorilla/websocket/client.go b/vendor/github.com/gorilla/websocket/client.go deleted file mode 100644 index 93db8dd..0000000 --- a/vendor/github.com/gorilla/websocket/client.go +++ /dev/null @@ -1,269 +0,0 @@ -// Copyright 2013 The Gorilla WebSocket Authors. All rights reserved. -// Use of this source code is governed by a BSD-style -// license that can be found in the LICENSE file. - -package websocket - -import ( - "bytes" - "crypto/tls" - "errors" - "io" - "io/ioutil" - "net" - "net/http" - "net/url" - "strings" - "time" -) - -// ErrBadHandshake is returned when the server response to opening handshake is -// invalid. -var ErrBadHandshake = errors.New("websocket: bad handshake") - -// NewClient creates a new client connection using the given net connection. -// The URL u specifies the host and request URI. Use requestHeader to specify -// the origin (Origin), subprotocols (Sec-WebSocket-Protocol) and cookies -// (Cookie). Use the response.Header to get the selected subprotocol -// (Sec-WebSocket-Protocol) and cookies (Set-Cookie). -// -// If the WebSocket handshake fails, ErrBadHandshake is returned along with a -// non-nil *http.Response so that callers can handle redirects, authentication, -// etc. -func NewClient(netConn net.Conn, u *url.URL, requestHeader http.Header, readBufSize, writeBufSize int) (c *Conn, response *http.Response, err error) { - challengeKey, err := generateChallengeKey() - if err != nil { - return nil, nil, err - } - acceptKey := computeAcceptKey(challengeKey) - - c = newConn(netConn, false, readBufSize, writeBufSize) - p := c.writeBuf[:0] - p = append(p, "GET "...) - p = append(p, u.RequestURI()...) - p = append(p, " HTTP/1.1\r\nHost: "...) - p = append(p, u.Host...) - // "Upgrade" is capitalized for servers that do not use case insensitive - // comparisons on header tokens. - p = append(p, "\r\nUpgrade: websocket\r\nConnection: Upgrade\r\nSec-WebSocket-Version: 13\r\nSec-WebSocket-Key: "...) - p = append(p, challengeKey...) - p = append(p, "\r\n"...) - for k, vs := range requestHeader { - for _, v := range vs { - p = append(p, k...) - p = append(p, ": "...) - p = append(p, v...) - p = append(p, "\r\n"...) - } - } - p = append(p, "\r\n"...) - - if _, err := netConn.Write(p); err != nil { - return nil, nil, err - } - - resp, err := http.ReadResponse(c.br, &http.Request{Method: "GET", URL: u}) - if err != nil { - return nil, nil, err - } - if resp.StatusCode != 101 || - !strings.EqualFold(resp.Header.Get("Upgrade"), "websocket") || - !strings.EqualFold(resp.Header.Get("Connection"), "upgrade") || - resp.Header.Get("Sec-Websocket-Accept") != acceptKey { - return nil, resp, ErrBadHandshake - } - c.subprotocol = resp.Header.Get("Sec-Websocket-Protocol") - return c, resp, nil -} - -// A Dialer contains options for connecting to WebSocket server. -type Dialer struct { - // NetDial specifies the dial function for creating TCP connections. If - // NetDial is nil, net.Dial is used. - NetDial func(network, addr string) (net.Conn, error) - - // TLSClientConfig specifies the TLS configuration to use with tls.Client. - // If nil, the default configuration is used. - TLSClientConfig *tls.Config - - // HandshakeTimeout specifies the duration for the handshake to complete. - HandshakeTimeout time.Duration - - // Input and output buffer sizes. If the buffer size is zero, then a - // default value of 4096 is used. - ReadBufferSize, WriteBufferSize int - - // Subprotocols specifies the client's requested subprotocols. - Subprotocols []string -} - -var errMalformedURL = errors.New("malformed ws or wss URL") - -// parseURL parses the URL. The url.Parse function is not used here because -// url.Parse mangles the path. -func parseURL(s string) (*url.URL, error) { - // From the RFC: - // - // ws-URI = "ws:" "//" host [ ":" port ] path [ "?" query ] - // wss-URI = "wss:" "//" host [ ":" port ] path [ "?" query ] - // - // We don't use the net/url parser here because the dialer interface does - // not provide a way for applications to work around percent deocding in - // the net/url parser. - - var u url.URL - switch { - case strings.HasPrefix(s, "ws://"): - u.Scheme = "ws" - s = s[len("ws://"):] - case strings.HasPrefix(s, "wss://"): - u.Scheme = "wss" - s = s[len("wss://"):] - default: - return nil, errMalformedURL - } - - u.Host = s - u.Opaque = "/" - if i := strings.Index(s, "/"); i >= 0 { - u.Host = s[:i] - u.Opaque = s[i:] - } - - if strings.Contains(u.Host, "@") { - // WebSocket URIs do not contain user information. - return nil, errMalformedURL - } - - return &u, nil -} - -func hostPortNoPort(u *url.URL) (hostPort, hostNoPort string) { - hostPort = u.Host - hostNoPort = u.Host - if i := strings.LastIndex(u.Host, ":"); i > strings.LastIndex(u.Host, "]") { - hostNoPort = hostNoPort[:i] - } else { - if u.Scheme == "wss" { - hostPort += ":443" - } else { - hostPort += ":80" - } - } - return hostPort, hostNoPort -} - -// DefaultDialer is a dialer with all fields set to the default zero values. -var DefaultDialer *Dialer - -// Dial creates a new client connection. Use requestHeader to specify the -// origin (Origin), subprotocols (Sec-WebSocket-Protocol) and cookies (Cookie). -// Use the response.Header to get the selected subprotocol -// (Sec-WebSocket-Protocol) and cookies (Set-Cookie). -// -// If the WebSocket handshake fails, ErrBadHandshake is returned along with a -// non-nil *http.Response so that callers can handle redirects, authentication, -// etcetera. The response body may not contain the entire response and does not -// need to be closed by the application. -func (d *Dialer) Dial(urlStr string, requestHeader http.Header) (*Conn, *http.Response, error) { - u, err := parseURL(urlStr) - if err != nil { - return nil, nil, err - } - - hostPort, hostNoPort := hostPortNoPort(u) - - if d == nil { - d = &Dialer{} - } - - var deadline time.Time - if d.HandshakeTimeout != 0 { - deadline = time.Now().Add(d.HandshakeTimeout) - } - - netDial := d.NetDial - if netDial == nil { - netDialer := &net.Dialer{Deadline: deadline} - netDial = netDialer.Dial - } - - netConn, err := netDial("tcp", hostPort) - if err != nil { - return nil, nil, err - } - - defer func() { - if netConn != nil { - netConn.Close() - } - }() - - if err := netConn.SetDeadline(deadline); err != nil { - return nil, nil, err - } - - if u.Scheme == "wss" { - cfg := d.TLSClientConfig - if cfg == nil { - cfg = &tls.Config{ServerName: hostNoPort} - } else if cfg.ServerName == "" { - shallowCopy := *cfg - cfg = &shallowCopy - cfg.ServerName = hostNoPort - } - tlsConn := tls.Client(netConn, cfg) - netConn = tlsConn - if err := tlsConn.Handshake(); err != nil { - return nil, nil, err - } - if !cfg.InsecureSkipVerify { - if err := tlsConn.VerifyHostname(cfg.ServerName); err != nil { - return nil, nil, err - } - } - } - - if len(d.Subprotocols) > 0 { - h := http.Header{} - for k, v := range requestHeader { - h[k] = v - } - h.Set("Sec-Websocket-Protocol", strings.Join(d.Subprotocols, ", ")) - requestHeader = h - } - - if len(requestHeader["Host"]) > 0 { - // This can be used to supply a Host: header which is different from - // the dial address. - u.Host = requestHeader.Get("Host") - - // Drop "Host" header - h := http.Header{} - for k, v := range requestHeader { - if k == "Host" { - continue - } - h[k] = v - } - requestHeader = h - } - - conn, resp, err := NewClient(netConn, u, requestHeader, d.ReadBufferSize, d.WriteBufferSize) - - if err != nil { - if err == ErrBadHandshake { - // Before closing the network connection on return from this - // function, slurp up some of the response to aid application - // debugging. - buf := make([]byte, 1024) - n, _ := io.ReadFull(resp.Body, buf) - resp.Body = ioutil.NopCloser(bytes.NewReader(buf[:n])) - } - return nil, resp, err - } - - netConn.SetDeadline(time.Time{}) - netConn = nil // to avoid close in defer. - return conn, resp, nil -} diff --git a/vendor/github.com/gorilla/websocket/conn.go b/vendor/github.com/gorilla/websocket/conn.go deleted file mode 100644 index e719f1c..0000000 --- a/vendor/github.com/gorilla/websocket/conn.go +++ /dev/null @@ -1,825 +0,0 @@ -// Copyright 2013 The Gorilla WebSocket Authors. All rights reserved. -// Use of this source code is governed by a BSD-style -// license that can be found in the LICENSE file. - -package websocket - -import ( - "bufio" - "encoding/binary" - "errors" - "io" - "io/ioutil" - "math/rand" - "net" - "strconv" - "time" -) - -const ( - maxFrameHeaderSize = 2 + 8 + 4 // Fixed header + length + mask - maxControlFramePayloadSize = 125 - finalBit = 1 << 7 - maskBit = 1 << 7 - writeWait = time.Second - - defaultReadBufferSize = 4096 - defaultWriteBufferSize = 4096 - - continuationFrame = 0 - noFrame = -1 -) - -// Close codes defined in RFC 6455, section 11.7. -const ( - CloseNormalClosure = 1000 - CloseGoingAway = 1001 - CloseProtocolError = 1002 - CloseUnsupportedData = 1003 - CloseNoStatusReceived = 1005 - CloseAbnormalClosure = 1006 - CloseInvalidFramePayloadData = 1007 - ClosePolicyViolation = 1008 - CloseMessageTooBig = 1009 - CloseMandatoryExtension = 1010 - CloseInternalServerErr = 1011 - CloseTLSHandshake = 1015 -) - -// The message types are defined in RFC 6455, section 11.8. -const ( - // TextMessage denotes a text data message. The text message payload is - // interpreted as UTF-8 encoded text data. - TextMessage = 1 - - // BinaryMessage denotes a binary data message. - BinaryMessage = 2 - - // CloseMessage denotes a close control message. The optional message - // payload contains a numeric code and text. Use the FormatCloseMessage - // function to format a close message payload. - CloseMessage = 8 - - // PingMessage denotes a ping control message. The optional message payload - // is UTF-8 encoded text. - PingMessage = 9 - - // PongMessage denotes a ping control message. The optional message payload - // is UTF-8 encoded text. - PongMessage = 10 -) - -// ErrCloseSent is returned when the application writes a message to the -// connection after sending a close message. -var ErrCloseSent = errors.New("websocket: close sent") - -// ErrReadLimit is returned when reading a message that is larger than the -// read limit set for the connection. -var ErrReadLimit = errors.New("websocket: read limit exceeded") - -// netError satisfies the net Error interface. -type netError struct { - msg string - temporary bool - timeout bool -} - -func (e *netError) Error() string { return e.msg } -func (e *netError) Temporary() bool { return e.temporary } -func (e *netError) Timeout() bool { return e.timeout } - -// closeError represents close frame. -type closeError struct { - code int - text string -} - -func (e *closeError) Error() string { - return "websocket: close " + strconv.Itoa(e.code) + " " + e.text -} - -var ( - errWriteTimeout = &netError{msg: "websocket: write timeout", timeout: true} - errUnexpectedEOF = &closeError{code: CloseAbnormalClosure, text: io.ErrUnexpectedEOF.Error()} - errBadWriteOpCode = errors.New("websocket: bad write message type") - errWriteClosed = errors.New("websocket: write closed") - errInvalidControlFrame = errors.New("websocket: invalid control frame") -) - -func hideTempErr(err error) error { - if e, ok := err.(net.Error); ok && e.Temporary() { - err = &netError{msg: e.Error(), timeout: e.Timeout()} - } - return err -} - -func isControl(frameType int) bool { - return frameType == CloseMessage || frameType == PingMessage || frameType == PongMessage -} - -func isData(frameType int) bool { - return frameType == TextMessage || frameType == BinaryMessage -} - -func maskBytes(key [4]byte, pos int, b []byte) int { - for i := range b { - b[i] ^= key[pos&3] - pos++ - } - return pos & 3 -} - -func newMaskKey() [4]byte { - n := rand.Uint32() - return [4]byte{byte(n), byte(n >> 8), byte(n >> 16), byte(n >> 24)} -} - -// Conn represents a WebSocket connection. -type Conn struct { - conn net.Conn - isServer bool - subprotocol string - - // Write fields - mu chan bool // used as mutex to protect write to conn and closeSent - closeSent bool // true if close message was sent - - // Message writer fields. - writeErr error - writeBuf []byte // frame is constructed in this buffer. - writePos int // end of data in writeBuf. - writeFrameType int // type of the current frame. - writeSeq int // incremented to invalidate message writers. - writeDeadline time.Time - - // Read fields - readErr error - br *bufio.Reader - readRemaining int64 // bytes remaining in current frame. - readFinal bool // true the current message has more frames. - readSeq int // incremented to invalidate message readers. - readLength int64 // Message size. - readLimit int64 // Maximum message size. - readMaskPos int - readMaskKey [4]byte - handlePong func(string) error - handlePing func(string) error -} - -func newConn(conn net.Conn, isServer bool, readBufferSize, writeBufferSize int) *Conn { - mu := make(chan bool, 1) - mu <- true - - if readBufferSize == 0 { - readBufferSize = defaultReadBufferSize - } - if writeBufferSize == 0 { - writeBufferSize = defaultWriteBufferSize - } - - c := &Conn{ - isServer: isServer, - br: bufio.NewReaderSize(conn, readBufferSize), - conn: conn, - mu: mu, - readFinal: true, - writeBuf: make([]byte, writeBufferSize+maxFrameHeaderSize), - writeFrameType: noFrame, - writePos: maxFrameHeaderSize, - } - c.SetPingHandler(nil) - c.SetPongHandler(nil) - return c -} - -// Subprotocol returns the negotiated protocol for the connection. -func (c *Conn) Subprotocol() string { - return c.subprotocol -} - -// Close closes the underlying network connection without sending or waiting for a close frame. -func (c *Conn) Close() error { - return c.conn.Close() -} - -// LocalAddr returns the local network address. -func (c *Conn) LocalAddr() net.Addr { - return c.conn.LocalAddr() -} - -// RemoteAddr returns the remote network address. -func (c *Conn) RemoteAddr() net.Addr { - return c.conn.RemoteAddr() -} - -// Write methods - -func (c *Conn) write(frameType int, deadline time.Time, bufs ...[]byte) error { - <-c.mu - defer func() { c.mu <- true }() - - if c.closeSent { - return ErrCloseSent - } else if frameType == CloseMessage { - c.closeSent = true - } - - c.conn.SetWriteDeadline(deadline) - for _, buf := range bufs { - if len(buf) > 0 { - n, err := c.conn.Write(buf) - if n != len(buf) { - // Close on partial write. - c.conn.Close() - } - if err != nil { - return err - } - } - } - return nil -} - -// WriteControl writes a control message with the given deadline. The allowed -// message types are CloseMessage, PingMessage and PongMessage. -func (c *Conn) WriteControl(messageType int, data []byte, deadline time.Time) error { - if !isControl(messageType) { - return errBadWriteOpCode - } - if len(data) > maxControlFramePayloadSize { - return errInvalidControlFrame - } - - b0 := byte(messageType) | finalBit - b1 := byte(len(data)) - if !c.isServer { - b1 |= maskBit - } - - buf := make([]byte, 0, maxFrameHeaderSize+maxControlFramePayloadSize) - buf = append(buf, b0, b1) - - if c.isServer { - buf = append(buf, data...) - } else { - key := newMaskKey() - buf = append(buf, key[:]...) - buf = append(buf, data...) - maskBytes(key, 0, buf[6:]) - } - - d := time.Hour * 1000 - if !deadline.IsZero() { - d = deadline.Sub(time.Now()) - if d < 0 { - return errWriteTimeout - } - } - - timer := time.NewTimer(d) - select { - case <-c.mu: - timer.Stop() - case <-timer.C: - return errWriteTimeout - } - defer func() { c.mu <- true }() - - if c.closeSent { - return ErrCloseSent - } else if messageType == CloseMessage { - c.closeSent = true - } - - c.conn.SetWriteDeadline(deadline) - n, err := c.conn.Write(buf) - if n != 0 && n != len(buf) { - c.conn.Close() - } - return err -} - -// NextWriter returns a writer for the next message to send. The writer's -// Close method flushes the complete message to the network. -// -// There can be at most one open writer on a connection. NextWriter closes the -// previous writer if the application has not already done so. -// -// The NextWriter method and the writers returned from the method cannot be -// accessed by more than one goroutine at a time. -func (c *Conn) NextWriter(messageType int) (io.WriteCloser, error) { - if c.writeErr != nil { - return nil, c.writeErr - } - - if c.writeFrameType != noFrame { - if err := c.flushFrame(true, nil); err != nil { - return nil, err - } - } - - if !isControl(messageType) && !isData(messageType) { - return nil, errBadWriteOpCode - } - - c.writeFrameType = messageType - return messageWriter{c, c.writeSeq}, nil -} - -func (c *Conn) flushFrame(final bool, extra []byte) error { - length := c.writePos - maxFrameHeaderSize + len(extra) - - // Check for invalid control frames. - if isControl(c.writeFrameType) && - (!final || length > maxControlFramePayloadSize) { - c.writeSeq++ - c.writeFrameType = noFrame - c.writePos = maxFrameHeaderSize - return errInvalidControlFrame - } - - b0 := byte(c.writeFrameType) - if final { - b0 |= finalBit - } - b1 := byte(0) - if !c.isServer { - b1 |= maskBit - } - - // Assume that the frame starts at beginning of c.writeBuf. - framePos := 0 - if c.isServer { - // Adjust up if mask not included in the header. - framePos = 4 - } - - switch { - case length >= 65536: - c.writeBuf[framePos] = b0 - c.writeBuf[framePos+1] = b1 | 127 - binary.BigEndian.PutUint64(c.writeBuf[framePos+2:], uint64(length)) - case length > 125: - framePos += 6 - c.writeBuf[framePos] = b0 - c.writeBuf[framePos+1] = b1 | 126 - binary.BigEndian.PutUint16(c.writeBuf[framePos+2:], uint16(length)) - default: - framePos += 8 - c.writeBuf[framePos] = b0 - c.writeBuf[framePos+1] = b1 | byte(length) - } - - if !c.isServer { - key := newMaskKey() - copy(c.writeBuf[maxFrameHeaderSize-4:], key[:]) - maskBytes(key, 0, c.writeBuf[maxFrameHeaderSize:c.writePos]) - if len(extra) > 0 { - c.writeErr = errors.New("websocket: internal error, extra used in client mode") - return c.writeErr - } - } - - // Write the buffers to the connection. - c.writeErr = c.write(c.writeFrameType, c.writeDeadline, c.writeBuf[framePos:c.writePos], extra) - - // Setup for next frame. - c.writePos = maxFrameHeaderSize - c.writeFrameType = continuationFrame - if final { - c.writeSeq++ - c.writeFrameType = noFrame - } - return c.writeErr -} - -type messageWriter struct { - c *Conn - seq int -} - -func (w messageWriter) err() error { - c := w.c - if c.writeSeq != w.seq { - return errWriteClosed - } - if c.writeErr != nil { - return c.writeErr - } - return nil -} - -func (w messageWriter) ncopy(max int) (int, error) { - n := len(w.c.writeBuf) - w.c.writePos - if n <= 0 { - if err := w.c.flushFrame(false, nil); err != nil { - return 0, err - } - n = len(w.c.writeBuf) - w.c.writePos - } - if n > max { - n = max - } - return n, nil -} - -func (w messageWriter) write(final bool, p []byte) (int, error) { - if err := w.err(); err != nil { - return 0, err - } - - if len(p) > 2*len(w.c.writeBuf) && w.c.isServer { - // Don't buffer large messages. - err := w.c.flushFrame(final, p) - if err != nil { - return 0, err - } - return len(p), nil - } - - nn := len(p) - for len(p) > 0 { - n, err := w.ncopy(len(p)) - if err != nil { - return 0, err - } - copy(w.c.writeBuf[w.c.writePos:], p[:n]) - w.c.writePos += n - p = p[n:] - } - return nn, nil -} - -func (w messageWriter) Write(p []byte) (int, error) { - return w.write(false, p) -} - -func (w messageWriter) WriteString(p string) (int, error) { - if err := w.err(); err != nil { - return 0, err - } - - nn := len(p) - for len(p) > 0 { - n, err := w.ncopy(len(p)) - if err != nil { - return 0, err - } - copy(w.c.writeBuf[w.c.writePos:], p[:n]) - w.c.writePos += n - p = p[n:] - } - return nn, nil -} - -func (w messageWriter) ReadFrom(r io.Reader) (nn int64, err error) { - if err := w.err(); err != nil { - return 0, err - } - for { - if w.c.writePos == len(w.c.writeBuf) { - err = w.c.flushFrame(false, nil) - if err != nil { - break - } - } - var n int - n, err = r.Read(w.c.writeBuf[w.c.writePos:]) - w.c.writePos += n - nn += int64(n) - if err != nil { - if err == io.EOF { - err = nil - } - break - } - } - return nn, err -} - -func (w messageWriter) Close() error { - if err := w.err(); err != nil { - return err - } - return w.c.flushFrame(true, nil) -} - -// WriteMessage is a helper method for getting a writer using NextWriter, -// writing the message and closing the writer. -func (c *Conn) WriteMessage(messageType int, data []byte) error { - wr, err := c.NextWriter(messageType) - if err != nil { - return err - } - w := wr.(messageWriter) - if _, err := w.write(true, data); err != nil { - return err - } - if c.writeSeq == w.seq { - if err := c.flushFrame(true, nil); err != nil { - return err - } - } - return nil -} - -// SetWriteDeadline sets the write deadline on the underlying network -// connection. After a write has timed out, the websocket state is corrupt and -// all future writes will return an error. A zero value for t means writes will -// not time out. -func (c *Conn) SetWriteDeadline(t time.Time) error { - c.writeDeadline = t - return nil -} - -// Read methods - -// readFull is like io.ReadFull except that io.EOF is never returned. -func (c *Conn) readFull(p []byte) (err error) { - var n int - for n < len(p) && err == nil { - var nn int - nn, err = c.br.Read(p[n:]) - n += nn - } - if n == len(p) { - err = nil - } else if err == io.EOF { - err = errUnexpectedEOF - } - return -} - -func (c *Conn) advanceFrame() (int, error) { - - // 1. Skip remainder of previous frame. - - if c.readRemaining > 0 { - if _, err := io.CopyN(ioutil.Discard, c.br, c.readRemaining); err != nil { - return noFrame, err - } - } - - // 2. Read and parse first two bytes of frame header. - - var b [8]byte - if err := c.readFull(b[:2]); err != nil { - return noFrame, err - } - - final := b[0]&finalBit != 0 - frameType := int(b[0] & 0xf) - reserved := int((b[0] >> 4) & 0x7) - mask := b[1]&maskBit != 0 - c.readRemaining = int64(b[1] & 0x7f) - - if reserved != 0 { - return noFrame, c.handleProtocolError("unexpected reserved bits " + strconv.Itoa(reserved)) - } - - switch frameType { - case CloseMessage, PingMessage, PongMessage: - if c.readRemaining > maxControlFramePayloadSize { - return noFrame, c.handleProtocolError("control frame length > 125") - } - if !final { - return noFrame, c.handleProtocolError("control frame not final") - } - case TextMessage, BinaryMessage: - if !c.readFinal { - return noFrame, c.handleProtocolError("message start before final message frame") - } - c.readFinal = final - case continuationFrame: - if c.readFinal { - return noFrame, c.handleProtocolError("continuation after final message frame") - } - c.readFinal = final - default: - return noFrame, c.handleProtocolError("unknown opcode " + strconv.Itoa(frameType)) - } - - // 3. Read and parse frame length. - - switch c.readRemaining { - case 126: - if err := c.readFull(b[:2]); err != nil { - return noFrame, err - } - c.readRemaining = int64(binary.BigEndian.Uint16(b[:2])) - case 127: - if err := c.readFull(b[:8]); err != nil { - return noFrame, err - } - c.readRemaining = int64(binary.BigEndian.Uint64(b[:8])) - } - - // 4. Handle frame masking. - - if mask != c.isServer { - return noFrame, c.handleProtocolError("incorrect mask flag") - } - - if mask { - c.readMaskPos = 0 - if err := c.readFull(c.readMaskKey[:]); err != nil { - return noFrame, err - } - } - - // 5. For text and binary messages, enforce read limit and return. - - if frameType == continuationFrame || frameType == TextMessage || frameType == BinaryMessage { - - c.readLength += c.readRemaining - if c.readLimit > 0 && c.readLength > c.readLimit { - c.WriteControl(CloseMessage, FormatCloseMessage(CloseMessageTooBig, ""), time.Now().Add(writeWait)) - return noFrame, ErrReadLimit - } - - return frameType, nil - } - - // 6. Read control frame payload. - - var payload []byte - if c.readRemaining > 0 { - payload = make([]byte, c.readRemaining) - c.readRemaining = 0 - if err := c.readFull(payload); err != nil { - return noFrame, err - } - if c.isServer { - maskBytes(c.readMaskKey, 0, payload) - } - } - - // 7. Process control frame payload. - - switch frameType { - case PongMessage: - if err := c.handlePong(string(payload)); err != nil { - return noFrame, err - } - case PingMessage: - if err := c.handlePing(string(payload)); err != nil { - return noFrame, err - } - case CloseMessage: - c.WriteControl(CloseMessage, []byte{}, time.Now().Add(writeWait)) - closeCode := CloseNoStatusReceived - closeText := "" - if len(payload) >= 2 { - closeCode = int(binary.BigEndian.Uint16(payload)) - closeText = string(payload[2:]) - } - switch closeCode { - case CloseNormalClosure, CloseGoingAway: - return noFrame, io.EOF - default: - return noFrame, &closeError{code: closeCode, text: closeText} - } - } - - return frameType, nil -} - -func (c *Conn) handleProtocolError(message string) error { - c.WriteControl(CloseMessage, FormatCloseMessage(CloseProtocolError, message), time.Now().Add(writeWait)) - return errors.New("websocket: " + message) -} - -// NextReader returns the next data message received from the peer. The -// returned messageType is either TextMessage or BinaryMessage. -// -// There can be at most one open reader on a connection. NextReader discards -// the previous message if the application has not already consumed it. -// -// The NextReader method and the readers returned from the method cannot be -// accessed by more than one goroutine at a time. -func (c *Conn) NextReader() (messageType int, r io.Reader, err error) { - - c.readSeq++ - c.readLength = 0 - - for c.readErr == nil { - frameType, err := c.advanceFrame() - if err != nil { - c.readErr = hideTempErr(err) - break - } - if frameType == TextMessage || frameType == BinaryMessage { - return frameType, messageReader{c, c.readSeq}, nil - } - } - return noFrame, nil, c.readErr -} - -type messageReader struct { - c *Conn - seq int -} - -func (r messageReader) Read(b []byte) (int, error) { - - if r.seq != r.c.readSeq { - return 0, io.EOF - } - - for r.c.readErr == nil { - - if r.c.readRemaining > 0 { - if int64(len(b)) > r.c.readRemaining { - b = b[:r.c.readRemaining] - } - n, err := r.c.br.Read(b) - r.c.readErr = hideTempErr(err) - if r.c.isServer { - r.c.readMaskPos = maskBytes(r.c.readMaskKey, r.c.readMaskPos, b[:n]) - } - r.c.readRemaining -= int64(n) - return n, r.c.readErr - } - - if r.c.readFinal { - r.c.readSeq++ - return 0, io.EOF - } - - frameType, err := r.c.advanceFrame() - switch { - case err != nil: - r.c.readErr = hideTempErr(err) - case frameType == TextMessage || frameType == BinaryMessage: - r.c.readErr = errors.New("websocket: internal error, unexpected text or binary in Reader") - } - } - - err := r.c.readErr - if err == io.EOF && r.seq == r.c.readSeq { - err = errUnexpectedEOF - } - return 0, err -} - -// ReadMessage is a helper method for getting a reader using NextReader and -// reading from that reader to a buffer. -func (c *Conn) ReadMessage() (messageType int, p []byte, err error) { - var r io.Reader - messageType, r, err = c.NextReader() - if err != nil { - return messageType, nil, err - } - p, err = ioutil.ReadAll(r) - return messageType, p, err -} - -// SetReadDeadline sets the read deadline on the underlying network connection. -// After a read has timed out, the websocket connection state is corrupt and -// all future reads will return an error. A zero value for t means reads will -// not time out. -func (c *Conn) SetReadDeadline(t time.Time) error { - return c.conn.SetReadDeadline(t) -} - -// SetReadLimit sets the maximum size for a message read from the peer. If a -// message exceeds the limit, the connection sends a close frame to the peer -// and returns ErrReadLimit to the application. -func (c *Conn) SetReadLimit(limit int64) { - c.readLimit = limit -} - -// SetPingHandler sets the handler for ping messages received from the peer. -// The default ping handler sends a pong to the peer. -func (c *Conn) SetPingHandler(h func(string) error) { - if h == nil { - h = func(message string) error { - c.WriteControl(PongMessage, []byte(message), time.Now().Add(writeWait)) - return nil - } - } - c.handlePing = h -} - -// SetPongHandler sets the handler for pong messages received from the peer. -// The default pong handler does nothing. -func (c *Conn) SetPongHandler(h func(string) error) { - if h == nil { - h = func(string) error { return nil } - } - c.handlePong = h -} - -// UnderlyingConn returns the internal net.Conn. This can be used to further -// modifications to connection specific flags. -func (c *Conn) UnderlyingConn() net.Conn { - return c.conn -} - -// FormatCloseMessage formats closeCode and text as a WebSocket close message. -func FormatCloseMessage(closeCode int, text string) []byte { - buf := make([]byte, 2+len(text)) - binary.BigEndian.PutUint16(buf, uint16(closeCode)) - copy(buf[2:], text) - return buf -} diff --git a/vendor/github.com/gorilla/websocket/doc.go b/vendor/github.com/gorilla/websocket/doc.go deleted file mode 100644 index f52925d..0000000 --- a/vendor/github.com/gorilla/websocket/doc.go +++ /dev/null @@ -1,148 +0,0 @@ -// Copyright 2013 The Gorilla WebSocket Authors. All rights reserved. -// Use of this source code is governed by a BSD-style -// license that can be found in the LICENSE file. - -// Package websocket implements the WebSocket protocol defined in RFC 6455. -// -// Overview -// -// The Conn type represents a WebSocket connection. A server application uses -// the Upgrade function from an Upgrader object with a HTTP request handler -// to get a pointer to a Conn: -// -// var upgrader = websocket.Upgrader{ -// ReadBufferSize: 1024, -// WriteBufferSize: 1024, -// } -// -// func handler(w http.ResponseWriter, r *http.Request) { -// conn, err := upgrader.Upgrade(w, r, nil) -// if err != nil { -// log.Println(err) -// return -// } -// ... Use conn to send and receive messages. -// } -// -// Call the connection's WriteMessage and ReadMessage methods to send and -// receive messages as a slice of bytes. This snippet of code shows how to echo -// messages using these methods: -// -// for { -// messageType, p, err := conn.ReadMessage() -// if err != nil { -// return -// } -// if err = conn.WriteMessage(messageType, p); err != nil { -// return err -// } -// } -// -// In above snippet of code, p is a []byte and messageType is an int with value -// websocket.BinaryMessage or websocket.TextMessage. -// -// An application can also send and receive messages using the io.WriteCloser -// and io.Reader interfaces. To send a message, call the connection NextWriter -// method to get an io.WriteCloser, write the message to the writer and close -// the writer when done. To receive a message, call the connection NextReader -// method to get an io.Reader and read until io.EOF is returned. This snippet -// snippet shows how to echo messages using the NextWriter and NextReader -// methods: -// -// for { -// messageType, r, err := conn.NextReader() -// if err != nil { -// return -// } -// w, err := conn.NextWriter(messageType) -// if err != nil { -// return err -// } -// if _, err := io.Copy(w, r); err != nil { -// return err -// } -// if err := w.Close(); err != nil { -// return err -// } -// } -// -// Data Messages -// -// The WebSocket protocol distinguishes between text and binary data messages. -// Text messages are interpreted as UTF-8 encoded text. The interpretation of -// binary messages is left to the application. -// -// This package uses the TextMessage and BinaryMessage integer constants to -// identify the two data message types. The ReadMessage and NextReader methods -// return the type of the received message. The messageType argument to the -// WriteMessage and NextWriter methods specifies the type of a sent message. -// -// It is the application's responsibility to ensure that text messages are -// valid UTF-8 encoded text. -// -// Control Messages -// -// The WebSocket protocol defines three types of control messages: close, ping -// and pong. Call the connection WriteControl, WriteMessage or NextWriter -// methods to send a control message to the peer. -// -// Connections handle received ping and pong messages by invoking a callback -// function set with SetPingHandler and SetPongHandler methods. These callback -// functions can be invoked from the ReadMessage method, the NextReader method -// or from a call to the data message reader returned from NextReader. -// -// Connections handle received close messages by returning an error from the -// ReadMessage method, the NextReader method or from a call to the data message -// reader returned from NextReader. -// -// Concurrency -// -// Connections do not support concurrent calls to the write methods -// (NextWriter, SetWriteDeadline, WriteMessage) or concurrent calls to the read -// methods methods (NextReader, SetReadDeadline, ReadMessage). Connections do -// support a concurrent reader and writer. -// -// The Close and WriteControl methods can be called concurrently with all other -// methods. -// -// Read is Required -// -// The application must read the connection to process ping and close messages -// sent from the peer. If the application is not otherwise interested in -// messages from the peer, then the application should start a goroutine to read -// and discard messages from the peer. A simple example is: -// -// func readLoop(c *websocket.Conn) { -// for { -// if _, _, err := c.NextReader(); err != nil { -// c.Close() -// break -// } -// } -// } -// -// Origin Considerations -// -// Web browsers allow Javascript applications to open a WebSocket connection to -// any host. It's up to the server to enforce an origin policy using the Origin -// request header sent by the browser. -// -// The Upgrader calls the function specified in the CheckOrigin field to check -// the origin. If the CheckOrigin function returns false, then the Upgrade -// method fails the WebSocket handshake with HTTP status 403. -// -// If the CheckOrigin field is nil, then the Upgrader uses a safe default: fail -// the handshake if the Origin request header is present and not equal to the -// Host request header. -// -// An application can allow connections from any origin by specifying a -// function that always returns true: -// -// var upgrader = websocket.Upgrader{ -// CheckOrigin: func(r *http.Request) bool { return true }, -// } -// -// The deprecated Upgrade function does not enforce an origin policy. It's the -// application's responsibility to check the Origin header before calling -// Upgrade. -package websocket diff --git a/vendor/github.com/gorilla/websocket/json.go b/vendor/github.com/gorilla/websocket/json.go deleted file mode 100644 index 18e62f2..0000000 --- a/vendor/github.com/gorilla/websocket/json.go +++ /dev/null @@ -1,57 +0,0 @@ -// Copyright 2013 The Gorilla WebSocket Authors. All rights reserved. -// Use of this source code is governed by a BSD-style -// license that can be found in the LICENSE file. - -package websocket - -import ( - "encoding/json" - "io" -) - -// WriteJSON is deprecated, use c.WriteJSON instead. -func WriteJSON(c *Conn, v interface{}) error { - return c.WriteJSON(v) -} - -// WriteJSON writes the JSON encoding of v to the connection. -// -// See the documentation for encoding/json Marshal for details about the -// conversion of Go values to JSON. -func (c *Conn) WriteJSON(v interface{}) error { - w, err := c.NextWriter(TextMessage) - if err != nil { - return err - } - err1 := json.NewEncoder(w).Encode(v) - err2 := w.Close() - if err1 != nil { - return err1 - } - return err2 -} - -// ReadJSON is deprecated, use c.ReadJSON instead. -func ReadJSON(c *Conn, v interface{}) error { - return c.ReadJSON(v) -} - -// ReadJSON reads the next JSON-encoded message from the connection and stores -// it in the value pointed to by v. -// -// See the documentation for the encoding/json Unmarshal function for details -// about the conversion of JSON to a Go value. -func (c *Conn) ReadJSON(v interface{}) error { - _, r, err := c.NextReader() - if err != nil { - return err - } - err = json.NewDecoder(r).Decode(v) - if err == io.EOF { - // Decode returns io.EOF when the message is empty or all whitespace. - // Convert to io.ErrUnexpectedEOF so that application can distinguish - // between an error reading the JSON value and the connection closing. - err = io.ErrUnexpectedEOF - } - return err -} diff --git a/vendor/github.com/gorilla/websocket/server.go b/vendor/github.com/gorilla/websocket/server.go deleted file mode 100644 index e56a004..0000000 --- a/vendor/github.com/gorilla/websocket/server.go +++ /dev/null @@ -1,247 +0,0 @@ -// Copyright 2013 The Gorilla WebSocket Authors. All rights reserved. -// Use of this source code is governed by a BSD-style -// license that can be found in the LICENSE file. - -package websocket - -import ( - "bufio" - "errors" - "net" - "net/http" - "net/url" - "strings" - "time" -) - -// HandshakeError describes an error with the handshake from the peer. -type HandshakeError struct { - message string -} - -func (e HandshakeError) Error() string { return e.message } - -// Upgrader specifies parameters for upgrading an HTTP connection to a -// WebSocket connection. -type Upgrader struct { - // HandshakeTimeout specifies the duration for the handshake to complete. - HandshakeTimeout time.Duration - - // ReadBufferSize and WriteBufferSize specify I/O buffer sizes. If a buffer - // size is zero, then a default value of 4096 is used. The I/O buffer sizes - // do not limit the size of the messages that can be sent or received. - ReadBufferSize, WriteBufferSize int - - // Subprotocols specifies the server's supported protocols in order of - // preference. If this field is set, then the Upgrade method negotiates a - // subprotocol by selecting the first match in this list with a protocol - // requested by the client. - Subprotocols []string - - // Error specifies the function for generating HTTP error responses. If Error - // is nil, then http.Error is used to generate the HTTP response. - Error func(w http.ResponseWriter, r *http.Request, status int, reason error) - - // CheckOrigin returns true if the request Origin header is acceptable. If - // CheckOrigin is nil, the host in the Origin header must not be set or - // must match the host of the request. - CheckOrigin func(r *http.Request) bool -} - -func (u *Upgrader) returnError(w http.ResponseWriter, r *http.Request, status int, reason string) (*Conn, error) { - err := HandshakeError{reason} - if u.Error != nil { - u.Error(w, r, status, err) - } else { - http.Error(w, http.StatusText(status), status) - } - return nil, err -} - -// checkSameOrigin returns true if the origin is not set or is equal to the request host. -func checkSameOrigin(r *http.Request) bool { - origin := r.Header["Origin"] - if len(origin) == 0 { - return true - } - u, err := url.Parse(origin[0]) - if err != nil { - return false - } - return u.Host == r.Host -} - -func (u *Upgrader) selectSubprotocol(r *http.Request, responseHeader http.Header) string { - if u.Subprotocols != nil { - clientProtocols := Subprotocols(r) - for _, serverProtocol := range u.Subprotocols { - for _, clientProtocol := range clientProtocols { - if clientProtocol == serverProtocol { - return clientProtocol - } - } - } - } else if responseHeader != nil { - return responseHeader.Get("Sec-Websocket-Protocol") - } - return "" -} - -// Upgrade upgrades the HTTP server connection to the WebSocket protocol. -// -// The responseHeader is included in the response to the client's upgrade -// request. Use the responseHeader to specify cookies (Set-Cookie) and the -// application negotiated subprotocol (Sec-Websocket-Protocol). -func (u *Upgrader) Upgrade(w http.ResponseWriter, r *http.Request, responseHeader http.Header) (*Conn, error) { - if values := r.Header["Sec-Websocket-Version"]; len(values) == 0 || values[0] != "13" { - return u.returnError(w, r, http.StatusBadRequest, "websocket: version != 13") - } - - if !tokenListContainsValue(r.Header, "Connection", "upgrade") { - return u.returnError(w, r, http.StatusBadRequest, "websocket: could not find connection header with token 'upgrade'") - } - - if !tokenListContainsValue(r.Header, "Upgrade", "websocket") { - return u.returnError(w, r, http.StatusBadRequest, "websocket: could not find upgrade header with token 'websocket'") - } - - checkOrigin := u.CheckOrigin - if checkOrigin == nil { - checkOrigin = checkSameOrigin - } - if !checkOrigin(r) { - return u.returnError(w, r, http.StatusForbidden, "websocket: origin not allowed") - } - - challengeKey := r.Header.Get("Sec-Websocket-Key") - if challengeKey == "" { - return u.returnError(w, r, http.StatusBadRequest, "websocket: key missing or blank") - } - - subprotocol := u.selectSubprotocol(r, responseHeader) - - var ( - netConn net.Conn - br *bufio.Reader - err error - ) - - h, ok := w.(http.Hijacker) - if !ok { - return u.returnError(w, r, http.StatusInternalServerError, "websocket: response does not implement http.Hijacker") - } - var rw *bufio.ReadWriter - netConn, rw, err = h.Hijack() - if err != nil { - return u.returnError(w, r, http.StatusInternalServerError, err.Error()) - } - br = rw.Reader - - if br.Buffered() > 0 { - netConn.Close() - return nil, errors.New("websocket: client sent data before handshake is complete") - } - - c := newConn(netConn, true, u.ReadBufferSize, u.WriteBufferSize) - c.subprotocol = subprotocol - - p := c.writeBuf[:0] - p = append(p, "HTTP/1.1 101 Switching Protocols\r\nUpgrade: websocket\r\nConnection: Upgrade\r\nSec-WebSocket-Accept: "...) - p = append(p, computeAcceptKey(challengeKey)...) - p = append(p, "\r\n"...) - if c.subprotocol != "" { - p = append(p, "Sec-Websocket-Protocol: "...) - p = append(p, c.subprotocol...) - p = append(p, "\r\n"...) - } - for k, vs := range responseHeader { - if k == "Sec-Websocket-Protocol" { - continue - } - for _, v := range vs { - p = append(p, k...) - p = append(p, ": "...) - for i := 0; i < len(v); i++ { - b := v[i] - if b <= 31 { - // prevent response splitting. - b = ' ' - } - p = append(p, b) - } - p = append(p, "\r\n"...) - } - } - p = append(p, "\r\n"...) - - // Clear deadlines set by HTTP server. - netConn.SetDeadline(time.Time{}) - - if u.HandshakeTimeout > 0 { - netConn.SetWriteDeadline(time.Now().Add(u.HandshakeTimeout)) - } - if _, err = netConn.Write(p); err != nil { - netConn.Close() - return nil, err - } - if u.HandshakeTimeout > 0 { - netConn.SetWriteDeadline(time.Time{}) - } - - return c, nil -} - -// Upgrade upgrades the HTTP server connection to the WebSocket protocol. -// -// This function is deprecated, use websocket.Upgrader instead. -// -// The application is responsible for checking the request origin before -// calling Upgrade. An example implementation of the same origin policy is: -// -// if req.Header.Get("Origin") != "http://"+req.Host { -// http.Error(w, "Origin not allowed", 403) -// return -// } -// -// If the endpoint supports subprotocols, then the application is responsible -// for negotiating the protocol used on the connection. Use the Subprotocols() -// function to get the subprotocols requested by the client. Use the -// Sec-Websocket-Protocol response header to specify the subprotocol selected -// by the application. -// -// The responseHeader is included in the response to the client's upgrade -// request. Use the responseHeader to specify cookies (Set-Cookie) and the -// negotiated subprotocol (Sec-Websocket-Protocol). -// -// The connection buffers IO to the underlying network connection. The -// readBufSize and writeBufSize parameters specify the size of the buffers to -// use. Messages can be larger than the buffers. -// -// If the request is not a valid WebSocket handshake, then Upgrade returns an -// error of type HandshakeError. Applications should handle this error by -// replying to the client with an HTTP error response. -func Upgrade(w http.ResponseWriter, r *http.Request, responseHeader http.Header, readBufSize, writeBufSize int) (*Conn, error) { - u := Upgrader{ReadBufferSize: readBufSize, WriteBufferSize: writeBufSize} - u.Error = func(w http.ResponseWriter, r *http.Request, status int, reason error) { - // don't return errors to maintain backwards compatibility - } - u.CheckOrigin = func(r *http.Request) bool { - // allow all connections by default - return true - } - return u.Upgrade(w, r, responseHeader) -} - -// Subprotocols returns the subprotocols requested by the client in the -// Sec-Websocket-Protocol header. -func Subprotocols(r *http.Request) []string { - h := strings.TrimSpace(r.Header.Get("Sec-Websocket-Protocol")) - if h == "" { - return nil - } - protocols := strings.Split(h, ",") - for i := range protocols { - protocols[i] = strings.TrimSpace(protocols[i]) - } - return protocols -} diff --git a/vendor/github.com/gorilla/websocket/util.go b/vendor/github.com/gorilla/websocket/util.go deleted file mode 100644 index ffdc265..0000000 --- a/vendor/github.com/gorilla/websocket/util.go +++ /dev/null @@ -1,44 +0,0 @@ -// Copyright 2013 The Gorilla WebSocket Authors. All rights reserved. -// Use of this source code is governed by a BSD-style -// license that can be found in the LICENSE file. - -package websocket - -import ( - "crypto/rand" - "crypto/sha1" - "encoding/base64" - "io" - "net/http" - "strings" -) - -// tokenListContainsValue returns true if the 1#token header with the given -// name contains token. -func tokenListContainsValue(header http.Header, name string, value string) bool { - for _, v := range header[name] { - for _, s := range strings.Split(v, ",") { - if strings.EqualFold(value, strings.TrimSpace(s)) { - return true - } - } - } - return false -} - -var keyGUID = []byte("258EAFA5-E914-47DA-95CA-C5AB0DC85B11") - -func computeAcceptKey(challengeKey string) string { - h := sha1.New() - h.Write([]byte(challengeKey)) - h.Write(keyGUID) - return base64.StdEncoding.EncodeToString(h.Sum(nil)) -} - -func generateChallengeKey() (string, error) { - p := make([]byte, 16) - if _, err := io.ReadFull(rand.Reader, p); err != nil { - return "", err - } - return base64.StdEncoding.EncodeToString(p), nil -} diff --git a/vendor/github.com/kr/pty/License b/vendor/github.com/kr/pty/License deleted file mode 100644 index 6b7558b..0000000 --- a/vendor/github.com/kr/pty/License +++ /dev/null @@ -1,23 +0,0 @@ -Copyright (c) 2011 Keith Rarick - -Permission is hereby granted, free of charge, to any person -obtaining a copy of this software and associated -documentation files (the "Software"), to deal in the -Software without restriction, including without limitation -the rights to use, copy, modify, merge, publish, distribute, -sublicense, and/or sell copies of the Software, and to -permit persons to whom the Software is furnished to do so, -subject to the following conditions: - -The above copyright notice and this permission notice shall -be included in all copies or substantial portions of the -Software. - -THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY -KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE -WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR -PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS -OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR -OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR -OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE -SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. diff --git a/vendor/github.com/kr/pty/README.md b/vendor/github.com/kr/pty/README.md deleted file mode 100644 index 7b7900c..0000000 --- a/vendor/github.com/kr/pty/README.md +++ /dev/null @@ -1,36 +0,0 @@ -# pty - -Pty is a Go package for using unix pseudo-terminals. - -## Install - - go get github.com/kr/pty - -## Example - -```go -package main - -import ( - "github.com/kr/pty" - "io" - "os" - "os/exec" -) - -func main() { - c := exec.Command("grep", "--color=auto", "bar") - f, err := pty.Start(c) - if err != nil { - panic(err) - } - - go func() { - f.Write([]byte("foo\n")) - f.Write([]byte("bar\n")) - f.Write([]byte("baz\n")) - f.Write([]byte{4}) // EOT - }() - io.Copy(os.Stdout, f) -} -``` diff --git a/vendor/github.com/kr/pty/doc.go b/vendor/github.com/kr/pty/doc.go deleted file mode 100644 index 190cfbe..0000000 --- a/vendor/github.com/kr/pty/doc.go +++ /dev/null @@ -1,16 +0,0 @@ -// Package pty provides functions for working with Unix terminals. -package pty - -import ( - "errors" - "os" -) - -// ErrUnsupported is returned if a function is not -// available on the current platform. -var ErrUnsupported = errors.New("unsupported") - -// Opens a pty and its corresponding tty. -func Open() (pty, tty *os.File, err error) { - return open() -} diff --git a/vendor/github.com/kr/pty/ioctl.go b/vendor/github.com/kr/pty/ioctl.go deleted file mode 100644 index c57c19e..0000000 --- a/vendor/github.com/kr/pty/ioctl.go +++ /dev/null @@ -1,13 +0,0 @@ -// +build !windows - -package pty - -import "syscall" - -func ioctl(fd, cmd, ptr uintptr) error { - _, _, e := syscall.Syscall(syscall.SYS_IOCTL, fd, cmd, ptr) - if e != 0 { - return e - } - return nil -} diff --git a/vendor/github.com/kr/pty/ioctl_bsd.go b/vendor/github.com/kr/pty/ioctl_bsd.go deleted file mode 100644 index 73b12c5..0000000 --- a/vendor/github.com/kr/pty/ioctl_bsd.go +++ /dev/null @@ -1,39 +0,0 @@ -// +build darwin dragonfly freebsd netbsd openbsd - -package pty - -// from -const ( - _IOC_VOID uintptr = 0x20000000 - _IOC_OUT uintptr = 0x40000000 - _IOC_IN uintptr = 0x80000000 - _IOC_IN_OUT uintptr = _IOC_OUT | _IOC_IN - _IOC_DIRMASK = _IOC_VOID | _IOC_OUT | _IOC_IN - - _IOC_PARAM_SHIFT = 13 - _IOC_PARAM_MASK = (1 << _IOC_PARAM_SHIFT) - 1 -) - -func _IOC_PARM_LEN(ioctl uintptr) uintptr { - return (ioctl >> 16) & _IOC_PARAM_MASK -} - -func _IOC(inout uintptr, group byte, ioctl_num uintptr, param_len uintptr) uintptr { - return inout | (param_len&_IOC_PARAM_MASK)<<16 | uintptr(group)<<8 | ioctl_num -} - -func _IO(group byte, ioctl_num uintptr) uintptr { - return _IOC(_IOC_VOID, group, ioctl_num, 0) -} - -func _IOR(group byte, ioctl_num uintptr, param_len uintptr) uintptr { - return _IOC(_IOC_OUT, group, ioctl_num, param_len) -} - -func _IOW(group byte, ioctl_num uintptr, param_len uintptr) uintptr { - return _IOC(_IOC_IN, group, ioctl_num, param_len) -} - -func _IOWR(group byte, ioctl_num uintptr, param_len uintptr) uintptr { - return _IOC(_IOC_IN_OUT, group, ioctl_num, param_len) -} diff --git a/vendor/github.com/kr/pty/mktypes.bash b/vendor/github.com/kr/pty/mktypes.bash deleted file mode 100644 index 0c07680..0000000 --- a/vendor/github.com/kr/pty/mktypes.bash +++ /dev/null @@ -1,19 +0,0 @@ -#!/usr/bin/env bash - -GOOSARCH="${GOOS}_${GOARCH}" -case "$GOOSARCH" in -_* | *_ | _) - echo 'undefined $GOOS_$GOARCH:' "$GOOSARCH" 1>&2 - exit 1 - ;; -esac - -GODEFS="go tool cgo -godefs" - -$GODEFS types.go |gofmt > ztypes_$GOARCH.go - -case $GOOS in -freebsd|dragonfly) - $GODEFS types_$GOOS.go |gofmt > ztypes_$GOOSARCH.go - ;; -esac diff --git a/vendor/github.com/kr/pty/pty_darwin.go b/vendor/github.com/kr/pty/pty_darwin.go deleted file mode 100644 index 4f4d5ca..0000000 --- a/vendor/github.com/kr/pty/pty_darwin.go +++ /dev/null @@ -1,60 +0,0 @@ -package pty - -import ( - "errors" - "os" - "syscall" - "unsafe" -) - -func open() (pty, tty *os.File, err error) { - p, err := os.OpenFile("/dev/ptmx", os.O_RDWR, 0) - if err != nil { - return nil, nil, err - } - - sname, err := ptsname(p) - if err != nil { - return nil, nil, err - } - - err = grantpt(p) - if err != nil { - return nil, nil, err - } - - err = unlockpt(p) - if err != nil { - return nil, nil, err - } - - t, err := os.OpenFile(sname, os.O_RDWR, 0) - if err != nil { - return nil, nil, err - } - return p, t, nil -} - -func ptsname(f *os.File) (string, error) { - n := make([]byte, _IOC_PARM_LEN(syscall.TIOCPTYGNAME)) - - err := ioctl(f.Fd(), syscall.TIOCPTYGNAME, uintptr(unsafe.Pointer(&n[0]))) - if err != nil { - return "", err - } - - for i, c := range n { - if c == 0 { - return string(n[:i]), nil - } - } - return "", errors.New("TIOCPTYGNAME string not NUL-terminated") -} - -func grantpt(f *os.File) error { - return ioctl(f.Fd(), syscall.TIOCPTYGRANT, 0) -} - -func unlockpt(f *os.File) error { - return ioctl(f.Fd(), syscall.TIOCPTYUNLK, 0) -} diff --git a/vendor/github.com/kr/pty/pty_dragonfly.go b/vendor/github.com/kr/pty/pty_dragonfly.go deleted file mode 100644 index 5431fb5..0000000 --- a/vendor/github.com/kr/pty/pty_dragonfly.go +++ /dev/null @@ -1,76 +0,0 @@ -package pty - -import ( - "errors" - "os" - "strings" - "syscall" - "unsafe" -) - -// same code as pty_darwin.go -func open() (pty, tty *os.File, err error) { - p, err := os.OpenFile("/dev/ptmx", os.O_RDWR, 0) - if err != nil { - return nil, nil, err - } - - sname, err := ptsname(p) - if err != nil { - return nil, nil, err - } - - err = grantpt(p) - if err != nil { - return nil, nil, err - } - - err = unlockpt(p) - if err != nil { - return nil, nil, err - } - - t, err := os.OpenFile(sname, os.O_RDWR, 0) - if err != nil { - return nil, nil, err - } - return p, t, nil -} - -func grantpt(f *os.File) error { - _, err := isptmaster(f.Fd()) - return err -} - -func unlockpt(f *os.File) error { - _, err := isptmaster(f.Fd()) - return err -} - -func isptmaster(fd uintptr) (bool, error) { - err := ioctl(fd, syscall.TIOCISPTMASTER, 0) - return err == nil, err -} - -var ( - emptyFiodgnameArg fiodgnameArg - ioctl_FIODNAME = _IOW('f', 120, unsafe.Sizeof(emptyFiodgnameArg)) -) - -func ptsname(f *os.File) (string, error) { - name := make([]byte, _C_SPECNAMELEN) - fa := fiodgnameArg{Name: (*byte)(unsafe.Pointer(&name[0])), Len: _C_SPECNAMELEN, Pad_cgo_0: [4]byte{0, 0, 0, 0}} - - err := ioctl(f.Fd(), ioctl_FIODNAME, uintptr(unsafe.Pointer(&fa))) - if err != nil { - return "", err - } - - for i, c := range name { - if c == 0 { - s := "/dev/" + string(name[:i]) - return strings.Replace(s, "ptm", "pts", -1), nil - } - } - return "", errors.New("TIOCPTYGNAME string not NUL-terminated") -} diff --git a/vendor/github.com/kr/pty/pty_freebsd.go b/vendor/github.com/kr/pty/pty_freebsd.go deleted file mode 100644 index b341bab..0000000 --- a/vendor/github.com/kr/pty/pty_freebsd.go +++ /dev/null @@ -1,73 +0,0 @@ -package pty - -import ( - "errors" - "os" - "syscall" - "unsafe" -) - -func posix_openpt(oflag int) (fd int, err error) { - r0, _, e1 := syscall.Syscall(syscall.SYS_POSIX_OPENPT, uintptr(oflag), 0, 0) - fd = int(r0) - if e1 != 0 { - err = e1 - } - return -} - -func open() (pty, tty *os.File, err error) { - fd, err := posix_openpt(syscall.O_RDWR | syscall.O_CLOEXEC) - if err != nil { - return nil, nil, err - } - - p := os.NewFile(uintptr(fd), "/dev/pts") - sname, err := ptsname(p) - if err != nil { - return nil, nil, err - } - - t, err := os.OpenFile("/dev/"+sname, os.O_RDWR, 0) - if err != nil { - return nil, nil, err - } - return p, t, nil -} - -func isptmaster(fd uintptr) (bool, error) { - err := ioctl(fd, syscall.TIOCPTMASTER, 0) - return err == nil, err -} - -var ( - emptyFiodgnameArg fiodgnameArg - ioctl_FIODGNAME = _IOW('f', 120, unsafe.Sizeof(emptyFiodgnameArg)) -) - -func ptsname(f *os.File) (string, error) { - master, err := isptmaster(f.Fd()) - if err != nil { - return "", err - } - if !master { - return "", syscall.EINVAL - } - - const n = _C_SPECNAMELEN + 1 - var ( - buf = make([]byte, n) - arg = fiodgnameArg{Len: n, Buf: (*byte)(unsafe.Pointer(&buf[0]))} - ) - err = ioctl(f.Fd(), ioctl_FIODGNAME, uintptr(unsafe.Pointer(&arg))) - if err != nil { - return "", err - } - - for i, c := range buf { - if c == 0 { - return string(buf[:i]), nil - } - } - return "", errors.New("FIODGNAME string not NUL-terminated") -} diff --git a/vendor/github.com/kr/pty/pty_linux.go b/vendor/github.com/kr/pty/pty_linux.go deleted file mode 100644 index cb901a2..0000000 --- a/vendor/github.com/kr/pty/pty_linux.go +++ /dev/null @@ -1,46 +0,0 @@ -package pty - -import ( - "os" - "strconv" - "syscall" - "unsafe" -) - -func open() (pty, tty *os.File, err error) { - p, err := os.OpenFile("/dev/ptmx", os.O_RDWR, 0) - if err != nil { - return nil, nil, err - } - - sname, err := ptsname(p) - if err != nil { - return nil, nil, err - } - - err = unlockpt(p) - if err != nil { - return nil, nil, err - } - - t, err := os.OpenFile(sname, os.O_RDWR|syscall.O_NOCTTY, 0) - if err != nil { - return nil, nil, err - } - return p, t, nil -} - -func ptsname(f *os.File) (string, error) { - var n _C_uint - err := ioctl(f.Fd(), syscall.TIOCGPTN, uintptr(unsafe.Pointer(&n))) - if err != nil { - return "", err - } - return "/dev/pts/" + strconv.Itoa(int(n)), nil -} - -func unlockpt(f *os.File) error { - var u _C_int - // use TIOCSPTLCK with a zero valued arg to clear the slave pty lock - return ioctl(f.Fd(), syscall.TIOCSPTLCK, uintptr(unsafe.Pointer(&u))) -} diff --git a/vendor/github.com/kr/pty/pty_unsupported.go b/vendor/github.com/kr/pty/pty_unsupported.go deleted file mode 100644 index bd3d1e7..0000000 --- a/vendor/github.com/kr/pty/pty_unsupported.go +++ /dev/null @@ -1,11 +0,0 @@ -// +build !linux,!darwin,!freebsd,!dragonfly - -package pty - -import ( - "os" -) - -func open() (pty, tty *os.File, err error) { - return nil, nil, ErrUnsupported -} diff --git a/vendor/github.com/kr/pty/run.go b/vendor/github.com/kr/pty/run.go deleted file mode 100644 index baecca8..0000000 --- a/vendor/github.com/kr/pty/run.go +++ /dev/null @@ -1,34 +0,0 @@ -// +build !windows - -package pty - -import ( - "os" - "os/exec" - "syscall" -) - -// Start assigns a pseudo-terminal tty os.File to c.Stdin, c.Stdout, -// and c.Stderr, calls c.Start, and returns the File of the tty's -// corresponding pty. -func Start(c *exec.Cmd) (pty *os.File, err error) { - pty, tty, err := Open() - if err != nil { - return nil, err - } - defer tty.Close() - c.Stdout = tty - c.Stdin = tty - c.Stderr = tty - if c.SysProcAttr == nil { - c.SysProcAttr = &syscall.SysProcAttr{} - } - c.SysProcAttr.Setctty = true - c.SysProcAttr.Setsid = true - err = c.Start() - if err != nil { - pty.Close() - return nil, err - } - return pty, err -} diff --git a/vendor/github.com/kr/pty/util.go b/vendor/github.com/kr/pty/util.go deleted file mode 100644 index a4fab9a..0000000 --- a/vendor/github.com/kr/pty/util.go +++ /dev/null @@ -1,37 +0,0 @@ -// +build !windows - -package pty - -import ( - "os" - "syscall" - "unsafe" -) - -// Getsize returns the number of rows (lines) and cols (positions -// in each line) in terminal t. -func Getsize(t *os.File) (rows, cols int, err error) { - var ws winsize - err = windowrect(&ws, t.Fd()) - return int(ws.ws_row), int(ws.ws_col), err -} - -type winsize struct { - ws_row uint16 - ws_col uint16 - ws_xpixel uint16 - ws_ypixel uint16 -} - -func windowrect(ws *winsize, fd uintptr) error { - _, _, errno := syscall.Syscall( - syscall.SYS_IOCTL, - fd, - syscall.TIOCGWINSZ, - uintptr(unsafe.Pointer(ws)), - ) - if errno != 0 { - return syscall.Errno(errno) - } - return nil -} diff --git a/vendor/github.com/kr/pty/ztypes_386.go b/vendor/github.com/kr/pty/ztypes_386.go deleted file mode 100644 index ff0b8fd..0000000 --- a/vendor/github.com/kr/pty/ztypes_386.go +++ /dev/null @@ -1,9 +0,0 @@ -// Created by cgo -godefs - DO NOT EDIT -// cgo -godefs types.go - -package pty - -type ( - _C_int int32 - _C_uint uint32 -) diff --git a/vendor/github.com/kr/pty/ztypes_amd64.go b/vendor/github.com/kr/pty/ztypes_amd64.go deleted file mode 100644 index ff0b8fd..0000000 --- a/vendor/github.com/kr/pty/ztypes_amd64.go +++ /dev/null @@ -1,9 +0,0 @@ -// Created by cgo -godefs - DO NOT EDIT -// cgo -godefs types.go - -package pty - -type ( - _C_int int32 - _C_uint uint32 -) diff --git a/vendor/github.com/kr/pty/ztypes_arm.go b/vendor/github.com/kr/pty/ztypes_arm.go deleted file mode 100644 index ff0b8fd..0000000 --- a/vendor/github.com/kr/pty/ztypes_arm.go +++ /dev/null @@ -1,9 +0,0 @@ -// Created by cgo -godefs - DO NOT EDIT -// cgo -godefs types.go - -package pty - -type ( - _C_int int32 - _C_uint uint32 -) diff --git a/vendor/github.com/kr/pty/ztypes_arm64.go b/vendor/github.com/kr/pty/ztypes_arm64.go deleted file mode 100644 index 6c29a4b..0000000 --- a/vendor/github.com/kr/pty/ztypes_arm64.go +++ /dev/null @@ -1,11 +0,0 @@ -// Created by cgo -godefs - DO NOT EDIT -// cgo -godefs types.go - -// +build arm64 - -package pty - -type ( - _C_int int32 - _C_uint uint32 -) diff --git a/vendor/github.com/kr/pty/ztypes_dragonfly_amd64.go b/vendor/github.com/kr/pty/ztypes_dragonfly_amd64.go deleted file mode 100644 index 6b0ba03..0000000 --- a/vendor/github.com/kr/pty/ztypes_dragonfly_amd64.go +++ /dev/null @@ -1,14 +0,0 @@ -// Created by cgo -godefs - DO NOT EDIT -// cgo -godefs types_dragonfly.go - -package pty - -const ( - _C_SPECNAMELEN = 0x3f -) - -type fiodgnameArg struct { - Name *byte - Len uint32 - Pad_cgo_0 [4]byte -} diff --git a/vendor/github.com/kr/pty/ztypes_freebsd_386.go b/vendor/github.com/kr/pty/ztypes_freebsd_386.go deleted file mode 100644 index d997537..0000000 --- a/vendor/github.com/kr/pty/ztypes_freebsd_386.go +++ /dev/null @@ -1,13 +0,0 @@ -// Created by cgo -godefs - DO NOT EDIT -// cgo -godefs types_freebsd.go - -package pty - -const ( - _C_SPECNAMELEN = 0x3f -) - -type fiodgnameArg struct { - Len int32 - Buf *byte -} diff --git a/vendor/github.com/kr/pty/ztypes_freebsd_amd64.go b/vendor/github.com/kr/pty/ztypes_freebsd_amd64.go deleted file mode 100644 index 5fa102f..0000000 --- a/vendor/github.com/kr/pty/ztypes_freebsd_amd64.go +++ /dev/null @@ -1,14 +0,0 @@ -// Created by cgo -godefs - DO NOT EDIT -// cgo -godefs types_freebsd.go - -package pty - -const ( - _C_SPECNAMELEN = 0x3f -) - -type fiodgnameArg struct { - Len int32 - Pad_cgo_0 [4]byte - Buf *byte -} diff --git a/vendor/github.com/kr/pty/ztypes_freebsd_arm.go b/vendor/github.com/kr/pty/ztypes_freebsd_arm.go deleted file mode 100644 index d997537..0000000 --- a/vendor/github.com/kr/pty/ztypes_freebsd_arm.go +++ /dev/null @@ -1,13 +0,0 @@ -// Created by cgo -godefs - DO NOT EDIT -// cgo -godefs types_freebsd.go - -package pty - -const ( - _C_SPECNAMELEN = 0x3f -) - -type fiodgnameArg struct { - Len int32 - Buf *byte -} diff --git a/vendor/github.com/kr/pty/ztypes_mipsx.go b/vendor/github.com/kr/pty/ztypes_mipsx.go deleted file mode 100644 index f0ce740..0000000 --- a/vendor/github.com/kr/pty/ztypes_mipsx.go +++ /dev/null @@ -1,12 +0,0 @@ -// Created by cgo -godefs - DO NOT EDIT -// cgo -godefs types.go - -// +build linux -// +build mips mipsle mips64 mips64le - -package pty - -type ( - _C_int int32 - _C_uint uint32 -) diff --git a/vendor/github.com/kr/pty/ztypes_ppc64.go b/vendor/github.com/kr/pty/ztypes_ppc64.go deleted file mode 100644 index 4e1af84..0000000 --- a/vendor/github.com/kr/pty/ztypes_ppc64.go +++ /dev/null @@ -1,11 +0,0 @@ -// +build ppc64 - -// Created by cgo -godefs - DO NOT EDIT -// cgo -godefs types.go - -package pty - -type ( - _C_int int32 - _C_uint uint32 -) diff --git a/vendor/github.com/kr/pty/ztypes_ppc64le.go b/vendor/github.com/kr/pty/ztypes_ppc64le.go deleted file mode 100644 index e6780f4..0000000 --- a/vendor/github.com/kr/pty/ztypes_ppc64le.go +++ /dev/null @@ -1,11 +0,0 @@ -// +build ppc64le - -// Created by cgo -godefs - DO NOT EDIT -// cgo -godefs types.go - -package pty - -type ( - _C_int int32 - _C_uint uint32 -) diff --git a/vendor/github.com/kr/pty/ztypes_s390x.go b/vendor/github.com/kr/pty/ztypes_s390x.go deleted file mode 100644 index a7452b6..0000000 --- a/vendor/github.com/kr/pty/ztypes_s390x.go +++ /dev/null @@ -1,11 +0,0 @@ -// +build s390x - -// Created by cgo -godefs - DO NOT EDIT -// cgo -godefs types.go - -package pty - -type ( - _C_int int32 - _C_uint uint32 -) diff --git a/vendor/github.com/nsf/gocode/LICENSE b/vendor/github.com/nsf/gocode/LICENSE deleted file mode 100644 index 5ce0cee..0000000 --- a/vendor/github.com/nsf/gocode/LICENSE +++ /dev/null @@ -1,19 +0,0 @@ -Copyright (C) 2010 nsf - -Permission is hereby granted, free of charge, to any person obtaining a copy -of this software and associated documentation files (the "Software"), to deal -in the Software without restriction, including without limitation the rights -to use, copy, modify, merge, publish, distribute, sublicense, and/or sell -copies of the Software, and to permit persons to whom the Software is -furnished to do so, subject to the following conditions: - -The above copyright notice and this permission notice shall be included in -all copies or substantial portions of the Software. - -THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR -IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, -FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE -AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER -LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, -OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN -THE SOFTWARE. diff --git a/vendor/github.com/nsf/gocode/README.md b/vendor/github.com/nsf/gocode/README.md deleted file mode 100644 index 0e676e6..0000000 --- a/vendor/github.com/nsf/gocode/README.md +++ /dev/null @@ -1,211 +0,0 @@ -## An autocompletion daemon for the Go programming language - -Gocode is a helper tool which is intended to be integrated with your source code editor, like vim, neovim and emacs. It provides several advanced capabilities, which currently includes: - - - Context-sensitive autocompletion - -It is called *daemon*, because it uses client/server architecture for caching purposes. In particular, it makes autocompletions very fast. Typical autocompletion time with warm cache is 30ms, which is barely noticeable. - -Also watch the [demo screencast](http://nosmileface.ru/images/gocode-demo.swf). - -![Gocode in vim](http://nosmileface.ru/images/gocode-screenshot.png) - -![Gocode in emacs](http://nosmileface.ru/images/emacs-gocode.png) - -### Setup - - 1. You should have a correctly installed Go compiler environment and your personal workspace ($GOPATH). If you have no idea what **$GOPATH** is, take a look [here](http://golang.org/doc/code.html). Please make sure that your **$GOPATH/bin** is available in your **$PATH**. This is important, because most editors assume that **gocode** binary is available in one of the directories, specified by your **$PATH** environment variable. Otherwise manually copy the **gocode** binary from **$GOPATH/bin** to a location which is part of your **$PATH** after getting it in step 2. - - Do these steps only if you understand why you need to do them: - - `export GOPATH=$HOME/goprojects` - - `export PATH=$PATH:$GOPATH/bin` - - 2. Then you need to get the appropriate version of the gocode, for 6g/8g/5g compiler you can do this: - - `go get -u github.com/nsf/gocode` (-u flag for "update") - - Windows users should consider doing this instead: - - `go get -u -ldflags -H=windowsgui github.com/nsf/gocode` - - That way on the Windows OS gocode will be built as a GUI application and doing so solves hanging window issues with some of the editors. - - 3. Next steps are editor specific. See below. - -### Vim setup - -#### Vim manual installation - -Note: As of go 1.5 there is no $GOROOT/misc/vim script. Suggested installation is via [vim-go plugin](https://github.com/fatih/vim-go). - -In order to install vim scripts, you need to fulfill the following steps: - - 1. Install official Go vim scripts from **$GOROOT/misc/vim**. If you did that already, proceed to the step 2. - - 2. Install gocode vim scripts. Usually it's enough to do the following: - - 2.1. `vim/update.sh` - - **update.sh** script does the following: - - #!/bin/sh - mkdir -p "$HOME/.vim/autoload" - mkdir -p "$HOME/.vim/ftplugin/go" - cp "${0%/*}/autoload/gocomplete.vim" "$HOME/.vim/autoload" - cp "${0%/*}/ftplugin/go/gocomplete.vim" "$HOME/.vim/ftplugin/go" - - 2.2. Alternatively, you can create symlinks using symlink.sh script in order to avoid running update.sh after every gocode update. - - **symlink.sh** script does the following: - - #!/bin/sh - cd "${0%/*}" - ROOTDIR=`pwd` - mkdir -p "$HOME/.vim/autoload" - mkdir -p "$HOME/.vim/ftplugin/go" - ln -s "$ROOTDIR/autoload/gocomplete.vim" "$HOME/.vim/autoload/" - ln -s "$ROOTDIR/ftplugin/go/gocomplete.vim" "$HOME/.vim/ftplugin/go/" - - 3. Make sure vim has filetype plugin enabled. Simply add that to your **.vimrc**: - - `filetype plugin on` - - 4. Autocompletion should work now. Use `` for autocompletion (omnifunc autocompletion). - -#### Using Vundle in Vim - -Add the following line to your **.vimrc**: - -`Plugin 'nsf/gocode', {'rtp': 'vim/'}` - -And then update your packages by running `:PluginInstall`. - -#### Using vim-plug in Vim - -Add the following line to your **.vimrc**: - -`Plug 'nsf/gocode', { 'rtp': 'vim', 'do': '~/.vim/plugged/gocode/vim/symlink.sh' }` - -And then update your packages by running `:PlugInstall`. - -#### Other - -Alternatively take a look at the vundle/pathogen friendly repo: https://github.com/Blackrush/vim-gocode. - -### Neovim setup -#### Neovim manual installation - - Neovim users should also follow `Vim manual installation`, except that you should goto `gocode/nvim` in step 2, and remember that, the Neovim configuration file is `~/.config/nvim/init.vim`. - -#### Using Vundle in Neovim - -Add the following line to your **init.vim**: - -`Plugin 'nsf/gocode', {'rtp': 'nvim/'}` - -And then update your packages by running `:PluginInstall`. - -#### Using vim-plug in Neovim - -Add the following line to your **init.vim**: - -`Plug 'nsf/gocode', { 'rtp': 'nvim', 'do': '~/.config/nvim/plugged/gocode/nvim/symlink.sh' }` - -And then update your packages by running `:PlugInstall`. - -### Emacs setup - -In order to install emacs script, you need to fulfill the following steps: - - 1. Install [auto-complete-mode](http://www.emacswiki.org/emacs/AutoComplete) - - 2. Copy **emacs/go-autocomplete.el** file from the gocode source distribution to a directory which is in your 'load-path' in emacs. - - 3. Add these lines to your **.emacs**: - - (require 'go-autocomplete) - (require 'auto-complete-config) - (ac-config-default) - -Also, there is an alternative plugin for emacs using company-mode. See `emacs-company/README` for installation instructions. - -If you're a MacOSX user, you may find that script useful: https://github.com/purcell/exec-path-from-shell. It helps you with setting up the right environment variables as Go and gocode require it. By default it pulls the PATH, but don't forget to add the GOPATH as well, e.g.: - -``` -(when (memq window-system '(mac ns)) - (exec-path-from-shell-initialize) - (exec-path-from-shell-copy-env "GOPATH")) -``` - -### Options - -You can change all available options using `gocode set` command. The config file uses json format and is usually stored somewhere in **~/.config/gocode** directory. On windows it's stored in the appropriate AppData folder. It's suggested to avoid modifying config file manually, do that using the `gocode set` command. - -`gocode set` lists all options and their values. - -`gocode set
email. Or for short question find me on IRC: #go-nuts @ freenode. - -### Misc - - - It's a good idea to use the latest git version always. I'm trying to keep it in a working state. - - Use `go install` (not `go build`) for building a local source tree. The objects in `pkg/` are needed for Gocode to work. diff --git a/vendor/github.com/nsf/gocode/autocompletecontext.go b/vendor/github.com/nsf/gocode/autocompletecontext.go deleted file mode 100644 index d5d4bc4..0000000 --- a/vendor/github.com/nsf/gocode/autocompletecontext.go +++ /dev/null @@ -1,808 +0,0 @@ -package main - -import ( - "bytes" - "fmt" - "go/ast" - "go/parser" - "go/token" - "log" - "os" - "path/filepath" - "runtime" - "sort" - "strings" - "time" -) - -//------------------------------------------------------------------------- -// out_buffers -// -// Temporary structure for writing autocomplete response. -//------------------------------------------------------------------------- - -// fields must be exported for RPC -type candidate struct { - Name string - Type string - Class decl_class - Package string -} - -type out_buffers struct { - tmpbuf *bytes.Buffer - candidates []candidate - canonical_aliases map[string]string - ctx *auto_complete_context - tmpns map[string]bool - ignorecase bool -} - -func new_out_buffers(ctx *auto_complete_context) *out_buffers { - b := new(out_buffers) - b.tmpbuf = bytes.NewBuffer(make([]byte, 0, 1024)) - b.candidates = make([]candidate, 0, 64) - b.ctx = ctx - b.canonical_aliases = make(map[string]string) - for _, imp := range b.ctx.current.packages { - b.canonical_aliases[imp.abspath] = imp.alias - } - return b -} - -func (b *out_buffers) Len() int { - return len(b.candidates) -} - -func (b *out_buffers) Less(i, j int) bool { - x := b.candidates[i] - y := b.candidates[j] - if x.Class == y.Class { - return x.Name < y.Name - } - return x.Class < y.Class -} - -func (b *out_buffers) Swap(i, j int) { - b.candidates[i], b.candidates[j] = b.candidates[j], b.candidates[i] -} - -func (b *out_buffers) append_decl(p, name, pkg string, decl *decl, class decl_class) { - c1 := !g_config.ProposeBuiltins && decl.scope == g_universe_scope && decl.name != "Error" - c2 := class != decl_invalid && decl.class != class - c3 := class == decl_invalid && !has_prefix(name, p, b.ignorecase) - c4 := !decl.matches() - c5 := !check_type_expr(decl.typ) - - if c1 || c2 || c3 || c4 || c5 { - return - } - - decl.pretty_print_type(b.tmpbuf, b.canonical_aliases) - b.candidates = append(b.candidates, candidate{ - Name: name, - Type: b.tmpbuf.String(), - Class: decl.class, - Package: pkg, - }) - b.tmpbuf.Reset() -} - -func (b *out_buffers) append_embedded(p string, decl *decl, pkg string, class decl_class) { - if decl.embedded == nil { - return - } - - first_level := false - if b.tmpns == nil { - // first level, create tmp namespace - b.tmpns = make(map[string]bool) - first_level = true - - // add all children of the current decl to the namespace - for _, c := range decl.children { - b.tmpns[c.name] = true - } - } - - for _, emb := range decl.embedded { - typedecl := type_to_decl(emb, decl.scope) - if typedecl == nil { - continue - } - - // could be type alias - if typedecl.is_alias() { - typedecl = typedecl.type_dealias() - } - - // prevent infinite recursion here - if typedecl.is_visited() { - continue - } - typedecl.set_visited() - defer typedecl.clear_visited() - - for _, c := range typedecl.children { - if _, has := b.tmpns[c.name]; has { - continue - } - b.append_decl(p, c.name, pkg, c, class) - b.tmpns[c.name] = true - } - b.append_embedded(p, typedecl, pkg, class) - } - - if first_level { - // remove tmp namespace - b.tmpns = nil - } -} - -//------------------------------------------------------------------------- -// auto_complete_context -// -// Context that holds cache structures for autocompletion needs. It -// includes cache for packages and for main package files. -//------------------------------------------------------------------------- - -type auto_complete_context struct { - current *auto_complete_file // currently edited file - others []*decl_file_cache // other files of the current package - pkg *scope - - pcache package_cache // packages cache - declcache *decl_cache // top-level declarations cache -} - -func new_auto_complete_context(pcache package_cache, declcache *decl_cache) *auto_complete_context { - c := new(auto_complete_context) - c.current = new_auto_complete_file("", declcache.context) - c.pcache = pcache - c.declcache = declcache - return c -} - -func (c *auto_complete_context) update_caches() { - // temporary map for packages that we need to check for a cache expiration - // map is used as a set of unique items to prevent double checks - ps := make(map[string]*package_file_cache) - - // collect import information from all of the files - c.pcache.append_packages(ps, c.current.packages) - c.others = get_other_package_files(c.current.name, c.current.package_name, c.declcache) - for _, other := range c.others { - c.pcache.append_packages(ps, other.packages) - } - - update_packages(ps) - - // fix imports for all files - fixup_packages(c.current.filescope, c.current.packages, c.pcache) - for _, f := range c.others { - fixup_packages(f.filescope, f.packages, c.pcache) - } - - // At this point we have collected all top level declarations, now we need to - // merge them in the common package block. - c.merge_decls() -} - -func (c *auto_complete_context) merge_decls() { - c.pkg = new_scope(g_universe_scope) - merge_decls(c.current.filescope, c.pkg, c.current.decls) - merge_decls_from_packages(c.pkg, c.current.packages, c.pcache) - for _, f := range c.others { - merge_decls(f.filescope, c.pkg, f.decls) - merge_decls_from_packages(c.pkg, f.packages, c.pcache) - } - - // special pass for type aliases which also have methods, while this is - // valid code, it shouldn't happen a lot in practice, so, whatever - // let's move all type alias methods to their first non-alias type down in - // the chain - propagate_type_alias_methods(c.pkg) -} - -func (c *auto_complete_context) make_decl_set(scope *scope) map[string]*decl { - set := make(map[string]*decl, len(c.pkg.entities)*2) - make_decl_set_recursive(set, scope) - return set -} - -func (c *auto_complete_context) get_candidates_from_set(set map[string]*decl, partial string, class decl_class, b *out_buffers) { - for key, value := range set { - if value == nil { - continue - } - value.infer_type() - pkgname := "" - if pkg, ok := c.pcache[value.name]; ok { - pkgname = pkg.import_name - } - b.append_decl(partial, key, pkgname, value, class) - } -} - -func (c *auto_complete_context) get_candidates_from_decl_alias(cc cursor_context, class decl_class, b *out_buffers) { - if cc.decl.is_visited() { - return - } - - cc.decl = cc.decl.type_dealias() - if cc.decl == nil { - return - } - - cc.decl.set_visited() - defer cc.decl.clear_visited() - - c.get_candidates_from_decl(cc, class, b) - return -} - -func (c *auto_complete_context) decl_package_import_path(decl *decl) string { - if decl == nil || decl.scope == nil { - return "" - } - if pkg, ok := c.pcache[decl.scope.pkgname]; ok { - return pkg.import_name - } - return "" -} - -func (c *auto_complete_context) get_candidates_from_decl(cc cursor_context, class decl_class, b *out_buffers) { - if cc.decl.is_alias() { - c.get_candidates_from_decl_alias(cc, class, b) - return - } - - // propose all children of a subject declaration and - for _, decl := range cc.decl.children { - if cc.decl.class == decl_package && !ast.IsExported(decl.name) { - continue - } - if cc.struct_field { - // if we're autocompleting struct field init, skip all methods - if _, ok := decl.typ.(*ast.FuncType); ok { - continue - } - } - b.append_decl(cc.partial, decl.name, c.decl_package_import_path(decl), decl, class) - } - // propose all children of an underlying struct/interface type - adecl := advance_to_struct_or_interface(cc.decl) - if adecl != nil && adecl != cc.decl { - for _, decl := range adecl.children { - if decl.class == decl_var { - b.append_decl(cc.partial, decl.name, c.decl_package_import_path(decl), decl, class) - } - } - } - // propose all children of its embedded types - b.append_embedded(cc.partial, cc.decl, c.decl_package_import_path(cc.decl), class) -} - -func (c *auto_complete_context) get_import_candidates(partial string, b *out_buffers) { - currentPackagePath, pkgdirs := g_daemon.context.pkg_dirs() - resultSet := map[string]struct{}{} - for _, pkgdir := range pkgdirs { - // convert srcpath to pkgpath and get candidates - get_import_candidates_dir(pkgdir, filepath.FromSlash(partial), b.ignorecase, currentPackagePath, resultSet) - } - for k := range resultSet { - b.candidates = append(b.candidates, candidate{Name: k, Class: decl_import}) - } -} - -func get_import_candidates_dir(root, partial string, ignorecase bool, currentPackagePath string, r map[string]struct{}) { - var fpath string - var match bool - if strings.HasSuffix(partial, "/") { - fpath = filepath.Join(root, partial) - } else { - fpath = filepath.Join(root, filepath.Dir(partial)) - match = true - } - fi := readdir(fpath) - for i := range fi { - name := fi[i].Name() - rel, err := filepath.Rel(root, filepath.Join(fpath, name)) - if err != nil { - panic(err) - } - if match && !has_prefix(rel, partial, ignorecase) { - continue - } else if fi[i].IsDir() { - get_import_candidates_dir(root, rel+string(filepath.Separator), ignorecase, currentPackagePath, r) - } else { - ext := filepath.Ext(name) - if ext != ".a" { - continue - } else { - rel = rel[0 : len(rel)-2] - } - if ipath, ok := vendorlessImportPath(filepath.ToSlash(rel), currentPackagePath); ok { - r[ipath] = struct{}{} - } - } - } -} - -// returns three slices of the same length containing: -// 1. apropos names -// 2. apropos types (pretty-printed) -// 3. apropos classes -// and length of the part that should be replaced (if any) -func (c *auto_complete_context) apropos(file []byte, filename string, cursor int) ([]candidate, int) { - c.current.cursor = cursor - c.current.name = filename - - // Update caches and parse the current file. - // This process is quite complicated, because I was trying to design it in a - // concurrent fashion. Apparently I'm not really good at that. Hopefully - // will be better in future. - - // Ugly hack, but it actually may help in some cases. Insert a - // semicolon right at the cursor location. - filesemi := make([]byte, len(file)+1) - copy(filesemi, file[:cursor]) - filesemi[cursor] = ';' - copy(filesemi[cursor+1:], file[cursor:]) - - // Does full processing of the currently edited file (top-level declarations plus - // active function). - c.current.process_data(filesemi) - - // Updates cache of other files and packages. See the function for details of - // the process. At the end merges all the top-level declarations into the package - // block. - c.update_caches() - - // And we're ready to Go. ;) - - b := new_out_buffers(c) - if g_config.IgnoreCase { - if *g_debug { - log.Printf("ignoring case sensitivity") - } - b.ignorecase = true - } - - cc, ok := c.deduce_cursor_context(file, cursor) - partial := len(cc.partial) - if !g_config.Partials { - if *g_debug { - log.Printf("not performing partial prefix matching") - } - cc.partial = "" - } - if !ok { - var d *decl - if ident, ok := cc.expr.(*ast.Ident); ok && g_config.UnimportedPackages { - p := resolveKnownPackageIdent(ident.Name, c.current.name, c.current.context) - if p != nil { - c.pcache[p.name] = p - d = p.main - } - } - if d == nil { - return nil, 0 - } - cc.decl = d - } - - class := decl_invalid - if g_config.ClassFiltering { - switch cc.partial { - case "const": - class = decl_const - case "var": - class = decl_var - case "type": - class = decl_type - case "func": - class = decl_func - case "package": - class = decl_package - } - } - - if cc.decl_import { - c.get_import_candidates(cc.partial, b) - if cc.partial != "" && len(b.candidates) == 0 { - // as a fallback, try case insensitive approach - b.ignorecase = true - c.get_import_candidates(cc.partial, b) - } - } else if cc.decl == nil { - // In case if no declaraion is a subject of completion, propose all: - set := c.make_decl_set(c.current.scope) - c.get_candidates_from_set(set, cc.partial, class, b) - if cc.partial != "" && len(b.candidates) == 0 { - // as a fallback, try case insensitive approach - b.ignorecase = true - c.get_candidates_from_set(set, cc.partial, class, b) - } - } else { - c.get_candidates_from_decl(cc, class, b) - if cc.partial != "" && len(b.candidates) == 0 { - // as a fallback, try case insensitive approach - b.ignorecase = true - c.get_candidates_from_decl(cc, class, b) - } - } - - if len(b.candidates) == 0 { - return nil, 0 - } - - sort.Sort(b) - return b.candidates, partial -} - -func update_packages(ps map[string]*package_file_cache) { - // initiate package cache update - done := make(chan bool) - for _, p := range ps { - go func(p *package_file_cache) { - defer func() { - if err := recover(); err != nil { - print_backtrace(err) - done <- false - } - }() - p.update_cache() - done <- true - }(p) - } - - // wait for its completion - for _ = range ps { - if !<-done { - panic("One of the package cache updaters panicked") - } - } -} - -func collect_type_alias_methods(d *decl) map[string]*decl { - if d == nil || d.is_visited() || !d.is_alias() { - return nil - } - d.set_visited() - defer d.clear_visited() - - // add own methods - m := map[string]*decl{} - for k, v := range d.children { - m[k] = v - } - - // recurse into more aliases - dd := type_to_decl(d.typ, d.scope) - for k, v := range collect_type_alias_methods(dd) { - m[k] = v - } - - return m -} - -func propagate_type_alias_methods(s *scope) { - for _, e := range s.entities { - if !e.is_alias() { - continue - } - - methods := collect_type_alias_methods(e) - if len(methods) == 0 { - continue - } - - dd := e.type_dealias() - if dd == nil { - continue - } - - decl := dd.deep_copy() - for _, v := range methods { - decl.add_child(v) - } - s.entities[decl.name] = decl - } -} - -func merge_decls(filescope *scope, pkg *scope, decls map[string]*decl) { - for _, d := range decls { - pkg.merge_decl(d) - } - filescope.parent = pkg -} - -func merge_decls_from_packages(pkgscope *scope, pkgs []package_import, pcache package_cache) { - for _, p := range pkgs { - path, alias := p.abspath, p.alias - if alias != "." { - continue - } - p := pcache[path].main - if p == nil { - continue - } - for _, d := range p.children { - if ast.IsExported(d.name) { - pkgscope.merge_decl(d) - } - } - } -} - -func fixup_packages(filescope *scope, pkgs []package_import, pcache package_cache) { - for _, p := range pkgs { - path, alias := p.abspath, p.alias - if alias == "" { - alias = pcache[path].defalias - } - // skip packages that will be merged to the package scope - if alias == "." { - continue - } - filescope.replace_decl(alias, pcache[path].main) - } -} - -func get_other_package_files(filename, packageName string, declcache *decl_cache) []*decl_file_cache { - others := find_other_package_files(filename, packageName) - - ret := make([]*decl_file_cache, len(others)) - done := make(chan *decl_file_cache) - - for _, nm := range others { - go func(name string) { - defer func() { - if err := recover(); err != nil { - print_backtrace(err) - done <- nil - } - }() - done <- declcache.get_and_update(name) - }(nm) - } - - for i := range others { - ret[i] = <-done - if ret[i] == nil { - panic("One of the decl cache updaters panicked") - } - } - - return ret -} - -func find_other_package_files(filename, package_name string) []string { - if filename == "" { - return nil - } - - dir, file := filepath.Split(filename) - files_in_dir, err := readdir_lstat(dir) - if err != nil { - panic(err) - } - - count := 0 - for _, stat := range files_in_dir { - ok, _ := filepath.Match("*.go", stat.Name()) - if !ok || stat.Name() == file { - continue - } - count++ - } - - out := make([]string, 0, count) - for _, stat := range files_in_dir { - const non_regular = os.ModeDir | os.ModeSymlink | - os.ModeDevice | os.ModeNamedPipe | os.ModeSocket - - ok, _ := filepath.Match("*.go", stat.Name()) - if !ok || stat.Name() == file || stat.Mode()&non_regular != 0 { - continue - } - - abspath := filepath.Join(dir, stat.Name()) - if file_package_name(abspath) == package_name { - n := len(out) - out = out[:n+1] - out[n] = abspath - } - } - - return out -} - -func file_package_name(filename string) string { - file, _ := parser.ParseFile(token.NewFileSet(), filename, nil, parser.PackageClauseOnly) - return file.Name.Name -} - -func make_decl_set_recursive(set map[string]*decl, scope *scope) { - for name, ent := range scope.entities { - if _, ok := set[name]; !ok { - set[name] = ent - } - } - if scope.parent != nil { - make_decl_set_recursive(set, scope.parent) - } -} - -func check_func_field_list(f *ast.FieldList) bool { - if f == nil { - return true - } - - for _, field := range f.List { - if !check_type_expr(field.Type) { - return false - } - } - return true -} - -// checks for a type expression correctness, it the type expression has -// ast.BadExpr somewhere, returns false, otherwise true -func check_type_expr(e ast.Expr) bool { - switch t := e.(type) { - case *ast.StarExpr: - return check_type_expr(t.X) - case *ast.ArrayType: - return check_type_expr(t.Elt) - case *ast.SelectorExpr: - return check_type_expr(t.X) - case *ast.FuncType: - a := check_func_field_list(t.Params) - b := check_func_field_list(t.Results) - return a && b - case *ast.MapType: - a := check_type_expr(t.Key) - b := check_type_expr(t.Value) - return a && b - case *ast.Ellipsis: - return check_type_expr(t.Elt) - case *ast.ChanType: - return check_type_expr(t.Value) - case *ast.BadExpr: - return false - default: - return true - } -} - -//------------------------------------------------------------------------- -// Status output -//------------------------------------------------------------------------- - -type decl_slice []*decl - -func (s decl_slice) Less(i, j int) bool { - if s[i].class != s[j].class { - return s[i].name < s[j].name - } - return s[i].class < s[j].class -} -func (s decl_slice) Len() int { return len(s) } -func (s decl_slice) Swap(i, j int) { s[i], s[j] = s[j], s[i] } - -const ( - color_red = "\033[0;31m" - color_red_bold = "\033[1;31m" - color_green = "\033[0;32m" - color_green_bold = "\033[1;32m" - color_yellow = "\033[0;33m" - color_yellow_bold = "\033[1;33m" - color_blue = "\033[0;34m" - color_blue_bold = "\033[1;34m" - color_magenta = "\033[0;35m" - color_magenta_bold = "\033[1;35m" - color_cyan = "\033[0;36m" - color_cyan_bold = "\033[1;36m" - color_white = "\033[0;37m" - color_white_bold = "\033[1;37m" - color_none = "\033[0m" -) - -var g_decl_class_to_color = [...]string{ - decl_const: color_white_bold, - decl_var: color_magenta, - decl_type: color_cyan, - decl_func: color_green, - decl_package: color_red, - decl_methods_stub: color_red, -} - -var g_decl_class_to_string_status = [...]string{ - decl_const: " const", - decl_var: " var", - decl_type: " type", - decl_func: " func", - decl_package: "package", - decl_methods_stub: " stub", -} - -func (c *auto_complete_context) status() string { - - buf := bytes.NewBuffer(make([]byte, 0, 4096)) - fmt.Fprintf(buf, "Server's GOMAXPROCS == %d\n", runtime.GOMAXPROCS(0)) - fmt.Fprintf(buf, "\nPackage cache contains %d entries\n", len(c.pcache)) - fmt.Fprintf(buf, "\nListing these entries:\n") - for _, mod := range c.pcache { - fmt.Fprintf(buf, "\tname: %s (default alias: %s)\n", mod.name, mod.defalias) - fmt.Fprintf(buf, "\timports %d declarations and %d packages\n", len(mod.main.children), len(mod.others)) - if mod.mtime == -1 { - fmt.Fprintf(buf, "\tthis package stays in cache forever (built-in package)\n") - } else { - mtime := time.Unix(0, mod.mtime) - fmt.Fprintf(buf, "\tlast modification time: %s\n", mtime) - } - fmt.Fprintf(buf, "\n") - } - if c.current.name != "" { - fmt.Fprintf(buf, "Last edited file: %s (package: %s)\n", c.current.name, c.current.package_name) - if len(c.others) > 0 { - fmt.Fprintf(buf, "\nOther files from the current package:\n") - } - for _, f := range c.others { - fmt.Fprintf(buf, "\t%s\n", f.name) - } - fmt.Fprintf(buf, "\nListing declarations from files:\n") - - const status_decls = "\t%s%s" + color_none + " " + color_yellow + "%s" + color_none + "\n" - const status_decls_children = "\t%s%s" + color_none + " " + color_yellow + "%s" + color_none + " (%d)\n" - - fmt.Fprintf(buf, "\n%s:\n", c.current.name) - ds := make(decl_slice, len(c.current.decls)) - i := 0 - for _, d := range c.current.decls { - ds[i] = d - i++ - } - sort.Sort(ds) - for _, d := range ds { - if len(d.children) > 0 { - fmt.Fprintf(buf, status_decls_children, - g_decl_class_to_color[d.class], - g_decl_class_to_string_status[d.class], - d.name, len(d.children)) - } else { - fmt.Fprintf(buf, status_decls, - g_decl_class_to_color[d.class], - g_decl_class_to_string_status[d.class], - d.name) - } - } - - for _, f := range c.others { - fmt.Fprintf(buf, "\n%s:\n", f.name) - ds = make(decl_slice, len(f.decls)) - i = 0 - for _, d := range f.decls { - ds[i] = d - i++ - } - sort.Sort(ds) - for _, d := range ds { - if len(d.children) > 0 { - fmt.Fprintf(buf, status_decls_children, - g_decl_class_to_color[d.class], - g_decl_class_to_string_status[d.class], - d.name, len(d.children)) - } else { - fmt.Fprintf(buf, status_decls, - g_decl_class_to_color[d.class], - g_decl_class_to_string_status[d.class], - d.name) - } - } - } - } - return buf.String() -} diff --git a/vendor/github.com/nsf/gocode/autocompletefile.go b/vendor/github.com/nsf/gocode/autocompletefile.go deleted file mode 100644 index c68f7ca..0000000 --- a/vendor/github.com/nsf/gocode/autocompletefile.go +++ /dev/null @@ -1,420 +0,0 @@ -package main - -import ( - "bytes" - "go/ast" - "go/parser" - "go/scanner" - "go/token" - "log" -) - -func parse_decl_list(fset *token.FileSet, data []byte) ([]ast.Decl, error) { - var buf bytes.Buffer - buf.WriteString("package p;") - buf.Write(data) - file, err := parser.ParseFile(fset, "", buf.Bytes(), parser.AllErrors) - if err != nil { - return file.Decls, err - } - return file.Decls, nil -} - -func log_parse_error(intro string, err error) { - if el, ok := err.(scanner.ErrorList); ok { - log.Printf("%s:", intro) - for _, er := range el { - log.Printf(" %s", er) - } - } else { - log.Printf("%s: %s", intro, err) - } -} - -//------------------------------------------------------------------------- -// auto_complete_file -//------------------------------------------------------------------------- - -type auto_complete_file struct { - name string - package_name string - - decls map[string]*decl - packages []package_import - filescope *scope - scope *scope - - cursor int // for current file buffer only - fset *token.FileSet - context *package_lookup_context -} - -func new_auto_complete_file(name string, context *package_lookup_context) *auto_complete_file { - p := new(auto_complete_file) - p.name = name - p.cursor = -1 - p.fset = token.NewFileSet() - p.context = context - return p -} - -func (f *auto_complete_file) offset(p token.Pos) int { - const fixlen = len("package p;") - return f.fset.Position(p).Offset - fixlen -} - -// this one is used for current file buffer exclusively -func (f *auto_complete_file) process_data(data []byte) { - cur, filedata, block := rip_off_decl(data, f.cursor) - file, err := parser.ParseFile(f.fset, "", filedata, parser.AllErrors) - if err != nil && *g_debug { - log_parse_error("Error parsing input file (outer block)", err) - } - f.package_name = package_name(file) - - f.decls = make(map[string]*decl) - f.packages = collect_package_imports(f.name, file.Decls, f.context) - f.filescope = new_scope(nil) - f.scope = f.filescope - - for _, d := range file.Decls { - anonymify_ast(d, 0, f.filescope) - } - - // process all top-level declarations - for _, decl := range file.Decls { - append_to_top_decls(f.decls, decl, f.scope) - } - if block != nil { - // process local function as top-level declaration - decls, err := parse_decl_list(f.fset, block) - if err != nil && *g_debug { - log_parse_error("Error parsing input file (inner block)", err) - } - - for _, d := range decls { - anonymify_ast(d, 0, f.filescope) - } - - for _, decl := range decls { - append_to_top_decls(f.decls, decl, f.scope) - } - - // process function internals - f.cursor = cur - for _, decl := range decls { - f.process_decl_locals(decl) - } - } - -} - -func (f *auto_complete_file) process_decl_locals(decl ast.Decl) { - switch t := decl.(type) { - case *ast.FuncDecl: - if f.cursor_in(t.Body) { - s := f.scope - f.scope = new_scope(f.scope) - - f.process_field_list(t.Recv, s) - f.process_field_list(t.Type.Params, s) - f.process_field_list(t.Type.Results, s) - f.process_block_stmt(t.Body) - } - default: - v := new(func_lit_visitor) - v.ctx = f - ast.Walk(v, decl) - } -} - -func (f *auto_complete_file) process_decl(decl ast.Decl) { - if t, ok := decl.(*ast.GenDecl); ok && f.offset(t.TokPos) > f.cursor { - return - } - prevscope := f.scope - foreach_decl(decl, func(data *foreach_decl_struct) { - class := ast_decl_class(data.decl) - if class != decl_type { - f.scope, prevscope = advance_scope(f.scope) - } - for i, name := range data.names { - typ, v, vi := data.type_value_index(i) - - d := new_decl_full(name.Name, class, ast_decl_flags(data.decl), typ, v, vi, prevscope) - if d == nil { - return - } - - f.scope.add_named_decl(d) - } - }) -} - -func (f *auto_complete_file) process_block_stmt(block *ast.BlockStmt) { - if block != nil && f.cursor_in(block) { - f.scope, _ = advance_scope(f.scope) - - for _, stmt := range block.List { - f.process_stmt(stmt) - } - - // hack to process all func literals - v := new(func_lit_visitor) - v.ctx = f - ast.Walk(v, block) - } -} - -type func_lit_visitor struct { - ctx *auto_complete_file -} - -func (v *func_lit_visitor) Visit(node ast.Node) ast.Visitor { - if t, ok := node.(*ast.FuncLit); ok && v.ctx.cursor_in(t.Body) { - s := v.ctx.scope - v.ctx.scope = new_scope(v.ctx.scope) - - v.ctx.process_field_list(t.Type.Params, s) - v.ctx.process_field_list(t.Type.Results, s) - v.ctx.process_block_stmt(t.Body) - - return nil - } - return v -} - -func (f *auto_complete_file) process_stmt(stmt ast.Stmt) { - switch t := stmt.(type) { - case *ast.DeclStmt: - f.process_decl(t.Decl) - case *ast.AssignStmt: - f.process_assign_stmt(t) - case *ast.IfStmt: - if f.cursor_in_if_head(t) { - f.process_stmt(t.Init) - } else if f.cursor_in_if_stmt(t) { - f.scope, _ = advance_scope(f.scope) - f.process_stmt(t.Init) - f.process_block_stmt(t.Body) - f.process_stmt(t.Else) - } - case *ast.BlockStmt: - f.process_block_stmt(t) - case *ast.RangeStmt: - f.process_range_stmt(t) - case *ast.ForStmt: - if f.cursor_in_for_head(t) { - f.process_stmt(t.Init) - } else if f.cursor_in(t.Body) { - f.scope, _ = advance_scope(f.scope) - - f.process_stmt(t.Init) - f.process_block_stmt(t.Body) - } - case *ast.SwitchStmt: - f.process_switch_stmt(t) - case *ast.TypeSwitchStmt: - f.process_type_switch_stmt(t) - case *ast.SelectStmt: - f.process_select_stmt(t) - case *ast.LabeledStmt: - f.process_stmt(t.Stmt) - } -} - -func (f *auto_complete_file) process_select_stmt(a *ast.SelectStmt) { - if !f.cursor_in(a.Body) { - return - } - var prevscope *scope - f.scope, prevscope = advance_scope(f.scope) - - var last_cursor_after *ast.CommClause - for _, s := range a.Body.List { - if cc := s.(*ast.CommClause); f.cursor > f.offset(cc.Colon) { - last_cursor_after = cc - } - } - - if last_cursor_after != nil { - if last_cursor_after.Comm != nil { - //if lastCursorAfter.Lhs != nil && lastCursorAfter.Tok == token.DEFINE { - if astmt, ok := last_cursor_after.Comm.(*ast.AssignStmt); ok && astmt.Tok == token.DEFINE { - vname := astmt.Lhs[0].(*ast.Ident).Name - v := new_decl_var(vname, nil, astmt.Rhs[0], -1, prevscope) - if v != nil { - f.scope.add_named_decl(v) - } - } - } - for _, s := range last_cursor_after.Body { - f.process_stmt(s) - } - } -} - -func (f *auto_complete_file) process_type_switch_stmt(a *ast.TypeSwitchStmt) { - if !f.cursor_in(a.Body) { - return - } - var prevscope *scope - f.scope, prevscope = advance_scope(f.scope) - - f.process_stmt(a.Init) - // type var - var tv *decl - if a, ok := a.Assign.(*ast.AssignStmt); ok { - lhs := a.Lhs - rhs := a.Rhs - if lhs != nil && len(lhs) == 1 { - tvname := lhs[0].(*ast.Ident).Name - tv = new_decl_var(tvname, nil, rhs[0], -1, prevscope) - } - } - - var last_cursor_after *ast.CaseClause - for _, s := range a.Body.List { - if cc := s.(*ast.CaseClause); f.cursor > f.offset(cc.Colon) { - last_cursor_after = cc - } - } - - if last_cursor_after != nil { - if tv != nil { - if last_cursor_after.List != nil && len(last_cursor_after.List) == 1 { - tv.typ = last_cursor_after.List[0] - tv.value = nil - } - f.scope.add_named_decl(tv) - } - for _, s := range last_cursor_after.Body { - f.process_stmt(s) - } - } -} - -func (f *auto_complete_file) process_switch_stmt(a *ast.SwitchStmt) { - if !f.cursor_in(a.Body) { - return - } - f.scope, _ = advance_scope(f.scope) - - f.process_stmt(a.Init) - var last_cursor_after *ast.CaseClause - for _, s := range a.Body.List { - if cc := s.(*ast.CaseClause); f.cursor > f.offset(cc.Colon) { - last_cursor_after = cc - } - } - if last_cursor_after != nil { - for _, s := range last_cursor_after.Body { - f.process_stmt(s) - } - } -} - -func (f *auto_complete_file) process_range_stmt(a *ast.RangeStmt) { - if !f.cursor_in(a.Body) { - return - } - var prevscope *scope - f.scope, prevscope = advance_scope(f.scope) - - if a.Tok == token.DEFINE { - if t, ok := a.Key.(*ast.Ident); ok { - d := new_decl_var(t.Name, nil, a.X, 0, prevscope) - if d != nil { - d.flags |= decl_rangevar - f.scope.add_named_decl(d) - } - } - - if a.Value != nil { - if t, ok := a.Value.(*ast.Ident); ok { - d := new_decl_var(t.Name, nil, a.X, 1, prevscope) - if d != nil { - d.flags |= decl_rangevar - f.scope.add_named_decl(d) - } - } - } - } - - f.process_block_stmt(a.Body) -} - -func (f *auto_complete_file) process_assign_stmt(a *ast.AssignStmt) { - if a.Tok != token.DEFINE || f.offset(a.TokPos) > f.cursor { - return - } - - names := make([]*ast.Ident, len(a.Lhs)) - for i, name := range a.Lhs { - id, ok := name.(*ast.Ident) - if !ok { - // something is wrong, just ignore the whole stmt - return - } - names[i] = id - } - - var prevscope *scope - f.scope, prevscope = advance_scope(f.scope) - - pack := decl_pack{names, nil, a.Rhs} - for i, name := range pack.names { - typ, v, vi := pack.type_value_index(i) - d := new_decl_var(name.Name, typ, v, vi, prevscope) - if d == nil { - continue - } - - f.scope.add_named_decl(d) - } -} - -func (f *auto_complete_file) process_field_list(field_list *ast.FieldList, s *scope) { - if field_list != nil { - decls := ast_field_list_to_decls(field_list, decl_var, 0, s, false) - for _, d := range decls { - f.scope.add_named_decl(d) - } - } -} - -func (f *auto_complete_file) cursor_in_if_head(s *ast.IfStmt) bool { - if f.cursor > f.offset(s.If) && f.cursor <= f.offset(s.Body.Lbrace) { - return true - } - return false -} - -func (f *auto_complete_file) cursor_in_if_stmt(s *ast.IfStmt) bool { - if f.cursor > f.offset(s.If) { - // magic -10 comes from auto_complete_file.offset method, see - // len() expr in there - if f.offset(s.End()) == -10 || f.cursor < f.offset(s.End()) { - return true - } - } - return false -} - -func (f *auto_complete_file) cursor_in_for_head(s *ast.ForStmt) bool { - if f.cursor > f.offset(s.For) && f.cursor <= f.offset(s.Body.Lbrace) { - return true - } - return false -} - -func (f *auto_complete_file) cursor_in(block *ast.BlockStmt) bool { - if f.cursor == -1 || block == nil { - return false - } - - if f.cursor > f.offset(block.Lbrace) && f.cursor <= f.offset(block.Rbrace) { - return true - } - return false -} diff --git a/vendor/github.com/nsf/gocode/client.go b/vendor/github.com/nsf/gocode/client.go deleted file mode 100644 index 3174a2d..0000000 --- a/vendor/github.com/nsf/gocode/client.go +++ /dev/null @@ -1,188 +0,0 @@ -package main - -import ( - "flag" - "fmt" - "go/build" - "io/ioutil" - "net/rpc" - "os" - "path/filepath" - "strconv" - "time" -) - -func do_client() int { - addr := *g_addr - if *g_sock == "unix" { - addr = get_socket_filename() - } - - // client - client, err := rpc.Dial(*g_sock, addr) - if err != nil { - if *g_sock == "unix" && file_exists(addr) { - os.Remove(addr) - } - - err = try_run_server() - if err != nil { - fmt.Printf("%s\n", err.Error()) - return 1 - } - client, err = try_to_connect(*g_sock, addr) - if err != nil { - fmt.Printf("%s\n", err.Error()) - return 1 - } - } - defer client.Close() - - if flag.NArg() > 0 { - switch flag.Arg(0) { - case "autocomplete": - cmd_auto_complete(client) - case "close": - cmd_close(client) - case "status": - cmd_status(client) - case "drop-cache": - cmd_drop_cache(client) - case "set": - cmd_set(client) - case "options": - cmd_options(client) - default: - fmt.Printf("unknown argument: %q, try running \"gocode -h\"\n", flag.Arg(0)) - return 1 - } - } - return 0 -} - -func try_run_server() error { - path := get_executable_filename() - args := []string{os.Args[0], "-s", "-sock", *g_sock, "-addr", *g_addr} - cwd, _ := os.Getwd() - - var err error - stdin, err := os.Open(os.DevNull) - if err != nil { - return err - } - stdout, err := os.OpenFile(os.DevNull, os.O_WRONLY, 0) - if err != nil { - return err - } - stderr, err := os.OpenFile(os.DevNull, os.O_WRONLY, 0) - if err != nil { - return err - } - - procattr := os.ProcAttr{Dir: cwd, Env: os.Environ(), Files: []*os.File{stdin, stdout, stderr}} - p, err := os.StartProcess(path, args, &procattr) - if err != nil { - return err - } - - return p.Release() -} - -func try_to_connect(network, address string) (client *rpc.Client, err error) { - t := 0 - for { - client, err = rpc.Dial(network, address) - if err != nil && t < 1000 { - time.Sleep(10 * time.Millisecond) - t += 10 - continue - } - break - } - - return -} - -func prepare_file_filename_cursor() ([]byte, string, int) { - var file []byte - var err error - - if *g_input != "" { - file, err = ioutil.ReadFile(*g_input) - } else { - file, err = ioutil.ReadAll(os.Stdin) - } - - if err != nil { - panic(err.Error()) - } - - var skipped int - file, skipped = filter_out_shebang(file) - - filename := *g_input - cursor := -1 - - offset := "" - switch flag.NArg() { - case 2: - offset = flag.Arg(1) - case 3: - filename = flag.Arg(1) // Override default filename - offset = flag.Arg(2) - } - - if offset != "" { - if offset[0] == 'c' || offset[0] == 'C' { - cursor, _ = strconv.Atoi(offset[1:]) - cursor = char_to_byte_offset(file, cursor) - } else { - cursor, _ = strconv.Atoi(offset) - } - } - - cursor -= skipped - if filename != "" && !filepath.IsAbs(filename) { - cwd, _ := os.Getwd() - filename = filepath.Join(cwd, filename) - } - return file, filename, cursor -} - -//------------------------------------------------------------------------- -// commands -//------------------------------------------------------------------------- - -func cmd_status(c *rpc.Client) { - fmt.Printf("%s\n", client_status(c, 0)) -} - -func cmd_auto_complete(c *rpc.Client) { - context := pack_build_context(&build.Default) - file, filename, cursor := prepare_file_filename_cursor() - f := get_formatter(*g_format) - f.write_candidates(client_auto_complete(c, file, filename, cursor, context)) -} - -func cmd_close(c *rpc.Client) { - client_close(c, 0) -} - -func cmd_drop_cache(c *rpc.Client) { - client_drop_cache(c, 0) -} - -func cmd_set(c *rpc.Client) { - switch flag.NArg() { - case 1: - fmt.Print(client_set(c, "\x00", "\x00")) - case 2: - fmt.Print(client_set(c, flag.Arg(1), "\x00")) - case 3: - fmt.Print(client_set(c, flag.Arg(1), flag.Arg(2))) - } -} - -func cmd_options(c *rpc.Client) { - fmt.Print(client_options(c, 0)) -} diff --git a/vendor/github.com/nsf/gocode/config.go b/vendor/github.com/nsf/gocode/config.go deleted file mode 100644 index 075c5c0..0000000 --- a/vendor/github.com/nsf/gocode/config.go +++ /dev/null @@ -1,240 +0,0 @@ -package main - -import ( - "bytes" - "encoding/json" - "fmt" - "io" - "io/ioutil" - "os" - "reflect" - "regexp" - "strconv" -) - -//------------------------------------------------------------------------- -// config -// -// Structure represents persistent config storage of the gocode daemon. Usually -// the config is located somewhere in ~/.config/gocode directory. -//------------------------------------------------------------------------- - -type config struct { - ProposeBuiltins bool `json:"propose-builtins"` - LibPath string `json:"lib-path"` - CustomPkgPrefix string `json:"custom-pkg-prefix"` - CustomVendorDir string `json:"custom-vendor-dir"` - Autobuild bool `json:"autobuild"` - ForceDebugOutput string `json:"force-debug-output"` - PackageLookupMode string `json:"package-lookup-mode"` - CloseTimeout int `json:"close-timeout"` - UnimportedPackages bool `json:"unimported-packages"` - Partials bool `json:"partials"` - IgnoreCase bool `json:"ignore-case"` - ClassFiltering bool `json:"class-filtering"` -} - -var g_config_desc = map[string]string{ - "propose-builtins": "If set to {true}, gocode will add built-in types, functions and constants to autocompletion proposals.", - "lib-path": "A string option. Allows you to add search paths for packages. By default, gocode only searches {$GOPATH/pkg/$GOOS_$GOARCH} and {$GOROOT/pkg/$GOOS_$GOARCH} in terms of previously existed environment variables. Also you can specify multiple paths using ':' (colon) as a separator (on Windows use semicolon ';'). The paths specified by {lib-path} are prepended to the default ones.", - "custom-pkg-prefix": "", - "custom-vendor-dir": "", - "autobuild": "If set to {true}, gocode will try to automatically build out-of-date packages when their source files are modified, in order to obtain the freshest autocomplete results for them. This feature is experimental.", - "force-debug-output": "If is not empty, gocode will forcefully redirect the logging into that file. Also forces enabling of the debug mode on the server side.", - "package-lookup-mode": "If set to {go}, use standard Go package lookup rules. If set to {gb}, use gb-specific lookup rules. See {https://github.com/constabulary/gb} for details.", - "close-timeout": "If there have been no completion requests after this number of seconds, the gocode process will terminate. Default is 30 minutes.", - "unimported-packages": "If set to {true}, gocode will try to import certain known packages automatically for identifiers which cannot be resolved otherwise. Currently only a limited set of standard library packages is supported.", - "partials": "If set to {false}, gocode will not filter autocompletion results based on entered prefix before the cursor. Instead it will return all available autocompletion results viable for a given context. Whether this option is set to {true} or {false}, gocode will return a valid prefix length for output formats which support it. Setting this option to a non-default value may result in editor misbehaviour.", - "ignore-case": "If set to {true}, gocode will perform case-insensitive matching when doing prefix-based filtering.", - "class-filtering": "Enables or disables gocode's feature where it performs class-based filtering if partial input matches corresponding class keyword: const, var, type, func, package.", -} - -var g_default_config = config{ - ProposeBuiltins: false, - LibPath: "", - CustomPkgPrefix: "", - Autobuild: false, - ForceDebugOutput: "", - PackageLookupMode: "go", - CloseTimeout: 1800, - UnimportedPackages: false, - Partials: true, - IgnoreCase: false, - ClassFiltering: true, -} -var g_config = g_default_config - -var g_string_to_bool = map[string]bool{ - "t": true, - "true": true, - "y": true, - "yes": true, - "on": true, - "1": true, - "f": false, - "false": false, - "n": false, - "no": false, - "off": false, - "0": false, -} - -func set_value(v reflect.Value, value string) { - switch t := v; t.Kind() { - case reflect.Bool: - v, ok := g_string_to_bool[value] - if ok { - t.SetBool(v) - } - case reflect.String: - t.SetString(value) - case reflect.Int, reflect.Int8, reflect.Int16, reflect.Int32, reflect.Int64: - v, err := strconv.ParseInt(value, 10, 64) - if err == nil { - t.SetInt(v) - } - case reflect.Float32, reflect.Float64: - v, err := strconv.ParseFloat(value, 64) - if err == nil { - t.SetFloat(v) - } - } -} - -func list_value(v reflect.Value, name string, w io.Writer) { - switch t := v; t.Kind() { - case reflect.Bool: - fmt.Fprintf(w, "%s %v\n", name, t.Bool()) - case reflect.String: - fmt.Fprintf(w, "%s \"%v\"\n", name, t.String()) - case reflect.Int, reflect.Int8, reflect.Int16, reflect.Int32, reflect.Int64: - fmt.Fprintf(w, "%s %v\n", name, t.Int()) - case reflect.Float32, reflect.Float64: - fmt.Fprintf(w, "%s %v\n", name, t.Float()) - } -} - -func (this *config) list() string { - str, typ := this.value_and_type() - buf := bytes.NewBuffer(make([]byte, 0, 256)) - for i := 0; i < str.NumField(); i++ { - v := str.Field(i) - name := typ.Field(i).Tag.Get("json") - list_value(v, name, buf) - } - return buf.String() -} - -func (this *config) list_option(name string) string { - str, typ := this.value_and_type() - buf := bytes.NewBuffer(make([]byte, 0, 256)) - for i := 0; i < str.NumField(); i++ { - v := str.Field(i) - nm := typ.Field(i).Tag.Get("json") - if nm == name { - list_value(v, name, buf) - } - } - return buf.String() -} - -func (this *config) set_option(name, value string) string { - str, typ := this.value_and_type() - buf := bytes.NewBuffer(make([]byte, 0, 256)) - for i := 0; i < str.NumField(); i++ { - v := str.Field(i) - nm := typ.Field(i).Tag.Get("json") - if nm == name { - set_value(v, value) - list_value(v, name, buf) - } - } - this.write() - return buf.String() - -} - -func (this *config) value_and_type() (reflect.Value, reflect.Type) { - v := reflect.ValueOf(this).Elem() - return v, v.Type() -} - -func (this *config) write() error { - data, err := json.Marshal(this) - if err != nil { - return err - } - - // make sure config dir exists - dir := config_dir() - if !file_exists(dir) { - os.MkdirAll(dir, 0755) - } - - f, err := os.Create(config_file()) - if err != nil { - return err - } - defer f.Close() - - _, err = f.Write(data) - if err != nil { - return err - } - - return nil -} - -func (this *config) read() error { - data, err := ioutil.ReadFile(config_file()) - if err != nil { - return err - } - - err = json.Unmarshal(data, this) - if err != nil { - return err - } - - return nil -} - -func quoted(v interface{}) string { - switch v.(type) { - case string: - return fmt.Sprintf("%q", v) - case int: - return fmt.Sprint(v) - case bool: - return fmt.Sprint(v) - default: - panic("unreachable") - } -} - -var descRE = regexp.MustCompile(`{[^}]+}`) - -func preprocess_desc(v string) string { - return descRE.ReplaceAllStringFunc(v, func(v string) string { - return color_cyan + v[1:len(v)-1] + color_none - }) -} - -func (this *config) options() string { - var buf bytes.Buffer - fmt.Fprintf(&buf, "%sConfig file location%s: %s\n", color_white_bold, color_none, config_file()) - dv := reflect.ValueOf(g_default_config) - v, t := this.value_and_type() - for i, n := 0, t.NumField(); i < n; i++ { - f := t.Field(i) - index := f.Index - tag := f.Tag.Get("json") - fmt.Fprintf(&buf, "\n%s%s%s\n", color_yellow_bold, tag, color_none) - fmt.Fprintf(&buf, "%stype%s: %s\n", color_yellow, color_none, f.Type) - fmt.Fprintf(&buf, "%svalue%s: %s\n", color_yellow, color_none, quoted(v.FieldByIndex(index).Interface())) - fmt.Fprintf(&buf, "%sdefault%s: %s\n", color_yellow, color_none, quoted(dv.FieldByIndex(index).Interface())) - fmt.Fprintf(&buf, "%sdescription%s: %s\n", color_yellow, color_none, preprocess_desc(g_config_desc[tag])) - } - - return buf.String() -} diff --git a/vendor/github.com/nsf/gocode/cursorcontext.go b/vendor/github.com/nsf/gocode/cursorcontext.go deleted file mode 100644 index 92c036b..0000000 --- a/vendor/github.com/nsf/gocode/cursorcontext.go +++ /dev/null @@ -1,582 +0,0 @@ -package main - -import ( - "bytes" - "go/ast" - "go/parser" - "go/scanner" - "go/token" - "log" -) - -type cursor_context struct { - decl *decl - partial string - struct_field bool - decl_import bool - - // store expression that was supposed to be deduced to "decl", however - // if decl is nil, then deduction failed, we could try to resolve it to - // unimported package instead - expr ast.Expr -} - -type token_iterator struct { - tokens []token_item - token_index int -} - -type token_item struct { - off int - tok token.Token - lit string -} - -func (i token_item) literal() string { - if i.tok.IsLiteral() { - return i.lit - } - return i.tok.String() -} - -func new_token_iterator(src []byte, cursor int) token_iterator { - tokens := make([]token_item, 0, 1000) - var s scanner.Scanner - fset := token.NewFileSet() - file := fset.AddFile("", fset.Base(), len(src)) - s.Init(file, src, nil, 0) - for { - pos, tok, lit := s.Scan() - off := fset.Position(pos).Offset - if tok == token.EOF || cursor <= off { - break - } - tokens = append(tokens, token_item{ - off: off, - tok: tok, - lit: lit, - }) - } - return token_iterator{ - tokens: tokens, - token_index: len(tokens) - 1, - } -} - -func (this *token_iterator) token() token_item { - return this.tokens[this.token_index] -} - -func (this *token_iterator) go_back() bool { - if this.token_index <= 0 { - return false - } - this.token_index-- - return true -} - -var bracket_pairs_map = map[token.Token]token.Token{ - token.RPAREN: token.LPAREN, - token.RBRACK: token.LBRACK, - token.RBRACE: token.LBRACE, -} - -func (ti *token_iterator) skip_to_left(left, right token.Token) bool { - if ti.token().tok == left { - return true - } - balance := 1 - for balance != 0 { - if !ti.go_back() { - return false - } - switch ti.token().tok { - case right: - balance++ - case left: - balance-- - } - } - return true -} - -// when the cursor is at the ')' or ']' or '}', move the cursor to an opposite -// bracket pair, this functions takes nested bracket pairs into account -func (this *token_iterator) skip_to_balanced_pair() bool { - right := this.token().tok - left := bracket_pairs_map[right] - return this.skip_to_left(left, right) -} - -// Move the cursor to the open brace of the current block, taking nested blocks -// into account. -func (this *token_iterator) skip_to_left_curly() bool { - return this.skip_to_left(token.LBRACE, token.RBRACE) -} - -func (ti *token_iterator) extract_type_alike() string { - if ti.token().tok != token.IDENT { // not Foo, return nothing - return "" - } - b := ti.token().literal() - if !ti.go_back() { // just Foo - return b - } - if ti.token().tok != token.PERIOD { // not .Foo, return Foo - return b - } - if !ti.go_back() { // just .Foo, return Foo (best choice recovery) - return b - } - if ti.token().tok != token.IDENT { // not lib.Foo, return Foo - return b - } - out := ti.token().literal() + "." + b // lib.Foo - ti.go_back() - return out -} - -// Extract the type expression right before the enclosing curly bracket block. -// Examples (# - the cursor): -// &lib.Struct{Whatever: 1, Hel#} // returns "lib.Struct" -// X{#} // returns X -// The idea is that we check if this type expression is a type and it is, we -// can apply special filtering for autocompletion results. -// Sadly, this doesn't cover anonymous structs. -func (ti *token_iterator) extract_struct_type() string { - if !ti.skip_to_left_curly() { - return "" - } - if !ti.go_back() { - return "" - } - if ti.token().tok == token.LBRACE { // Foo{#{}} - if !ti.go_back() { - return "" - } - } else if ti.token().tok == token.COMMA { // Foo{abc,#{}} - return ti.extract_struct_type() - } - typ := ti.extract_type_alike() - if typ == "" { - return "" - } - if ti.token().tok == token.RPAREN || ti.token().tok == token.MUL { - return "" - } - return typ -} - -// Starting from the token under the cursor move back and extract something -// that resembles a valid Go primary expression. Examples of primary expressions -// from Go spec: -// x -// 2 -// (s + ".txt") -// f(3.1415, true) -// Point{1, 2} -// m["foo"] -// s[i : j + 1] -// obj.color -// f.p[i].x() -// -// As you can see we can move through all of them using balanced bracket -// matching and applying simple rules -// E.g. -// Point{1, 2}.m["foo"].s[i : j + 1].MethodCall(a, func(a, b int) int { return a + b }). -// Can be seen as: -// Point{ }.m[ ].s[ ].MethodCall( ). -// Which boils the rules down to these connected via dots: -// ident -// ident[] -// ident{} -// ident() -// Of course there are also slightly more complicated rules for brackets: -// ident{}.ident()[5][4](), etc. -func (this *token_iterator) extract_go_expr() string { - orig := this.token_index - - // Contains the type of the previously scanned token (initialized with - // the token right under the cursor). This is the token to the *right* of - // the current one. - prev := this.token().tok -loop: - for { - if !this.go_back() { - return token_items_to_string(this.tokens[:orig]) - } - switch this.token().tok { - case token.PERIOD: - // If the '.' is not followed by IDENT, it's invalid. - if prev != token.IDENT { - break loop - } - case token.IDENT: - // Valid tokens after IDENT are '.', '[', '{' and '('. - switch prev { - case token.PERIOD, token.LBRACK, token.LBRACE, token.LPAREN: - // all ok - default: - break loop - } - case token.RBRACE: - // This one can only be a part of type initialization, like: - // Dummy{}.Hello() - // It is valid Go if Hello method is defined on a non-pointer receiver. - if prev != token.PERIOD { - break loop - } - this.skip_to_balanced_pair() - case token.RPAREN, token.RBRACK: - // After ']' and ')' their opening counterparts are valid '[', '(', - // as well as the dot. - switch prev { - case token.PERIOD, token.LBRACK, token.LPAREN: - // all ok - default: - break loop - } - this.skip_to_balanced_pair() - default: - break loop - } - prev = this.token().tok - } - expr := token_items_to_string(this.tokens[this.token_index+1 : orig]) - if *g_debug { - log.Printf("extracted expression tokens: %s", expr) - } - return expr -} - -// Given a slice of token_item, reassembles them into the original literal -// expression. -func token_items_to_string(tokens []token_item) string { - var buf bytes.Buffer - for _, t := range tokens { - buf.WriteString(t.literal()) - } - return buf.String() -} - -// this function is called when the cursor is at the '.' and you need to get the -// declaration before that dot -func (c *auto_complete_context) deduce_cursor_decl(iter *token_iterator) (*decl, ast.Expr) { - expr, err := parser.ParseExpr(iter.extract_go_expr()) - if err != nil { - return nil, nil - } - return expr_to_decl(expr, c.current.scope), expr -} - -// try to find and extract the surrounding struct literal type -func (c *auto_complete_context) deduce_struct_type_decl(iter *token_iterator) *decl { - typ := iter.extract_struct_type() - if typ == "" { - return nil - } - - expr, err := parser.ParseExpr(typ) - if err != nil { - return nil - } - decl := type_to_decl(expr, c.current.scope) - if decl == nil { - return nil - } - - // we allow only struct types here, but also support type aliases - if decl.is_alias() { - dd := decl.type_dealias() - if _, ok := dd.typ.(*ast.StructType); !ok { - return nil - } - } else if _, ok := decl.typ.(*ast.StructType); !ok { - return nil - } - return decl -} - -// Entry point from autocompletion, the function looks at text before the cursor -// and figures out the declaration the cursor is on. This declaration is -// used in filtering the resulting set of autocompletion suggestions. -func (c *auto_complete_context) deduce_cursor_context(file []byte, cursor int) (cursor_context, bool) { - if cursor <= 0 { - return cursor_context{}, true - } - - iter := new_token_iterator(file, cursor) - if len(iter.tokens) == 0 { - return cursor_context{}, false - } - - // figure out what is just before the cursor - switch tok := iter.token(); tok.tok { - case token.STRING: - // make sure cursor is inside the string - s := tok.literal() - if len(s) > 1 && s[len(s)-1] == '"' && tok.off+len(s) <= cursor { - return cursor_context{}, true - } - // now figure out if inside an import declaration - var ptok = token.STRING - for iter.go_back() { - itok := iter.token().tok - switch itok { - case token.STRING: - switch ptok { - case token.SEMICOLON, token.IDENT, token.PERIOD: - default: - return cursor_context{}, true - } - case token.LPAREN, token.SEMICOLON: - switch ptok { - case token.STRING, token.IDENT, token.PERIOD: - default: - return cursor_context{}, true - } - case token.IDENT, token.PERIOD: - switch ptok { - case token.STRING: - default: - return cursor_context{}, true - } - case token.IMPORT: - switch ptok { - case token.STRING, token.IDENT, token.PERIOD, token.LPAREN: - path_len := cursor - tok.off - path := s[1:path_len] - return cursor_context{decl_import: true, partial: path}, true - default: - return cursor_context{}, true - } - default: - return cursor_context{}, true - } - ptok = itok - } - case token.PERIOD: - // we're '.' - // figure out decl, Partial is "" - decl, expr := c.deduce_cursor_decl(&iter) - return cursor_context{decl: decl, expr: expr}, decl != nil - case token.IDENT, token.TYPE, token.CONST, token.VAR, token.FUNC, token.PACKAGE: - // we're '.' - // parse as Partial and figure out decl - var partial string - if tok.tok == token.IDENT { - // Calculate the offset of the cursor position within the identifier. - // For instance, if we are 'ab#c', we want partial_len = 2 and partial = ab. - partial_len := cursor - tok.off - - // If it happens that the cursor is past the end of the literal, - // means there is a space between the literal and the cursor, think - // of it as no context, because that's what it really is. - if partial_len > len(tok.literal()) { - return cursor_context{}, true - } - partial = tok.literal()[0:partial_len] - } else { - // Do not try to truncate if it is not an identifier. - partial = tok.literal() - } - - iter.go_back() - switch iter.token().tok { - case token.PERIOD: - decl, expr := c.deduce_cursor_decl(&iter) - return cursor_context{decl: decl, partial: partial, expr: expr}, decl != nil - case token.COMMA, token.LBRACE: - // This can happen for struct fields: - // &Struct{Hello: 1, Wor#} // (# - the cursor) - // Let's try to find the struct type - decl := c.deduce_struct_type_decl(&iter) - return cursor_context{ - decl: decl, - partial: partial, - struct_field: decl != nil, - }, true - default: - return cursor_context{partial: partial}, true - } - case token.COMMA, token.LBRACE: - // Try to parse the current expression as a structure initialization. - decl := c.deduce_struct_type_decl(&iter) - return cursor_context{ - decl: decl, - partial: "", - struct_field: decl != nil, - }, true - } - - return cursor_context{}, true -} - -// Decl deduction failed, but we're on ".", this ident can be an -// unexported package, let's try to match the ident against a set of known -// packages and if it matches try to import it. -// TODO: Right now I've made a static list of built-in packages, but in theory -// we could scan all GOPATH packages as well. Now, don't forget that default -// package name has nothing to do with package file name, that's why we need to -// scan the packages. And many of them will have conflicts. Can we make a smart -// prediction algorithm which will prefer certain packages over another ones? -func resolveKnownPackageIdent(ident string, filename string, context *package_lookup_context) *package_file_cache { - importPath, ok := knownPackageIdents[ident] - if !ok { - return nil - } - - path, ok := abs_path_for_package(filename, importPath, context) - if !ok { - return nil - } - - p := new_package_file_cache(path, importPath) - p.update_cache() - return p -} - -var knownPackageIdents = map[string]string{ - "adler32": "hash/adler32", - "aes": "crypto/aes", - "ascii85": "encoding/ascii85", - "asn1": "encoding/asn1", - "ast": "go/ast", - "atomic": "sync/atomic", - "base32": "encoding/base32", - "base64": "encoding/base64", - "big": "math/big", - "binary": "encoding/binary", - "bufio": "bufio", - "build": "go/build", - "bytes": "bytes", - "bzip2": "compress/bzip2", - "cgi": "net/http/cgi", - "cgo": "runtime/cgo", - "cipher": "crypto/cipher", - "cmplx": "math/cmplx", - "color": "image/color", - "constant": "go/constant", - "context": "context", - "cookiejar": "net/http/cookiejar", - "crc32": "hash/crc32", - "crc64": "hash/crc64", - "crypto": "crypto", - "csv": "encoding/csv", - "debug": "runtime/debug", - "des": "crypto/des", - "doc": "go/doc", - "draw": "image/draw", - "driver": "database/sql/driver", - "dsa": "crypto/dsa", - "dwarf": "debug/dwarf", - "ecdsa": "crypto/ecdsa", - "elf": "debug/elf", - "elliptic": "crypto/elliptic", - "encoding": "encoding", - "errors": "errors", - "exec": "os/exec", - "expvar": "expvar", - "fcgi": "net/http/fcgi", - "filepath": "path/filepath", - "flag": "flag", - "flate": "compress/flate", - "fmt": "fmt", - "fnv": "hash/fnv", - "format": "go/format", - "gif": "image/gif", - "gob": "encoding/gob", - "gosym": "debug/gosym", - "gzip": "compress/gzip", - "hash": "hash", - "heap": "container/heap", - "hex": "encoding/hex", - "hmac": "crypto/hmac", - "hpack": "vendor/golang_org/x/net/http2/hpack", - "html": "html", - "http": "net/http", - "httplex": "vendor/golang_org/x/net/lex/httplex", - "httptest": "net/http/httptest", - "httptrace": "net/http/httptrace", - "httputil": "net/http/httputil", - "image": "image", - "importer": "go/importer", - "io": "io", - "iotest": "testing/iotest", - "ioutil": "io/ioutil", - "jpeg": "image/jpeg", - "json": "encoding/json", - "jsonrpc": "net/rpc/jsonrpc", - "list": "container/list", - "log": "log", - "lzw": "compress/lzw", - "macho": "debug/macho", - "mail": "net/mail", - "math": "math", - "md5": "crypto/md5", - "mime": "mime", - "multipart": "mime/multipart", - "net": "net", - "os": "os", - "palette": "image/color/palette", - "parse": "text/template/parse", - "parser": "go/parser", - "path": "path", - "pe": "debug/pe", - "pem": "encoding/pem", - "pkix": "crypto/x509/pkix", - "plan9obj": "debug/plan9obj", - "png": "image/png", - "pprof": "net/http/pprof", - "printer": "go/printer", - "quick": "testing/quick", - "quotedprintable": "mime/quotedprintable", - "race": "runtime/race", - "rand": "math/rand", - "rc4": "crypto/rc4", - "reflect": "reflect", - "regexp": "regexp", - "ring": "container/ring", - "rpc": "net/rpc", - "rsa": "crypto/rsa", - "runtime": "runtime", - "scanner": "text/scanner", - "sha1": "crypto/sha1", - "sha256": "crypto/sha256", - "sha512": "crypto/sha512", - "signal": "os/signal", - "smtp": "net/smtp", - "sort": "sort", - "sql": "database/sql", - "strconv": "strconv", - "strings": "strings", - "subtle": "crypto/subtle", - "suffixarray": "index/suffixarray", - "sync": "sync", - "syntax": "regexp/syntax", - "syscall": "syscall", - "syslog": "log/syslog", - "tabwriter": "text/tabwriter", - "tar": "archive/tar", - "template": "html/template", - "testing": "testing", - "textproto": "net/textproto", - "time": "time", - "tls": "crypto/tls", - "token": "go/token", - "trace": "runtime/trace", - "types": "go/types", - "unicode": "unicode", - "url": "net/url", - "user": "os/user", - "utf16": "unicode/utf16", - "utf8": "unicode/utf8", - "x509": "crypto/x509", - "xml": "encoding/xml", - "zip": "archive/zip", - "zlib": "compress/zlib", - //"scanner": "go/scanner", // DUP: prefer text/scanner - //"template": "text/template", // DUP: prefer html/template - //"pprof": "runtime/pprof", // DUP: prefer net/http/pprof - //"rand": "crypto/rand", // DUP: prefer math/rand -} diff --git a/vendor/github.com/nsf/gocode/decl.go b/vendor/github.com/nsf/gocode/decl.go deleted file mode 100644 index 7709c5f..0000000 --- a/vendor/github.com/nsf/gocode/decl.go +++ /dev/null @@ -1,1472 +0,0 @@ -package main - -import ( - "bytes" - "fmt" - "go/ast" - "go/token" - "io" - "reflect" - "strings" - "sync" -) - -// decl.class -type decl_class int16 - -const ( - decl_invalid = decl_class(-1 + iota) - - // these are in a sorted order - decl_const - decl_func - decl_import - decl_package - decl_type - decl_var - - // this one serves as a temporary type for those methods that were - // declared before their actual owner - decl_methods_stub -) - -func (this decl_class) String() string { - switch this { - case decl_invalid: - return "PANIC" - case decl_const: - return "const" - case decl_func: - return "func" - case decl_import: - return "import" - case decl_package: - return "package" - case decl_type: - return "type" - case decl_var: - return "var" - case decl_methods_stub: - return "IF YOU SEE THIS, REPORT A BUG" // :D - } - panic("unreachable") -} - -// decl.flags -type decl_flags int16 - -const ( - decl_foreign decl_flags = 1 << iota // imported from another package - - // means that the decl is a part of the range statement - // its type is inferred in a special way - decl_rangevar - - // decl of decl_type class is a type alias - decl_alias - - // for preventing infinite recursions and loops in type inference code - decl_visited -) - -//------------------------------------------------------------------------- -// decl -// -// The most important data structure of the whole gocode project. It -// describes a single declaration and its children. -//------------------------------------------------------------------------- - -type decl struct { - // Name starts with '$' if the declaration describes an anonymous type. - // '$s_%d' for anonymous struct types - // '$i_%d' for anonymous interface types - name string - typ ast.Expr - class decl_class - flags decl_flags - - // functions for interface type, fields+methods for struct type - children map[string]*decl - - // embedded types - embedded []ast.Expr - - // if the type is unknown at AST building time, I'm using these - value ast.Expr - - // if it's a multiassignment and the Value is a CallExpr, it is being set - // to an index into the return value tuple, otherwise it's a -1 - value_index int - - // scope where this Decl was declared in (not its visibilty scope!) - // Decl uses it for type inference - scope *scope -} - -func ast_decl_type(d ast.Decl) ast.Expr { - switch t := d.(type) { - case *ast.GenDecl: - switch t.Tok { - case token.CONST, token.VAR: - c := t.Specs[0].(*ast.ValueSpec) - return c.Type - case token.TYPE: - t := t.Specs[0].(*ast.TypeSpec) - return t.Type - } - case *ast.FuncDecl: - return t.Type - } - panic("unreachable") -} - -func ast_decl_flags(d ast.Decl) decl_flags { - switch t := d.(type) { - case *ast.GenDecl: - switch t.Tok { - case token.TYPE: - if isAliasTypeSpec(t.Specs[0].(*ast.TypeSpec)) { - return decl_alias - } - } - } - return 0 -} - -func ast_decl_class(d ast.Decl) decl_class { - switch t := d.(type) { - case *ast.GenDecl: - switch t.Tok { - case token.VAR: - return decl_var - case token.CONST: - return decl_const - case token.TYPE: - return decl_type - } - case *ast.FuncDecl: - return decl_func - } - panic("unreachable") -} - -func ast_decl_convertable(d ast.Decl) bool { - switch t := d.(type) { - case *ast.GenDecl: - switch t.Tok { - case token.VAR, token.CONST, token.TYPE: - return true - } - case *ast.FuncDecl: - return true - } - return false -} - -func ast_field_list_to_decls(f *ast.FieldList, class decl_class, flags decl_flags, scope *scope, add_anonymous bool) map[string]*decl { - count := 0 - for _, field := range f.List { - count += len(field.Names) - } - - decls := make(map[string]*decl, count) - for _, field := range f.List { - for _, name := range field.Names { - if flags&decl_foreign != 0 && !ast.IsExported(name.Name) { - continue - } - d := &decl{ - name: name.Name, - typ: field.Type, - class: class, - flags: flags, - scope: scope, - value_index: -1, - } - decls[d.name] = d - } - - // add anonymous field as a child (type embedding) - if class == decl_var && field.Names == nil && add_anonymous { - tp := get_type_path(field.Type) - if flags&decl_foreign != 0 && !ast.IsExported(tp.name) { - continue - } - d := &decl{ - name: tp.name, - typ: field.Type, - class: class, - flags: flags, - scope: scope, - value_index: -1, - } - decls[d.name] = d - } - } - return decls -} - -func ast_field_list_to_embedded(f *ast.FieldList) []ast.Expr { - count := 0 - for _, field := range f.List { - if field.Names == nil || field.Names[0].Name == "?" { - count++ - } - } - - if count == 0 { - return nil - } - - embedded := make([]ast.Expr, count) - i := 0 - for _, field := range f.List { - if field.Names == nil || field.Names[0].Name == "?" { - embedded[i] = field.Type - i++ - } - } - - return embedded -} - -func ast_type_to_embedded(ty ast.Expr) []ast.Expr { - switch t := ty.(type) { - case *ast.StructType: - return ast_field_list_to_embedded(t.Fields) - case *ast.InterfaceType: - return ast_field_list_to_embedded(t.Methods) - } - return nil -} - -func ast_type_to_children(ty ast.Expr, flags decl_flags, scope *scope) map[string]*decl { - switch t := ty.(type) { - case *ast.StructType: - return ast_field_list_to_decls(t.Fields, decl_var, flags, scope, true) - case *ast.InterfaceType: - return ast_field_list_to_decls(t.Methods, decl_func, flags, scope, false) - } - return nil -} - -//------------------------------------------------------------------------- -// anonymous_id_gen -// -// ID generator for anonymous types (thread-safe) -//------------------------------------------------------------------------- - -type anonymous_id_gen struct { - sync.Mutex - i int -} - -func (a *anonymous_id_gen) gen() (id int) { - a.Lock() - defer a.Unlock() - id = a.i - a.i++ - return -} - -var g_anon_gen anonymous_id_gen - -//------------------------------------------------------------------------- - -func check_for_anon_type(t ast.Expr, flags decl_flags, s *scope) ast.Expr { - if t == nil { - return nil - } - var name string - - switch t.(type) { - case *ast.StructType: - name = fmt.Sprintf("$s_%d", g_anon_gen.gen()) - case *ast.InterfaceType: - name = fmt.Sprintf("$i_%d", g_anon_gen.gen()) - } - - if name != "" { - anonymify_ast(t, flags, s) - d := new_decl_full(name, decl_type, flags, t, nil, -1, s) - s.add_named_decl(d) - return ast.NewIdent(name) - } - return t -} - -//------------------------------------------------------------------------- - -func new_decl_full(name string, class decl_class, flags decl_flags, typ, v ast.Expr, vi int, s *scope) *decl { - if name == "_" { - return nil - } - d := new(decl) - d.name = name - d.class = class - d.flags = flags - d.typ = typ - d.value = v - d.value_index = vi - d.scope = s - d.children = ast_type_to_children(d.typ, flags, s) - d.embedded = ast_type_to_embedded(d.typ) - return d -} - -func new_decl(name string, class decl_class, scope *scope) *decl { - decl := new(decl) - decl.name = name - decl.class = class - decl.value_index = -1 - decl.scope = scope - return decl -} - -func new_decl_var(name string, typ ast.Expr, value ast.Expr, vindex int, scope *scope) *decl { - if name == "_" { - return nil - } - decl := new(decl) - decl.name = name - decl.class = decl_var - decl.typ = typ - decl.value = value - decl.value_index = vindex - decl.scope = scope - return decl -} - -func method_of(d ast.Decl) string { - if t, ok := d.(*ast.FuncDecl); ok { - if t.Recv != nil && len(t.Recv.List) != 0 { - switch t := t.Recv.List[0].Type.(type) { - case *ast.StarExpr: - if se, ok := t.X.(*ast.SelectorExpr); ok { - return se.Sel.Name - } - if ident, ok := t.X.(*ast.Ident); ok { - return ident.Name - } - return "" - case *ast.Ident: - return t.Name - default: - return "" - } - } - } - return "" -} - -func (other *decl) deep_copy() *decl { - d := new(decl) - d.name = other.name - d.class = other.class - d.flags = other.flags - d.typ = other.typ - d.value = other.value - d.value_index = other.value_index - d.children = make(map[string]*decl, len(other.children)) - for key, value := range other.children { - d.children[key] = value - } - if other.embedded != nil { - d.embedded = make([]ast.Expr, len(other.embedded)) - copy(d.embedded, other.embedded) - } - d.scope = other.scope - return d -} - -func (d *decl) is_rangevar() bool { - return d.flags&decl_rangevar != 0 -} - -func (d *decl) is_alias() bool { - return d.flags&decl_alias != 0 -} - -func (d *decl) is_visited() bool { - return d.flags&decl_visited != 0 -} - -func (d *decl) set_visited() { - d.flags |= decl_visited -} - -func (d *decl) clear_visited() { - d.flags &^= decl_visited -} - -func (d *decl) expand_or_replace(other *decl) { - // expand only if it's a methods stub, otherwise simply keep it as is - if d.class != decl_methods_stub && other.class != decl_methods_stub { - return - } - - if d.class == decl_methods_stub { - d.typ = other.typ - d.class = other.class - d.flags = other.flags - } - - if other.children != nil { - for _, c := range other.children { - d.add_child(c) - } - } - - if other.embedded != nil { - d.embedded = other.embedded - d.scope = other.scope - } -} - -func (d *decl) matches() bool { - if strings.HasPrefix(d.name, "$") || d.class == decl_methods_stub { - return false - } - return true -} - -func (d *decl) pretty_print_type(out io.Writer, canonical_aliases map[string]string) { - switch d.class { - case decl_type: - switch d.typ.(type) { - case *ast.StructType: - // TODO: not used due to anonymify? - fmt.Fprintf(out, "struct") - case *ast.InterfaceType: - // TODO: not used due to anonymify? - fmt.Fprintf(out, "interface") - default: - if d.typ != nil { - pretty_print_type_expr(out, d.typ, canonical_aliases) - } - } - case decl_var: - if d.typ != nil { - pretty_print_type_expr(out, d.typ, canonical_aliases) - } - case decl_func: - pretty_print_type_expr(out, d.typ, canonical_aliases) - } -} - -func (d *decl) add_child(cd *decl) { - if d.children == nil { - d.children = make(map[string]*decl) - } - d.children[cd.name] = cd -} - -func check_for_builtin_funcs(typ *ast.Ident, c *ast.CallExpr, scope *scope) (ast.Expr, *scope) { - if strings.HasPrefix(typ.Name, "func(") { - if t, ok := c.Fun.(*ast.Ident); ok { - switch t.Name { - case "new": - if len(c.Args) > 0 { - e := new(ast.StarExpr) - e.X = c.Args[0] - return e, scope - } - case "make": - if len(c.Args) > 0 { - return c.Args[0], scope - } - case "append": - if len(c.Args) > 0 { - t, scope, _ := infer_type(c.Args[0], scope, -1) - return t, scope - } - case "complex": - // TODO: fix it - return ast.NewIdent("complex"), g_universe_scope - case "closed": - return ast.NewIdent("bool"), g_universe_scope - case "cap": - return ast.NewIdent("int"), g_universe_scope - case "copy": - return ast.NewIdent("int"), g_universe_scope - case "len": - return ast.NewIdent("int"), g_universe_scope - } - // TODO: - // func recover() interface{} - // func imag(c ComplexType) FloatType - // func real(c ComplexType) FloatType - } - } - return nil, nil -} - -func func_return_type(f *ast.FuncType, index int) ast.Expr { - if f.Results == nil { - return nil - } - - if index == -1 { - return f.Results.List[0].Type - } - - i := 0 - var field *ast.Field - for _, field = range f.Results.List { - n := 1 - if field.Names != nil { - n = len(field.Names) - } - if i <= index && index < i+n { - return field.Type - } - i += n - } - return nil -} - -type type_path struct { - pkg string - name string -} - -func (tp *type_path) is_nil() bool { - return tp.pkg == "" && tp.name == "" -} - -// converts type expressions like: -// ast.Expr -// *ast.Expr -// $ast$go/ast.Expr -// to a path that can be used to lookup a type related Decl -func get_type_path(e ast.Expr) (r type_path) { - if e == nil { - return type_path{"", ""} - } - - switch t := e.(type) { - case *ast.Ident: - r.name = t.Name - case *ast.StarExpr: - r = get_type_path(t.X) - case *ast.SelectorExpr: - if ident, ok := t.X.(*ast.Ident); ok { - r.pkg = ident.Name - } - r.name = t.Sel.Name - } - return -} - -func lookup_path(tp type_path, scope *scope) *decl { - if tp.is_nil() { - return nil - } - var decl *decl - if tp.pkg != "" { - decl = scope.lookup(tp.pkg) - // return nil early if the package wasn't found but it's part - // of the type specification - if decl == nil { - return nil - } - } - - if decl != nil { - if tp.name != "" { - return decl.find_child(tp.name) - } else { - return decl - } - } - - return scope.lookup(tp.name) -} - -func lookup_pkg(tp type_path, scope *scope) string { - if tp.is_nil() { - return "" - } - if tp.pkg == "" { - return "" - } - decl := scope.lookup(tp.pkg) - if decl == nil { - return "" - } - return decl.name -} - -func type_to_decl(t ast.Expr, scope *scope) *decl { - tp := get_type_path(t) - d := lookup_path(tp, scope) - if d != nil && d.class == decl_var { - // weird variable declaration pointing to itself - return nil - } - return d -} - -func expr_to_decl(e ast.Expr, scope *scope) *decl { - t, scope, _ := infer_type(e, scope, -1) - return type_to_decl(t, scope) -} - -//------------------------------------------------------------------------- -// Type inference -//------------------------------------------------------------------------- - -type type_predicate func(ast.Expr) bool - -func advance_to_type(pred type_predicate, v ast.Expr, scope *scope) (ast.Expr, *scope) { - if pred(v) { - return v, scope - } - - decl := type_to_decl(v, scope) - if decl == nil { - return nil, nil - } - - if decl.is_visited() { - return nil, nil - } - decl.set_visited() - defer decl.clear_visited() - - return advance_to_type(pred, decl.typ, decl.scope) -} - -func advance_to_struct_or_interface(decl *decl) *decl { - if decl.is_visited() { - return nil - } - decl.set_visited() - defer decl.clear_visited() - - if struct_interface_predicate(decl.typ) { - return decl - } - - decl = type_to_decl(decl.typ, decl.scope) - if decl == nil { - return nil - } - return advance_to_struct_or_interface(decl) -} - -func struct_interface_predicate(v ast.Expr) bool { - switch v.(type) { - case *ast.StructType, *ast.InterfaceType: - return true - } - return false -} - -func chan_predicate(v ast.Expr) bool { - _, ok := v.(*ast.ChanType) - return ok -} - -func index_predicate(v ast.Expr) bool { - switch v.(type) { - case *ast.ArrayType, *ast.MapType, *ast.Ellipsis: - return true - } - return false -} - -func star_predicate(v ast.Expr) bool { - _, ok := v.(*ast.StarExpr) - return ok -} - -func func_predicate(v ast.Expr) bool { - _, ok := v.(*ast.FuncType) - return ok -} - -func range_predicate(v ast.Expr) bool { - switch t := v.(type) { - case *ast.Ident: - if t.Name == "string" { - return true - } - case *ast.ArrayType, *ast.MapType, *ast.ChanType, *ast.Ellipsis: - return true - } - return false -} - -type anonymous_typer struct { - flags decl_flags - scope *scope -} - -func (a *anonymous_typer) Visit(node ast.Node) ast.Visitor { - switch t := node.(type) { - case *ast.CompositeLit: - t.Type = check_for_anon_type(t.Type, a.flags, a.scope) - case *ast.MapType: - t.Key = check_for_anon_type(t.Key, a.flags, a.scope) - t.Value = check_for_anon_type(t.Value, a.flags, a.scope) - case *ast.ArrayType: - t.Elt = check_for_anon_type(t.Elt, a.flags, a.scope) - case *ast.Ellipsis: - t.Elt = check_for_anon_type(t.Elt, a.flags, a.scope) - case *ast.ChanType: - t.Value = check_for_anon_type(t.Value, a.flags, a.scope) - case *ast.Field: - t.Type = check_for_anon_type(t.Type, a.flags, a.scope) - case *ast.CallExpr: - t.Fun = check_for_anon_type(t.Fun, a.flags, a.scope) - case *ast.ParenExpr: - t.X = check_for_anon_type(t.X, a.flags, a.scope) - case *ast.StarExpr: - t.X = check_for_anon_type(t.X, a.flags, a.scope) - case *ast.GenDecl: - switch t.Tok { - case token.VAR: - for _, s := range t.Specs { - vs := s.(*ast.ValueSpec) - vs.Type = check_for_anon_type(vs.Type, a.flags, a.scope) - } - } - } - return a -} - -func anonymify_ast(node ast.Node, flags decl_flags, scope *scope) { - v := anonymous_typer{flags, scope} - ast.Walk(&v, node) -} - -// RETURNS: -// - type expression which represents a full name of a type -// - bool whether a type expression is actually a type (used internally) -// - scope in which type makes sense -func infer_type(v ast.Expr, scope *scope, index int) (ast.Expr, *scope, bool) { - switch t := v.(type) { - case *ast.CompositeLit: - return t.Type, scope, true - case *ast.Ident: - if d := scope.lookup(t.Name); d != nil { - if d.class == decl_package { - return ast.NewIdent(t.Name), scope, false - } - typ, scope := d.infer_type() - return typ, scope, d.class == decl_type - } - case *ast.UnaryExpr: - switch t.Op { - case token.AND: - // &a makes sense only with values, don't even check for type - it, s, _ := infer_type(t.X, scope, -1) - if it == nil { - break - } - - e := new(ast.StarExpr) - e.X = it - return e, s, false - case token.ARROW: - // <-a makes sense only with values - it, s, _ := infer_type(t.X, scope, -1) - if it == nil { - break - } - switch index { - case -1, 0: - it, s = advance_to_type(chan_predicate, it, s) - return it.(*ast.ChanType).Value, s, false - case 1: - // technically it's a value, but in case of index == 1 - // it is always the last infer operation - return ast.NewIdent("bool"), g_universe_scope, false - } - case token.ADD, token.NOT, token.SUB, token.XOR: - it, s, _ := infer_type(t.X, scope, -1) - if it == nil { - break - } - return it, s, false - } - case *ast.BinaryExpr: - switch t.Op { - case token.EQL, token.NEQ, token.LSS, token.LEQ, - token.GTR, token.GEQ, token.LOR, token.LAND: - // logic operations, the result is a bool, always - return ast.NewIdent("bool"), g_universe_scope, false - case token.ADD, token.SUB, token.MUL, token.QUO, token.OR, - token.XOR, token.REM, token.AND, token.AND_NOT: - // try X, then Y, they should be the same anyway - it, s, _ := infer_type(t.X, scope, -1) - if it == nil { - it, s, _ = infer_type(t.Y, scope, -1) - if it == nil { - break - } - } - return it, s, false - case token.SHL, token.SHR: - // try only X for shifts, Y is always uint - it, s, _ := infer_type(t.X, scope, -1) - if it == nil { - break - } - return it, s, false - } - case *ast.IndexExpr: - // something[another] always returns a value and it works on a value too - it, s, _ := infer_type(t.X, scope, -1) - if it == nil { - break - } - it, s = advance_to_type(index_predicate, it, s) - switch t := it.(type) { - case *ast.ArrayType: - return t.Elt, s, false - case *ast.Ellipsis: - return t.Elt, s, false - case *ast.MapType: - switch index { - case -1, 0: - return t.Value, s, false - case 1: - return ast.NewIdent("bool"), g_universe_scope, false - } - } - case *ast.SliceExpr: - // something[start : end] always returns a value - it, s, _ := infer_type(t.X, scope, -1) - if it == nil { - break - } - it, s = advance_to_type(index_predicate, it, s) - switch t := it.(type) { - case *ast.ArrayType: - e := new(ast.ArrayType) - e.Elt = t.Elt - return e, s, false - } - case *ast.StarExpr: - it, s, is_type := infer_type(t.X, scope, -1) - if it == nil { - break - } - if is_type { - // if it's a type, add * modifier, make it a 'pointer of' type - e := new(ast.StarExpr) - e.X = it - return e, s, true - } else { - it, s := advance_to_type(star_predicate, it, s) - if se, ok := it.(*ast.StarExpr); ok { - return se.X, s, false - } - } - case *ast.CallExpr: - // this is a function call or a type cast: - // myFunc(1,2,3) or int16(myvar) - it, s, is_type := infer_type(t.Fun, scope, -1) - if it == nil { - break - } - - if is_type { - // a type cast - return it, scope, false - } else { - // it must be a function call or a built-in function - // first check for built-in - if ct, ok := it.(*ast.Ident); ok { - ty, s := check_for_builtin_funcs(ct, t, scope) - if ty != nil { - return ty, s, false - } - } - - // then check for an ordinary function call - it, scope = advance_to_type(func_predicate, it, s) - if ct, ok := it.(*ast.FuncType); ok { - return func_return_type(ct, index), s, false - } - } - case *ast.ParenExpr: - it, s, is_type := infer_type(t.X, scope, -1) - if it == nil { - break - } - return it, s, is_type - case *ast.SelectorExpr: - it, s, _ := infer_type(t.X, scope, -1) - if it == nil { - break - } - - if d := type_to_decl(it, s); d != nil { - c := d.find_child_and_in_embedded(t.Sel.Name) - if c != nil { - if c.class == decl_type { - return t, scope, true - } else { - typ, s := c.infer_type() - return typ, s, false - } - } - } - case *ast.FuncLit: - // it's a value, but I think most likely we don't even care, cause we can only - // call it, and CallExpr uses the type itself to figure out - return t.Type, scope, false - case *ast.TypeAssertExpr: - if t.Type == nil { - return infer_type(t.X, scope, -1) - } - switch index { - case -1, 0: - // converting a value to a different type, but return thing is a value - it, _, _ := infer_type(t.Type, scope, -1) - return it, scope, false - case 1: - return ast.NewIdent("bool"), g_universe_scope, false - } - case *ast.ArrayType, *ast.MapType, *ast.ChanType, *ast.Ellipsis, - *ast.FuncType, *ast.StructType, *ast.InterfaceType: - return t, scope, true - default: - _ = reflect.TypeOf(v) - //fmt.Println(ty) - } - return nil, nil, false -} - -// Uses Value, ValueIndex and Scope to infer the type of this -// declaration. Returns the type itself and the scope where this type -// makes sense. -func (d *decl) infer_type() (ast.Expr, *scope) { - // special case for range vars - if d.is_rangevar() { - var scope *scope - d.typ, scope = infer_range_type(d.value, d.scope, d.value_index) - return d.typ, scope - } - - switch d.class { - case decl_package: - // package is handled specially in inferType - return nil, nil - case decl_type: - return ast.NewIdent(d.name), d.scope - } - - // shortcut - if d.typ != nil && d.value == nil { - return d.typ, d.scope - } - - // prevent loops - if d.is_visited() { - return nil, nil - } - d.set_visited() - defer d.clear_visited() - - var scope *scope - d.typ, scope, _ = infer_type(d.value, d.scope, d.value_index) - return d.typ, scope -} - -func (d *decl) type_dealias() *decl { - if d.is_visited() { - return nil - } - d.set_visited() - defer d.clear_visited() - - dd := type_to_decl(d.typ, d.scope) - if dd != nil && dd.is_alias() { - return dd.type_dealias() - } - return dd -} - -func (d *decl) find_child(name string) *decl { - // type aliases don't really have any children on their own, but they - // point to a different type, let's try to find one - if d.is_alias() { - dd := d.type_dealias() - if dd != nil { - return dd.find_child(name) - } - - // note that type alias can also point to a type literal, something like - // type A = struct { A int } - // in this case we rely on "advance_to_struct_or_interface" below - } - - if d.children != nil { - if c, ok := d.children[name]; ok { - return c - } - } - - decl := advance_to_struct_or_interface(d) - if decl != nil && decl != d { - if d.is_visited() { - return nil - } - d.set_visited() - defer d.clear_visited() - - return decl.find_child(name) - } - return nil -} - -func (d *decl) find_child_and_in_embedded(name string) *decl { - if d == nil { - return nil - } - - c := d.find_child(name) - if c == nil { - for _, e := range d.embedded { - typedecl := type_to_decl(e, d.scope) - c = typedecl.find_child_and_in_embedded(name) - if c != nil { - break - } - } - } - return c -} - -// Special type inference for range statements. -// [int], [int] := range [string] -// [int], [value] := range [slice or array] -// [key], [value] := range [map] -// [value], [nil] := range [chan] -func infer_range_type(e ast.Expr, sc *scope, valueindex int) (ast.Expr, *scope) { - t, s, _ := infer_type(e, sc, -1) - t, s = advance_to_type(range_predicate, t, s) - if t != nil { - var t1, t2 ast.Expr - var s1, s2 *scope - s1 = s - s2 = s - - switch t := t.(type) { - case *ast.Ident: - // string - if t.Name == "string" { - t1 = ast.NewIdent("int") - t2 = ast.NewIdent("rune") - s1 = g_universe_scope - s2 = g_universe_scope - } else { - t1, t2 = nil, nil - } - case *ast.ArrayType: - t1 = ast.NewIdent("int") - s1 = g_universe_scope - t2 = t.Elt - case *ast.Ellipsis: - t1 = ast.NewIdent("int") - s1 = g_universe_scope - t2 = t.Elt - case *ast.MapType: - t1 = t.Key - t2 = t.Value - case *ast.ChanType: - t1 = t.Value - t2 = nil - default: - t1, t2 = nil, nil - } - - switch valueindex { - case 0: - return t1, s1 - case 1: - return t2, s2 - } - } - return nil, nil -} - -//------------------------------------------------------------------------- -// Pretty printing -//------------------------------------------------------------------------- - -func get_array_len(e ast.Expr) string { - switch t := e.(type) { - case *ast.BasicLit: - return string(t.Value) - case *ast.Ellipsis: - return "..." - } - return "" -} - -func pretty_print_type_expr(out io.Writer, e ast.Expr, canonical_aliases map[string]string) { - switch t := e.(type) { - case *ast.StarExpr: - fmt.Fprintf(out, "*") - pretty_print_type_expr(out, t.X, canonical_aliases) - case *ast.Ident: - if strings.HasPrefix(t.Name, "$") { - // beautify anonymous types - switch t.Name[1] { - case 's': - fmt.Fprintf(out, "struct") - case 'i': - // ok, in most cases anonymous interface is an - // empty interface, I'll just pretend that - // it's always true - fmt.Fprintf(out, "interface{}") - } - } else if !*g_debug && strings.HasPrefix(t.Name, "!") { - // these are full package names for disambiguating and pretty - // printing packages within packages, e.g. - // !go/ast!ast vs. !github.com/nsf/my/ast!ast - // another ugly hack, if people are punished in hell for ugly hacks - // I'm screwed... - emarkIdx := strings.LastIndex(t.Name, "!") - path := t.Name[1:emarkIdx] - alias := canonical_aliases[path] - if alias == "" { - alias = t.Name[emarkIdx+1:] - } - fmt.Fprintf(out, alias) - } else { - fmt.Fprintf(out, t.Name) - } - case *ast.ArrayType: - al := "" - if t.Len != nil { - al = get_array_len(t.Len) - } - if al != "" { - fmt.Fprintf(out, "[%s]", al) - } else { - fmt.Fprintf(out, "[]") - } - pretty_print_type_expr(out, t.Elt, canonical_aliases) - case *ast.SelectorExpr: - pretty_print_type_expr(out, t.X, canonical_aliases) - fmt.Fprintf(out, ".%s", t.Sel.Name) - case *ast.FuncType: - fmt.Fprintf(out, "func(") - pretty_print_func_field_list(out, t.Params, canonical_aliases) - fmt.Fprintf(out, ")") - - buf := bytes.NewBuffer(make([]byte, 0, 256)) - nresults := pretty_print_func_field_list(buf, t.Results, canonical_aliases) - if nresults > 0 { - results := buf.String() - if strings.IndexAny(results, ", ") != -1 { - results = "(" + results + ")" - } - fmt.Fprintf(out, " %s", results) - } - case *ast.MapType: - fmt.Fprintf(out, "map[") - pretty_print_type_expr(out, t.Key, canonical_aliases) - fmt.Fprintf(out, "]") - pretty_print_type_expr(out, t.Value, canonical_aliases) - case *ast.InterfaceType: - fmt.Fprintf(out, "interface{}") - case *ast.Ellipsis: - fmt.Fprintf(out, "...") - pretty_print_type_expr(out, t.Elt, canonical_aliases) - case *ast.StructType: - fmt.Fprintf(out, "struct") - case *ast.ChanType: - switch t.Dir { - case ast.RECV: - fmt.Fprintf(out, "<-chan ") - case ast.SEND: - fmt.Fprintf(out, "chan<- ") - case ast.SEND | ast.RECV: - fmt.Fprintf(out, "chan ") - } - pretty_print_type_expr(out, t.Value, canonical_aliases) - case *ast.ParenExpr: - fmt.Fprintf(out, "(") - pretty_print_type_expr(out, t.X, canonical_aliases) - fmt.Fprintf(out, ")") - case *ast.BadExpr: - // TODO: probably I should check that in a separate function - // and simply discard declarations with BadExpr as a part of their - // type - default: - // the element has some weird type, just ignore it - } -} - -func pretty_print_func_field_list(out io.Writer, f *ast.FieldList, canonical_aliases map[string]string) int { - count := 0 - if f == nil { - return count - } - for i, field := range f.List { - // names - if field.Names != nil { - hasNonblank := false - for j, name := range field.Names { - if name.Name != "?" { - hasNonblank = true - fmt.Fprintf(out, "%s", name.Name) - if j != len(field.Names)-1 { - fmt.Fprintf(out, ", ") - } - } - count++ - } - if hasNonblank { - fmt.Fprintf(out, " ") - } - } else { - count++ - } - - // type - pretty_print_type_expr(out, field.Type, canonical_aliases) - - // , - if i != len(f.List)-1 { - fmt.Fprintf(out, ", ") - } - } - return count -} - -func ast_decl_names(d ast.Decl) []*ast.Ident { - var names []*ast.Ident - - switch t := d.(type) { - case *ast.GenDecl: - switch t.Tok { - case token.CONST: - c := t.Specs[0].(*ast.ValueSpec) - names = make([]*ast.Ident, len(c.Names)) - for i, name := range c.Names { - names[i] = name - } - case token.TYPE: - t := t.Specs[0].(*ast.TypeSpec) - names = make([]*ast.Ident, 1) - names[0] = t.Name - case token.VAR: - v := t.Specs[0].(*ast.ValueSpec) - names = make([]*ast.Ident, len(v.Names)) - for i, name := range v.Names { - names[i] = name - } - } - case *ast.FuncDecl: - names = make([]*ast.Ident, 1) - names[0] = t.Name - } - - return names -} - -func ast_decl_values(d ast.Decl) []ast.Expr { - // TODO: CONST values here too - switch t := d.(type) { - case *ast.GenDecl: - switch t.Tok { - case token.VAR: - v := t.Specs[0].(*ast.ValueSpec) - if v.Values != nil { - return v.Values - } - } - } - return nil -} - -func ast_decl_split(d ast.Decl) []ast.Decl { - var decls []ast.Decl - if t, ok := d.(*ast.GenDecl); ok { - decls = make([]ast.Decl, len(t.Specs)) - for i, s := range t.Specs { - decl := new(ast.GenDecl) - *decl = *t - decl.Specs = make([]ast.Spec, 1) - decl.Specs[0] = s - decls[i] = decl - } - } else { - decls = make([]ast.Decl, 1) - decls[0] = d - } - return decls -} - -//------------------------------------------------------------------------- -// decl_pack -//------------------------------------------------------------------------- - -type decl_pack struct { - names []*ast.Ident - typ ast.Expr - values []ast.Expr -} - -type foreach_decl_struct struct { - decl_pack - decl ast.Decl -} - -func (f *decl_pack) value(i int) ast.Expr { - if f.values == nil { - return nil - } - if len(f.values) > 1 { - return f.values[i] - } - return f.values[0] -} - -func (f *decl_pack) value_index(i int) (v ast.Expr, vi int) { - // default: nil value - v = nil - vi = -1 - - if f.values != nil { - // A = B, if there is only one name, the value is solo too - if len(f.names) == 1 { - return f.values[0], -1 - } - - if len(f.values) > 1 { - // in case if there are multiple values, it's a usual - // multiassignment - if i >= len(f.values) { - i = len(f.values) - 1 - } - v = f.values[i] - } else { - // in case if there is one value, but many names, it's - // a tuple unpack.. use index here - v = f.values[0] - vi = i - } - } - return -} - -func (f *decl_pack) type_value_index(i int) (ast.Expr, ast.Expr, int) { - if f.typ != nil { - // If there is a type, we don't care about value, just return the type - // and zero value. - return f.typ, nil, -1 - } - - // And otherwise we simply return nil type and a valid value for later inferring. - v, vi := f.value_index(i) - return nil, v, vi -} - -type foreach_decl_func func(data *foreach_decl_struct) - -func foreach_decl(decl ast.Decl, do foreach_decl_func) { - decls := ast_decl_split(decl) - var data foreach_decl_struct - for _, decl := range decls { - if !ast_decl_convertable(decl) { - continue - } - data.names = ast_decl_names(decl) - data.typ = ast_decl_type(decl) - data.values = ast_decl_values(decl) - data.decl = decl - - do(&data) - } -} - -//------------------------------------------------------------------------- -// Built-in declarations -//------------------------------------------------------------------------- - -var g_universe_scope = new_scope(nil) - -func init() { - builtin := ast.NewIdent("built-in") - - add_type := func(name string) { - d := new_decl(name, decl_type, g_universe_scope) - d.typ = builtin - g_universe_scope.add_named_decl(d) - } - add_type("bool") - add_type("byte") - add_type("complex64") - add_type("complex128") - add_type("float32") - add_type("float64") - add_type("int8") - add_type("int16") - add_type("int32") - add_type("int64") - add_type("string") - add_type("uint8") - add_type("uint16") - add_type("uint32") - add_type("uint64") - add_type("int") - add_type("uint") - add_type("uintptr") - add_type("rune") - - add_const := func(name string) { - d := new_decl(name, decl_const, g_universe_scope) - d.typ = builtin - g_universe_scope.add_named_decl(d) - } - add_const("true") - add_const("false") - add_const("iota") - add_const("nil") - - add_func := func(name, typ string) { - d := new_decl(name, decl_func, g_universe_scope) - d.typ = ast.NewIdent(typ) - g_universe_scope.add_named_decl(d) - } - add_func("append", "func([]type, ...type) []type") - add_func("cap", "func(container) int") - add_func("close", "func(channel)") - add_func("complex", "func(real, imag) complex") - add_func("copy", "func(dst, src)") - add_func("delete", "func(map[typeA]typeB, typeA)") - add_func("imag", "func(complex)") - add_func("len", "func(container) int") - add_func("make", "func(type, len[, cap]) type") - add_func("new", "func(type) *type") - add_func("panic", "func(interface{})") - add_func("print", "func(...interface{})") - add_func("println", "func(...interface{})") - add_func("real", "func(complex)") - add_func("recover", "func() interface{}") - - // built-in error interface - d := new_decl("error", decl_type, g_universe_scope) - d.typ = &ast.InterfaceType{} - d.children = make(map[string]*decl) - d.children["Error"] = new_decl("Error", decl_func, g_universe_scope) - d.children["Error"].typ = &ast.FuncType{ - Results: &ast.FieldList{ - List: []*ast.Field{ - { - Type: ast.NewIdent("string"), - }, - }, - }, - } - g_universe_scope.add_named_decl(d) -} diff --git a/vendor/github.com/nsf/gocode/declcache.go b/vendor/github.com/nsf/gocode/declcache.go deleted file mode 100644 index 215a5a8..0000000 --- a/vendor/github.com/nsf/gocode/declcache.go +++ /dev/null @@ -1,532 +0,0 @@ -package main - -import ( - "fmt" - "go/ast" - "go/build" - "go/parser" - "go/token" - "log" - "os" - "os/exec" - "path/filepath" - "strings" - "sync" -) - -//------------------------------------------------------------------------- -// []package_import -//------------------------------------------------------------------------- - -type package_import struct { - alias string - abspath string - path string -} - -// Parses import declarations until the first non-import declaration and fills -// `packages` array with import information. -func collect_package_imports(filename string, decls []ast.Decl, context *package_lookup_context) []package_import { - pi := make([]package_import, 0, 16) - for _, decl := range decls { - if gd, ok := decl.(*ast.GenDecl); ok && gd.Tok == token.IMPORT { - for _, spec := range gd.Specs { - imp := spec.(*ast.ImportSpec) - path, alias := path_and_alias(imp) - abspath, ok := abs_path_for_package(filename, path, context) - if ok && alias != "_" { - pi = append(pi, package_import{alias, abspath, path}) - } - } - } else { - break - } - } - return pi -} - -//------------------------------------------------------------------------- -// decl_file_cache -// -// Contains cache for top-level declarations of a file as well as its -// contents, AST and import information. -//------------------------------------------------------------------------- - -type decl_file_cache struct { - name string // file name - mtime int64 // last modification time - - decls map[string]*decl // top-level declarations - error error // last error - packages []package_import // import information - filescope *scope - - fset *token.FileSet - context *package_lookup_context -} - -func new_decl_file_cache(name string, context *package_lookup_context) *decl_file_cache { - return &decl_file_cache{ - name: name, - context: context, - } -} - -func (f *decl_file_cache) update() { - stat, err := os.Stat(f.name) - if err != nil { - f.decls = nil - f.error = err - f.fset = nil - return - } - - statmtime := stat.ModTime().UnixNano() - if f.mtime == statmtime { - return - } - - f.mtime = statmtime - f.read_file() -} - -func (f *decl_file_cache) read_file() { - var data []byte - data, f.error = file_reader.read_file(f.name) - if f.error != nil { - return - } - data, _ = filter_out_shebang(data) - - f.process_data(data) -} - -func (f *decl_file_cache) process_data(data []byte) { - var file *ast.File - f.fset = token.NewFileSet() - file, f.error = parser.ParseFile(f.fset, "", data, 0) - f.filescope = new_scope(nil) - for _, d := range file.Decls { - anonymify_ast(d, 0, f.filescope) - } - f.packages = collect_package_imports(f.name, file.Decls, f.context) - f.decls = make(map[string]*decl, len(file.Decls)) - for _, decl := range file.Decls { - append_to_top_decls(f.decls, decl, f.filescope) - } -} - -func append_to_top_decls(decls map[string]*decl, decl ast.Decl, scope *scope) { - foreach_decl(decl, func(data *foreach_decl_struct) { - class := ast_decl_class(data.decl) - for i, name := range data.names { - typ, v, vi := data.type_value_index(i) - - d := new_decl_full(name.Name, class, ast_decl_flags(data.decl), typ, v, vi, scope) - if d == nil { - return - } - - methodof := method_of(decl) - if methodof != "" { - decl, ok := decls[methodof] - if ok { - decl.add_child(d) - } else { - decl = new_decl(methodof, decl_methods_stub, scope) - decls[methodof] = decl - decl.add_child(d) - } - } else { - decl, ok := decls[d.name] - if ok { - decl.expand_or_replace(d) - } else { - decls[d.name] = d - } - } - } - }) -} - -func abs_path_for_package(filename, p string, context *package_lookup_context) (string, bool) { - dir, _ := filepath.Split(filename) - if len(p) == 0 { - return "", false - } - if p[0] == '.' { - return fmt.Sprintf("%s.a", filepath.Join(dir, p)), true - } - pkg, ok := find_go_dag_package(p, dir) - if ok { - return pkg, true - } - return find_global_file(p, context) -} - -func path_and_alias(imp *ast.ImportSpec) (string, string) { - path := "" - if imp.Path != nil && len(imp.Path.Value) > 0 { - path = string(imp.Path.Value) - path = path[1 : len(path)-1] - } - alias := "" - if imp.Name != nil { - alias = imp.Name.Name - } - return path, alias -} - -func find_go_dag_package(imp, filedir string) (string, bool) { - // Support godag directory structure - dir, pkg := filepath.Split(imp) - godag_pkg := filepath.Join(filedir, "..", dir, "_obj", pkg+".a") - if file_exists(godag_pkg) { - return godag_pkg, true - } - return "", false -} - -// autobuild compares the mod time of the source files of the package, and if any of them is newer -// than the package object file will rebuild it. -func autobuild(p *build.Package) error { - if p.Dir == "" { - return fmt.Errorf("no files to build") - } - ps, err := os.Stat(p.PkgObj) - if err != nil { - // Assume package file does not exist and build for the first time. - return build_package(p) - } - pt := ps.ModTime() - fs, err := readdir_lstat(p.Dir) - if err != nil { - return err - } - for _, f := range fs { - if f.IsDir() { - continue - } - if f.ModTime().After(pt) { - // Source file is newer than package file; rebuild. - return build_package(p) - } - } - return nil -} - -// build_package builds the package by calling `go install package/import`. If everything compiles -// correctly, the newly compiled package should then be in the usual place in the `$GOPATH/pkg` -// directory, and gocode will pick it up from there. -func build_package(p *build.Package) error { - if *g_debug { - log.Printf("-------------------") - log.Printf("rebuilding package %s", p.Name) - log.Printf("package import: %s", p.ImportPath) - log.Printf("package object: %s", p.PkgObj) - log.Printf("package source dir: %s", p.Dir) - log.Printf("package source files: %v", p.GoFiles) - log.Printf("GOPATH: %v", g_daemon.context.GOPATH) - log.Printf("GOROOT: %v", g_daemon.context.GOROOT) - } - env := os.Environ() - for i, v := range env { - if strings.HasPrefix(v, "GOPATH=") { - env[i] = "GOPATH=" + g_daemon.context.GOPATH - } else if strings.HasPrefix(v, "GOROOT=") { - env[i] = "GOROOT=" + g_daemon.context.GOROOT - } - } - - cmd := exec.Command("go", "install", p.ImportPath) - cmd.Env = env - - // TODO: Should read STDERR rather than STDOUT. - out, err := cmd.CombinedOutput() - if err != nil { - return err - } - if *g_debug { - log.Printf("build out: %s\n", string(out)) - } - return nil -} - -// executes autobuild function if autobuild option is enabled, logs error and -// ignores it -func try_autobuild(p *build.Package) { - if g_config.Autobuild { - err := autobuild(p) - if err != nil && *g_debug { - log.Printf("Autobuild error: %s\n", err) - } - } -} - -func log_found_package_maybe(imp, pkgpath string) { - if *g_debug { - log.Printf("Found %q at %q\n", imp, pkgpath) - } -} - -func log_build_context(context *package_lookup_context) { - log.Printf(" GOROOT: %s\n", context.GOROOT) - log.Printf(" GOPATH: %s\n", context.GOPATH) - log.Printf(" GOOS: %s\n", context.GOOS) - log.Printf(" GOARCH: %s\n", context.GOARCH) - log.Printf(" BzlProjectRoot: %q\n", context.BzlProjectRoot) - log.Printf(" GBProjectRoot: %q\n", context.GBProjectRoot) - log.Printf(" lib-path: %q\n", g_config.LibPath) -} - -// find_global_file returns the file path of the compiled package corresponding to the specified -// import, and a boolean stating whether such path is valid. -// TODO: Return only one value, possibly empty string if not found. -func find_global_file(imp string, context *package_lookup_context) (string, bool) { - // gocode synthetically generates the builtin package - // "unsafe", since the "unsafe.a" package doesn't really exist. - // Thus, when the user request for the package "unsafe" we - // would return synthetic global file that would be used - // just as a key name to find this synthetic package - if imp == "unsafe" { - return "unsafe", true - } - - pkgfile := fmt.Sprintf("%s.a", imp) - - // if lib-path is defined, use it - if g_config.LibPath != "" { - for _, p := range filepath.SplitList(g_config.LibPath) { - pkg_path := filepath.Join(p, pkgfile) - if file_exists(pkg_path) { - log_found_package_maybe(imp, pkg_path) - return pkg_path, true - } - // Also check the relevant pkg/OS_ARCH dir for the libpath, if provided. - pkgdir := fmt.Sprintf("%s_%s", context.GOOS, context.GOARCH) - pkg_path = filepath.Join(p, "pkg", pkgdir, pkgfile) - if file_exists(pkg_path) { - log_found_package_maybe(imp, pkg_path) - return pkg_path, true - } - } - } - - // gb-specific lookup mode, only if the root dir was found - if g_config.PackageLookupMode == "gb" && context.GBProjectRoot != "" { - root := context.GBProjectRoot - pkgdir := filepath.Join(root, "pkg", context.GOOS+"-"+context.GOARCH) - if !is_dir(pkgdir) { - pkgdir = filepath.Join(root, "pkg", context.GOOS+"-"+context.GOARCH+"-race") - } - pkg_path := filepath.Join(pkgdir, pkgfile) - if file_exists(pkg_path) { - log_found_package_maybe(imp, pkg_path) - return pkg_path, true - } - } - - // bzl-specific lookup mode, only if the root dir was found - if g_config.PackageLookupMode == "bzl" && context.BzlProjectRoot != "" { - var root, impath string - if strings.HasPrefix(imp, g_config.CustomPkgPrefix+"/") { - root = filepath.Join(context.BzlProjectRoot, "bazel-bin") - impath = imp[len(g_config.CustomPkgPrefix)+1:] - } else if g_config.CustomVendorDir != "" { - // Try custom vendor dir. - root = filepath.Join(context.BzlProjectRoot, "bazel-bin", g_config.CustomVendorDir) - impath = imp - } - - if root != "" && impath != "" { - // There might be more than one ".a" files in the pkg path with bazel. - // But the best practice is to keep one go_library build target in each - // pakcage directory so that it follows the standard Go package - // structure. Thus here we assume there is at most one ".a" file existing - // in the pkg path. - if d, err := os.Open(filepath.Join(root, impath)); err == nil { - defer d.Close() - - if fis, err := d.Readdir(-1); err == nil { - for _, fi := range fis { - if !fi.IsDir() && filepath.Ext(fi.Name()) == ".a" { - pkg_path := filepath.Join(root, impath, fi.Name()) - log_found_package_maybe(imp, pkg_path) - return pkg_path, true - } - } - } - } - } - } - - if context.CurrentPackagePath != "" { - // Try vendor path first, see GO15VENDOREXPERIMENT. - // We don't check this environment variable however, seems like there is - // almost no harm in doing so (well.. if you experiment with vendoring, - // gocode will fail after enabling/disabling the flag, and you'll be - // forced to get rid of vendor binaries). But asking users to set this - // env var is up will bring more trouble. Because we also need to pass - // it from client to server, make sure their editors set it, etc. - // So, whatever, let's just pretend it's always on. - package_path := context.CurrentPackagePath - for { - limp := filepath.Join(package_path, "vendor", imp) - if p, err := context.Import(limp, "", build.AllowBinary|build.FindOnly); err == nil { - try_autobuild(p) - if file_exists(p.PkgObj) { - log_found_package_maybe(imp, p.PkgObj) - return p.PkgObj, true - } - } - if package_path == "" { - break - } - next_path := filepath.Dir(package_path) - // let's protect ourselves from inf recursion here - if next_path == package_path { - break - } - package_path = next_path - } - } - - if p, err := context.Import(imp, "", build.AllowBinary|build.FindOnly); err == nil { - try_autobuild(p) - if file_exists(p.PkgObj) { - log_found_package_maybe(imp, p.PkgObj) - return p.PkgObj, true - } - } - - if *g_debug { - log.Printf("Import path %q was not resolved\n", imp) - log.Println("Gocode's build context is:") - log_build_context(context) - } - return "", false -} - -func package_name(file *ast.File) string { - if file.Name != nil { - return file.Name.Name - } - return "" -} - -//------------------------------------------------------------------------- -// decl_cache -// -// Thread-safe collection of DeclFileCache entities. -//------------------------------------------------------------------------- - -type package_lookup_context struct { - build.Context - BzlProjectRoot string - GBProjectRoot string - CurrentPackagePath string -} - -// gopath returns the list of Go path directories. -func (ctxt *package_lookup_context) gopath() []string { - var all []string - for _, p := range filepath.SplitList(ctxt.GOPATH) { - if p == "" || p == ctxt.GOROOT { - // Empty paths are uninteresting. - // If the path is the GOROOT, ignore it. - // People sometimes set GOPATH=$GOROOT. - // Do not get confused by this common mistake. - continue - } - if strings.HasPrefix(p, "~") { - // Path segments starting with ~ on Unix are almost always - // users who have incorrectly quoted ~ while setting GOPATH, - // preventing it from expanding to $HOME. - // The situation is made more confusing by the fact that - // bash allows quoted ~ in $PATH (most shells do not). - // Do not get confused by this, and do not try to use the path. - // It does not exist, and printing errors about it confuses - // those users even more, because they think "sure ~ exists!". - // The go command diagnoses this situation and prints a - // useful error. - // On Windows, ~ is used in short names, such as c:\progra~1 - // for c:\program files. - continue - } - all = append(all, p) - } - return all -} - -func (ctxt *package_lookup_context) pkg_dirs() (string, []string) { - pkgdir := fmt.Sprintf("%s_%s", ctxt.GOOS, ctxt.GOARCH) - - var currentPackagePath string - var all []string - if ctxt.GOROOT != "" { - dir := filepath.Join(ctxt.GOROOT, "pkg", pkgdir) - if is_dir(dir) { - all = append(all, dir) - } - } - - switch g_config.PackageLookupMode { - case "go": - currentPackagePath = ctxt.CurrentPackagePath - for _, p := range ctxt.gopath() { - dir := filepath.Join(p, "pkg", pkgdir) - if is_dir(dir) { - all = append(all, dir) - } - dir = filepath.Join(dir, currentPackagePath, "vendor") - if is_dir(dir) { - all = append(all, dir) - } - } - case "gb": - if ctxt.GBProjectRoot != "" { - pkgdir := fmt.Sprintf("%s-%s", ctxt.GOOS, ctxt.GOARCH) - if !is_dir(pkgdir) { - pkgdir = fmt.Sprintf("%s-%s-race", ctxt.GOOS, ctxt.GOARCH) - } - dir := filepath.Join(ctxt.GBProjectRoot, "pkg", pkgdir) - if is_dir(dir) { - all = append(all, dir) - } - } - case "bzl": - // TODO: Support bazel mode - } - return currentPackagePath, all -} - -type decl_cache struct { - cache map[string]*decl_file_cache - context *package_lookup_context - sync.Mutex -} - -func new_decl_cache(context *package_lookup_context) *decl_cache { - return &decl_cache{ - cache: make(map[string]*decl_file_cache), - context: context, - } -} - -func (c *decl_cache) get(filename string) *decl_file_cache { - c.Lock() - defer c.Unlock() - - f, ok := c.cache[filename] - if !ok { - f = new_decl_file_cache(filename, c.context) - c.cache[filename] = f - } - return f -} - -func (c *decl_cache) get_and_update(filename string) *decl_file_cache { - f := c.get(filename) - f.update() - return f -} diff --git a/vendor/github.com/nsf/gocode/formatters.go b/vendor/github.com/nsf/gocode/formatters.go deleted file mode 100644 index 4a9738c..0000000 --- a/vendor/github.com/nsf/gocode/formatters.go +++ /dev/null @@ -1,186 +0,0 @@ -package main - -import ( - "fmt" - "strings" -) - -//------------------------------------------------------------------------- -// formatter interfaces -//------------------------------------------------------------------------- - -type formatter interface { - write_candidates(candidates []candidate, num int) -} - -//------------------------------------------------------------------------- -// nice_formatter (just for testing, simple textual output) -//------------------------------------------------------------------------- - -type nice_formatter struct{} - -func (*nice_formatter) write_candidates(candidates []candidate, num int) { - if candidates == nil { - fmt.Printf("Nothing to complete.\n") - return - } - - fmt.Printf("Found %d candidates:\n", len(candidates)) - for _, c := range candidates { - abbr := fmt.Sprintf("%s %s %s", c.Class, c.Name, c.Type) - if c.Class == decl_func { - abbr = fmt.Sprintf("%s %s%s", c.Class, c.Name, c.Type[len("func"):]) - } - fmt.Printf(" %s\n", abbr) - } -} - -//------------------------------------------------------------------------- -// vim_formatter -//------------------------------------------------------------------------- - -type vim_formatter struct{} - -func (*vim_formatter) write_candidates(candidates []candidate, num int) { - if candidates == nil { - fmt.Print("[0, []]") - return - } - - fmt.Printf("[%d, [", num) - for i, c := range candidates { - if i != 0 { - fmt.Printf(", ") - } - - word := c.Name - if c.Class == decl_func { - word += "(" - if strings.HasPrefix(c.Type, "func()") { - word += ")" - } - } - - abbr := fmt.Sprintf("%s %s %s", c.Class, c.Name, c.Type) - if c.Class == decl_func { - abbr = fmt.Sprintf("%s %s%s", c.Class, c.Name, c.Type[len("func"):]) - } - fmt.Printf("{'word': '%s', 'abbr': '%s', 'info': '%s'}", word, abbr, abbr) - } - fmt.Printf("]]") -} - -//------------------------------------------------------------------------- -// godit_formatter -//------------------------------------------------------------------------- - -type godit_formatter struct{} - -func (*godit_formatter) write_candidates(candidates []candidate, num int) { - fmt.Printf("%d,,%d\n", num, len(candidates)) - for _, c := range candidates { - contents := c.Name - if c.Class == decl_func { - contents += "(" - if strings.HasPrefix(c.Type, "func()") { - contents += ")" - } - } - - display := fmt.Sprintf("%s %s %s", c.Class, c.Name, c.Type) - if c.Class == decl_func { - display = fmt.Sprintf("%s %s%s", c.Class, c.Name, c.Type[len("func"):]) - } - fmt.Printf("%s,,%s\n", display, contents) - } -} - -//------------------------------------------------------------------------- -// emacs_formatter -//------------------------------------------------------------------------- - -type emacs_formatter struct{} - -func (*emacs_formatter) write_candidates(candidates []candidate, num int) { - for _, c := range candidates { - var hint string - switch { - case c.Class == decl_func: - hint = c.Type - case c.Type == "": - hint = c.Class.String() - default: - hint = c.Class.String() + " " + c.Type - } - fmt.Printf("%s,,%s\n", c.Name, hint) - } -} - -//------------------------------------------------------------------------- -// csv_formatter -//------------------------------------------------------------------------- - -type csv_formatter struct{} - -func (*csv_formatter) write_candidates(candidates []candidate, num int) { - for _, c := range candidates { - fmt.Printf("%s,,%s,,%s\n", c.Class, c.Name, c.Type) - } -} - -//------------------------------------------------------------------------- -// csv_with_package_formatter -//------------------------------------------------------------------------- - -type csv_with_package_formatter struct{} - -func (*csv_with_package_formatter) write_candidates(candidates []candidate, num int) { - for _, c := range candidates { - fmt.Printf("%s,,%s,,%s,,%s\n", c.Class, c.Name, c.Type, c.Package) - } -} - -//------------------------------------------------------------------------- -// json_formatter -//------------------------------------------------------------------------- - -type json_formatter struct{} - -func (*json_formatter) write_candidates(candidates []candidate, num int) { - if candidates == nil { - fmt.Print("[]") - return - } - - fmt.Printf(`[%d, [`, num) - for i, c := range candidates { - if i != 0 { - fmt.Printf(", ") - } - fmt.Printf(`{"class": "%s", "name": "%s", "type": "%s", "package": "%s"}`, - c.Class, c.Name, c.Type, c.Package) - } - fmt.Print("]]") -} - -//------------------------------------------------------------------------- - -func get_formatter(name string) formatter { - switch name { - case "vim": - return new(vim_formatter) - case "emacs": - return new(emacs_formatter) - case "nice": - return new(nice_formatter) - case "csv": - return new(csv_formatter) - case "csv-with-package": - return new(csv_with_package_formatter) - case "json": - return new(json_formatter) - case "godit": - return new(godit_formatter) - } - return new(nice_formatter) -} diff --git a/vendor/github.com/nsf/gocode/gocode.go b/vendor/github.com/nsf/gocode/gocode.go deleted file mode 100644 index b0dd5a2..0000000 --- a/vendor/github.com/nsf/gocode/gocode.go +++ /dev/null @@ -1,74 +0,0 @@ -package main - -import ( - "flag" - "fmt" - "log" - "net/http" - _ "net/http/pprof" - "os" - "path/filepath" -) - -var ( - g_is_server = flag.Bool("s", false, "run a server instead of a client") - g_format = flag.String("f", "nice", "output format (vim | emacs | nice | csv | csv-with-package | json)") - g_input = flag.String("in", "", "use this file instead of stdin input") - g_sock = create_sock_flag("sock", "socket type (unix | tcp)") - g_addr = flag.String("addr", "127.0.0.1:37373", "address for tcp socket") - g_debug = flag.Bool("debug", false, "enable server-side debug mode") - g_profile = flag.Int("profile", 0, "port on which to expose profiling information for pprof; 0 to disable profiling") -) - -func get_socket_filename() string { - user := os.Getenv("USER") - if user == "" { - user = "all" - } - return filepath.Join(os.TempDir(), fmt.Sprintf("gocode-daemon.%s", user)) -} - -func show_usage() { - fmt.Fprintf(os.Stderr, - "Usage: %s [-s] [-f=] [-in=] [-sock=] [-addr=]\n"+ - " []\n\n", - os.Args[0]) - fmt.Fprintf(os.Stderr, - "Flags:\n") - flag.PrintDefaults() - fmt.Fprintf(os.Stderr, - "\nCommands:\n"+ - " autocomplete [] main autocompletion command\n"+ - " close close the gocode daemon\n"+ - " drop-cache drop gocode daemon's cache\n"+ - " options list config options (extended)\n"+ - " set [ []] list or set config options\n"+ - " status gocode daemon status report\n"+ - "") -} - -func main() { - flag.Usage = show_usage - flag.Parse() - - var retval int - if *g_is_server { - go func() { - if *g_profile <= 0 { - return - } - addr := fmt.Sprintf("localhost:%d", *g_profile) - // Use the following commands to profile the binary: - // go tool pprof http://localhost:6060/debug/pprof/profile # 30-second CPU profile - // go tool pprof http://localhost:6060/debug/pprof/heap # heap profile - // go tool pprof http://localhost:6060/debug/pprof/block # goroutine blocking profile - // See http://blog.golang.org/profiling-go-programs for more info. - log.Printf("enabling profiler on %s", addr) - log.Print(http.ListenAndServe(addr, nil)) - }() - retval = do_server() - } else { - retval = do_client() - } - os.Exit(retval) -} diff --git a/vendor/github.com/nsf/gocode/os_posix.go b/vendor/github.com/nsf/gocode/os_posix.go deleted file mode 100644 index ac076e3..0000000 --- a/vendor/github.com/nsf/gocode/os_posix.go +++ /dev/null @@ -1,48 +0,0 @@ -// +build !windows - -package main - -import ( - "flag" - "os" - "os/exec" - "path/filepath" -) - -func create_sock_flag(name, desc string) *string { - return flag.String(name, "unix", desc) -} - -// Full path of the current executable -func get_executable_filename() string { - // try readlink first - path, err := os.Readlink("/proc/self/exe") - if err == nil { - return path - } - // use argv[0] - path = os.Args[0] - if !filepath.IsAbs(path) { - cwd, _ := os.Getwd() - path = filepath.Join(cwd, path) - } - if file_exists(path) { - return path - } - // Fallback : use "gocode" and assume we are in the PATH... - path, err = exec.LookPath("gocode") - if err == nil { - return path - } - return "" -} - -// config location - -func config_dir() string { - return filepath.Join(xdg_home_dir(), "gocode") -} - -func config_file() string { - return filepath.Join(xdg_home_dir(), "gocode", "config.json") -} diff --git a/vendor/github.com/nsf/gocode/os_windows.go b/vendor/github.com/nsf/gocode/os_windows.go deleted file mode 100644 index 1a63f9d..0000000 --- a/vendor/github.com/nsf/gocode/os_windows.go +++ /dev/null @@ -1,56 +0,0 @@ -package main - -import ( - "flag" - "fmt" - "path/filepath" - "syscall" - "unsafe" -) - -var ( - shell32 = syscall.NewLazyDLL("shell32.dll") - kernel32 = syscall.NewLazyDLL("kernel32.dll") -) - -var ( - proc_sh_get_folder_path = shell32.NewProc("SHGetFolderPathW") - proc_get_module_file_name = kernel32.NewProc("GetModuleFileNameW") -) - -func create_sock_flag(name, desc string) *string { - return flag.String(name, "tcp", desc) -} - -// Full path of the current executable -func get_executable_filename() string { - b := make([]uint16, syscall.MAX_PATH) - ret, _, err := syscall.Syscall(proc_get_module_file_name.Addr(), 3, - 0, uintptr(unsafe.Pointer(&b[0])), uintptr(len(b))) - if int(ret) == 0 { - panic(fmt.Sprintf("GetModuleFileNameW : err %d", int(err))) - } - return syscall.UTF16ToString(b) -} - -const ( - csidl_appdata = 0x1a -) - -func get_appdata_folder_path() string { - b := make([]uint16, syscall.MAX_PATH) - ret, _, err := syscall.Syscall6(proc_sh_get_folder_path.Addr(), 5, - 0, csidl_appdata, 0, 0, uintptr(unsafe.Pointer(&b[0])), 0) - if int(ret) != 0 { - panic(fmt.Sprintf("SHGetFolderPathW : err %d", int(err))) - } - return syscall.UTF16ToString(b) -} - -func config_dir() string { - return filepath.Join(get_appdata_folder_path(), "gocode") -} - -func config_file() string { - return filepath.Join(get_appdata_folder_path(), "gocode", "config.json") -} diff --git a/vendor/github.com/nsf/gocode/package.go b/vendor/github.com/nsf/gocode/package.go deleted file mode 100644 index 687cb80..0000000 --- a/vendor/github.com/nsf/gocode/package.go +++ /dev/null @@ -1,254 +0,0 @@ -package main - -import ( - "bytes" - "fmt" - "go/ast" - "os" - "strings" -) - -type package_parser interface { - parse_export(callback func(pkg string, decl ast.Decl)) -} - -//------------------------------------------------------------------------- -// package_file_cache -// -// Structure that represents a cache for an imported pacakge. In other words -// these are the contents of an archive (*.a) file. -//------------------------------------------------------------------------- - -type package_file_cache struct { - name string // file name - import_name string - mtime int64 - defalias string - - scope *scope - main *decl // package declaration - others map[string]*decl -} - -func new_package_file_cache(absname, name string) *package_file_cache { - m := new(package_file_cache) - m.name = absname - m.import_name = name - m.mtime = 0 - m.defalias = "" - return m -} - -// Creates a cache that stays in cache forever. Useful for built-in packages. -func new_package_file_cache_forever(name, defalias string) *package_file_cache { - m := new(package_file_cache) - m.name = name - m.mtime = -1 - m.defalias = defalias - return m -} - -func (m *package_file_cache) find_file() string { - if file_exists(m.name) { - return m.name - } - - n := len(m.name) - filename := m.name[:n-1] + "6" - if file_exists(filename) { - return filename - } - - filename = m.name[:n-1] + "8" - if file_exists(filename) { - return filename - } - - filename = m.name[:n-1] + "5" - if file_exists(filename) { - return filename - } - return m.name -} - -func (m *package_file_cache) update_cache() { - if m.mtime == -1 { - return - } - fname := m.find_file() - stat, err := os.Stat(fname) - if err != nil { - return - } - - statmtime := stat.ModTime().UnixNano() - if m.mtime != statmtime { - m.mtime = statmtime - - data, err := file_reader.read_file(fname) - if err != nil { - return - } - m.process_package_data(data) - } -} - -func (m *package_file_cache) process_package_data(data []byte) { - m.scope = new_named_scope(g_universe_scope, m.name) - - // find import section - i := bytes.Index(data, []byte{'\n', '$', '$'}) - if i == -1 { - panic(fmt.Sprintf("Can't find the import section in the package file %s", m.name)) - } - data = data[i+len("\n$$"):] - - // main package - m.main = new_decl(m.name, decl_package, nil) - // create map for other packages - m.others = make(map[string]*decl) - - var pp package_parser - if data[0] == 'B' { - // binary format, skip 'B\n' - data = data[2:] - var p gc_bin_parser - p.init(data, m) - pp = &p - } else { - // textual format, find the beginning of the package clause - i = bytes.Index(data, []byte{'p', 'a', 'c', 'k', 'a', 'g', 'e'}) - if i == -1 { - panic("Can't find the package clause") - } - data = data[i:] - - var p gc_parser - p.init(data, m) - pp = &p - } - - prefix := "!" + m.name + "!" - pp.parse_export(func(pkg string, decl ast.Decl) { - anonymify_ast(decl, decl_foreign, m.scope) - if pkg == "" || strings.HasPrefix(pkg, prefix) { - // main package - add_ast_decl_to_package(m.main, decl, m.scope) - } else { - // others - if _, ok := m.others[pkg]; !ok { - m.others[pkg] = new_decl(pkg, decl_package, nil) - } - add_ast_decl_to_package(m.others[pkg], decl, m.scope) - } - }) - - // hack, add ourselves to the package scope - mainName := "!" + m.name + "!" + m.defalias - m.add_package_to_scope(mainName, m.name) - - // replace dummy package decls in package scope to actual packages - for key := range m.scope.entities { - if !strings.HasPrefix(key, "!") { - continue - } - pkg, ok := m.others[key] - if !ok && key == mainName { - pkg = m.main - } - m.scope.replace_decl(key, pkg) - } -} - -func (m *package_file_cache) add_package_to_scope(alias, realname string) { - d := new_decl(realname, decl_package, nil) - m.scope.add_decl(alias, d) -} - -func add_ast_decl_to_package(pkg *decl, decl ast.Decl, scope *scope) { - foreach_decl(decl, func(data *foreach_decl_struct) { - class := ast_decl_class(data.decl) - for i, name := range data.names { - typ, v, vi := data.type_value_index(i) - - d := new_decl_full(name.Name, class, decl_foreign|ast_decl_flags(data.decl), typ, v, vi, scope) - if d == nil { - return - } - - if !name.IsExported() && d.class != decl_type { - return - } - - methodof := method_of(data.decl) - if methodof != "" { - decl := pkg.find_child(methodof) - if decl != nil { - decl.add_child(d) - } else { - decl = new_decl(methodof, decl_methods_stub, scope) - decl.add_child(d) - pkg.add_child(decl) - } - } else { - decl := pkg.find_child(d.name) - if decl != nil { - decl.expand_or_replace(d) - } else { - pkg.add_child(d) - } - } - } - }) -} - -//------------------------------------------------------------------------- -// package_cache -//------------------------------------------------------------------------- - -type package_cache map[string]*package_file_cache - -func new_package_cache() package_cache { - m := make(package_cache) - - // add built-in "unsafe" package - m.add_builtin_unsafe_package() - - return m -} - -// Function fills 'ps' set with packages from 'packages' import information. -// In case if package is not in the cache, it creates one and adds one to the cache. -func (c package_cache) append_packages(ps map[string]*package_file_cache, pkgs []package_import) { - for _, m := range pkgs { - if _, ok := ps[m.abspath]; ok { - continue - } - - if mod, ok := c[m.abspath]; ok { - ps[m.abspath] = mod - } else { - mod = new_package_file_cache(m.abspath, m.path) - ps[m.abspath] = mod - c[m.abspath] = mod - } - } -} - -var g_builtin_unsafe_package = []byte(` -import -$$ -package unsafe - type @"".Pointer uintptr - func @"".Offsetof (? any) uintptr - func @"".Sizeof (? any) uintptr - func @"".Alignof (? any) uintptr - -$$ -`) - -func (c package_cache) add_builtin_unsafe_package() { - pkg := new_package_file_cache_forever("unsafe", "unsafe") - pkg.process_package_data(g_builtin_unsafe_package) - c["unsafe"] = pkg -} diff --git a/vendor/github.com/nsf/gocode/package_bin.go b/vendor/github.com/nsf/gocode/package_bin.go deleted file mode 100644 index 4a51c74..0000000 --- a/vendor/github.com/nsf/gocode/package_bin.go +++ /dev/null @@ -1,829 +0,0 @@ -package main - -import ( - "encoding/binary" - "fmt" - "go/ast" - "go/token" - "strconv" - "strings" - "unicode" - "unicode/utf8" -) - -//------------------------------------------------------------------------- -// gc_bin_parser -// -// The following part of the code may contain portions of the code from the Go -// standard library, which tells me to retain their copyright notice: -// -// Copyright (c) 2012 The Go Authors. All rights reserved. -// -// Redistribution and use in source and binary forms, with or without -// modification, are permitted provided that the following conditions are -// met: -// -// * Redistributions of source code must retain the above copyright -// notice, this list of conditions and the following disclaimer. -// * Redistributions in binary form must reproduce the above -// copyright notice, this list of conditions and the following disclaimer -// in the documentation and/or other materials provided with the -// distribution. -// * Neither the name of Google Inc. nor the names of its -// contributors may be used to endorse or promote products derived from -// this software without specific prior written permission. -// -// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS -// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT -// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR -// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT -// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, -// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT -// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, -// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY -// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE -// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. -//------------------------------------------------------------------------- - -type gc_bin_parser struct { - data []byte - buf []byte // for reading strings - version int // export format version - - // object lists - strList []string // in order of appearance - pathList []string // in order of appearance - pkgList []string // in order of appearance - typList []ast.Expr // in order of appearance - callback func(pkg string, decl ast.Decl) - pfc *package_file_cache - trackAllTypes bool - - // position encoding - posInfoFormat bool - prevFile string - prevLine int - - // debugging support - debugFormat bool - read int // bytes read - -} - -func (p *gc_bin_parser) init(data []byte, pfc *package_file_cache) { - p.data = data - p.version = -1 // unknown version - p.strList = []string{""} // empty string is mapped to 0 - p.pathList = []string{""} // empty string is mapped to 0 - p.pfc = pfc -} - -func (p *gc_bin_parser) parse_export(callback func(string, ast.Decl)) { - p.callback = callback - - // read version info - var versionstr string - if b := p.rawByte(); b == 'c' || b == 'd' { - // Go1.7 encoding; first byte encodes low-level - // encoding format (compact vs debug). - // For backward-compatibility only (avoid problems with - // old installed packages). Newly compiled packages use - // the extensible format string. - // TODO(gri) Remove this support eventually; after Go1.8. - if b == 'd' { - p.debugFormat = true - } - p.trackAllTypes = p.rawByte() == 'a' - p.posInfoFormat = p.int() != 0 - versionstr = p.string() - if versionstr == "v1" { - p.version = 0 - } - } else { - // Go1.8 extensible encoding - // read version string and extract version number (ignore anything after the version number) - versionstr = p.rawStringln(b) - if s := strings.SplitN(versionstr, " ", 3); len(s) >= 2 && s[0] == "version" { - if v, err := strconv.Atoi(s[1]); err == nil && v > 0 { - p.version = v - } - } - } - - // read version specific flags - extend as necessary - switch p.version { - // case 6: - // ... - // fallthrough - case 5, 4, 3, 2, 1: - p.debugFormat = p.rawStringln(p.rawByte()) == "debug" - p.trackAllTypes = p.int() != 0 - p.posInfoFormat = p.int() != 0 - case 0: - // Go1.7 encoding format - nothing to do here - default: - panic(fmt.Errorf("unknown export format version %d (%q)", p.version, versionstr)) - } - - // --- generic export data --- - - // populate typList with predeclared "known" types - p.typList = append(p.typList, predeclared...) - - // read package data - pkgName := p.pkg() - p.pfc.defalias = pkgName[strings.LastIndex(pkgName, "!")+1:] - - // read objects of phase 1 only (see cmd/compiler/internal/gc/bexport.go) - objcount := 0 - for { - tag := p.tagOrIndex() - if tag == endTag { - break - } - p.obj(tag) - objcount++ - } - - // self-verification - if count := p.int(); count != objcount { - panic(fmt.Sprintf("got %d objects; want %d", objcount, count)) - } -} - -func (p *gc_bin_parser) pkg() string { - // if the package was seen before, i is its index (>= 0) - i := p.tagOrIndex() - if i >= 0 { - return p.pkgList[i] - } - - // otherwise, i is the package tag (< 0) - if i != packageTag { - panic(fmt.Sprintf("unexpected package tag %d version %d", i, p.version)) - } - - // read package data - name := p.string() - var path string - if p.version >= 5 { - path = p.path() - } else { - path = p.string() - } - - // we should never see an empty package name - if name == "" { - panic("empty package name in import") - } - - // an empty path denotes the package we are currently importing; - // it must be the first package we see - if (path == "") != (len(p.pkgList) == 0) { - panic(fmt.Sprintf("package path %q for pkg index %d", path, len(p.pkgList))) - } - - var fullName string - if path != "" { - fullName = "!" + path + "!" + name - p.pfc.add_package_to_scope(fullName, path) - } else { - fullName = "!" + p.pfc.name + "!" + name - } - - // if the package was imported before, use that one; otherwise create a new one - p.pkgList = append(p.pkgList, fullName) - return p.pkgList[len(p.pkgList)-1] -} - -func (p *gc_bin_parser) obj(tag int) { - switch tag { - case constTag: - p.pos() - pkg, name := p.qualifiedName() - typ := p.typ("") - p.skipValue() // ignore const value, gocode's not interested - p.callback(pkg, &ast.GenDecl{ - Tok: token.CONST, - Specs: []ast.Spec{ - &ast.ValueSpec{ - Names: []*ast.Ident{ast.NewIdent(name)}, - Type: typ, - Values: []ast.Expr{&ast.BasicLit{Kind: token.INT, Value: "0"}}, - }, - }, - }) - - case aliasTag: - // TODO(gri) verify type alias hookup is correct - p.pos() - pkg, name := p.qualifiedName() - typ := p.typ("") - p.callback(pkg, &ast.GenDecl{ - Tok: token.TYPE, - Specs: []ast.Spec{typeAliasSpec(name, typ)}, - }) - - case typeTag: - _ = p.typ("") - - case varTag: - p.pos() - pkg, name := p.qualifiedName() - typ := p.typ("") - p.callback(pkg, &ast.GenDecl{ - Tok: token.VAR, - Specs: []ast.Spec{ - &ast.ValueSpec{ - Names: []*ast.Ident{ast.NewIdent(name)}, - Type: typ, - }, - }, - }) - - case funcTag: - p.pos() - pkg, name := p.qualifiedName() - params := p.paramList() - results := p.paramList() - p.callback(pkg, &ast.FuncDecl{ - Name: ast.NewIdent(name), - Type: &ast.FuncType{Params: params, Results: results}, - }) - - default: - panic(fmt.Sprintf("unexpected object tag %d", tag)) - } -} - -const deltaNewFile = -64 // see cmd/compile/internal/gc/bexport.go - -func (p *gc_bin_parser) pos() { - if !p.posInfoFormat { - return - } - - file := p.prevFile - line := p.prevLine - delta := p.int() - line += delta - if p.version >= 5 { - if delta == deltaNewFile { - if n := p.int(); n >= 0 { - // file changed - file = p.path() - line = n - } - } - } else { - if delta == 0 { - if n := p.int(); n >= 0 { - // file changed - file = p.prevFile[:n] + p.string() - line = p.int() - } - } - } - p.prevFile = file - p.prevLine = line - - // TODO(gri) register new position -} - -func (p *gc_bin_parser) qualifiedName() (pkg string, name string) { - name = p.string() - pkg = p.pkg() - return pkg, name -} - -func (p *gc_bin_parser) reserveMaybe() int { - if p.trackAllTypes { - p.typList = append(p.typList, nil) - return len(p.typList) - 1 - } else { - return -1 - } -} - -func (p *gc_bin_parser) recordMaybe(idx int, t ast.Expr) ast.Expr { - if idx == -1 { - return t - } - p.typList[idx] = t - return t -} - -func (p *gc_bin_parser) record(t ast.Expr) { - p.typList = append(p.typList, t) -} - -// parent is the package which declared the type; parent == nil means -// the package currently imported. The parent package is needed for -// exported struct fields and interface methods which don't contain -// explicit package information in the export data. -func (p *gc_bin_parser) typ(parent string) ast.Expr { - // if the type was seen before, i is its index (>= 0) - i := p.tagOrIndex() - if i >= 0 { - return p.typList[i] - } - - // otherwise, i is the type tag (< 0) - switch i { - case namedTag: - // read type object - p.pos() - parent, name := p.qualifiedName() - tdecl := &ast.GenDecl{ - Tok: token.TYPE, - Specs: []ast.Spec{ - &ast.TypeSpec{ - Name: ast.NewIdent(name), - }, - }, - } - - // record it right away (underlying type can contain refs to t) - t := &ast.SelectorExpr{X: ast.NewIdent(parent), Sel: ast.NewIdent(name)} - p.record(t) - - // parse underlying type - t0 := p.typ(parent) - tdecl.Specs[0].(*ast.TypeSpec).Type = t0 - - p.callback(parent, tdecl) - - // interfaces have no methods - if _, ok := t0.(*ast.InterfaceType); ok { - return t - } - - // read associated methods - for i := p.int(); i > 0; i-- { - // TODO(gri) replace this with something closer to fieldName - p.pos() - name := p.string() - if !exported(name) { - p.pkg() - } - - recv := p.paramList() - params := p.paramList() - results := p.paramList() - p.int() // go:nointerface pragma - discarded - - strip_method_receiver(recv) - p.callback(parent, &ast.FuncDecl{ - Recv: recv, - Name: ast.NewIdent(name), - Type: &ast.FuncType{Params: params, Results: results}, - }) - } - return t - case arrayTag: - i := p.reserveMaybe() - n := p.int64() - elt := p.typ(parent) - return p.recordMaybe(i, &ast.ArrayType{ - Len: &ast.BasicLit{Kind: token.INT, Value: fmt.Sprint(n)}, - Elt: elt, - }) - - case sliceTag: - i := p.reserveMaybe() - elt := p.typ(parent) - return p.recordMaybe(i, &ast.ArrayType{Len: nil, Elt: elt}) - - case dddTag: - i := p.reserveMaybe() - elt := p.typ(parent) - return p.recordMaybe(i, &ast.Ellipsis{Elt: elt}) - - case structTag: - i := p.reserveMaybe() - return p.recordMaybe(i, p.structType(parent)) - - case pointerTag: - i := p.reserveMaybe() - elt := p.typ(parent) - return p.recordMaybe(i, &ast.StarExpr{X: elt}) - - case signatureTag: - i := p.reserveMaybe() - params := p.paramList() - results := p.paramList() - return p.recordMaybe(i, &ast.FuncType{Params: params, Results: results}) - - case interfaceTag: - i := p.reserveMaybe() - var embeddeds []*ast.SelectorExpr - for n := p.int(); n > 0; n-- { - p.pos() - if named, ok := p.typ(parent).(*ast.SelectorExpr); ok { - embeddeds = append(embeddeds, named) - } - } - methods := p.methodList(parent) - for _, field := range embeddeds { - methods = append(methods, &ast.Field{Type: field}) - } - return p.recordMaybe(i, &ast.InterfaceType{Methods: &ast.FieldList{List: methods}}) - - case mapTag: - i := p.reserveMaybe() - key := p.typ(parent) - val := p.typ(parent) - return p.recordMaybe(i, &ast.MapType{Key: key, Value: val}) - - case chanTag: - i := p.reserveMaybe() - dir := ast.SEND | ast.RECV - switch d := p.int(); d { - case 1: - dir = ast.RECV - case 2: - dir = ast.SEND - case 3: - // already set - default: - panic(fmt.Sprintf("unexpected channel dir %d", d)) - } - elt := p.typ(parent) - return p.recordMaybe(i, &ast.ChanType{Dir: dir, Value: elt}) - - default: - panic(fmt.Sprintf("unexpected type tag %d", i)) - } -} - -func (p *gc_bin_parser) structType(parent string) *ast.StructType { - var fields []*ast.Field - if n := p.int(); n > 0 { - fields = make([]*ast.Field, n) - for i := range fields { - fields[i], _ = p.field(parent) // (*ast.Field, tag), not interested in tags - } - } - return &ast.StructType{Fields: &ast.FieldList{List: fields}} -} - -func (p *gc_bin_parser) field(parent string) (*ast.Field, string) { - p.pos() - _, name, _ := p.fieldName(parent) - typ := p.typ(parent) - tag := p.string() - - var names []*ast.Ident - if name != "" { - names = []*ast.Ident{ast.NewIdent(name)} - } - return &ast.Field{ - Names: names, - Type: typ, - }, tag -} - -func (p *gc_bin_parser) methodList(parent string) (methods []*ast.Field) { - if n := p.int(); n > 0 { - methods = make([]*ast.Field, n) - for i := range methods { - methods[i] = p.method(parent) - } - } - return -} - -func (p *gc_bin_parser) method(parent string) *ast.Field { - p.pos() - _, name, _ := p.fieldName(parent) - params := p.paramList() - results := p.paramList() - return &ast.Field{ - Names: []*ast.Ident{ast.NewIdent(name)}, - Type: &ast.FuncType{Params: params, Results: results}, - } -} - -func (p *gc_bin_parser) fieldName(parent string) (string, string, bool) { - name := p.string() - pkg := parent - if p.version == 0 && name == "_" { - // version 0 didn't export a package for _ fields - return pkg, name, false - } - var alias bool - switch name { - case "": - // 1) field name matches base type name and is exported: nothing to do - case "?": - // 2) field name matches base type name and is not exported: need package - name = "" - pkg = p.pkg() - case "@": - // 3) field name doesn't match type name (alias) - name = p.string() - alias = true - fallthrough - default: - if !exported(name) { - pkg = p.pkg() - } - } - return pkg, name, alias -} - -func (p *gc_bin_parser) paramList() *ast.FieldList { - n := p.int() - if n == 0 { - return nil - } - // negative length indicates unnamed parameters - named := true - if n < 0 { - n = -n - named = false - } - // n > 0 - flds := make([]*ast.Field, n) - for i := range flds { - flds[i] = p.param(named) - } - return &ast.FieldList{List: flds} -} - -func (p *gc_bin_parser) param(named bool) *ast.Field { - t := p.typ("") - - name := "?" - if named { - name = p.string() - if name == "" { - panic("expected named parameter") - } - if name != "_" { - p.pkg() - } - if i := strings.Index(name, "·"); i > 0 { - name = name[:i] // cut off gc-specific parameter numbering - } - } - - // read and discard compiler-specific info - p.string() - - return &ast.Field{ - Names: []*ast.Ident{ast.NewIdent(name)}, - Type: t, - } -} - -func exported(name string) bool { - ch, _ := utf8.DecodeRuneInString(name) - return unicode.IsUpper(ch) -} - -func (p *gc_bin_parser) skipValue() { - switch tag := p.tagOrIndex(); tag { - case falseTag, trueTag: - case int64Tag: - p.int64() - case floatTag: - p.float() - case complexTag: - p.float() - p.float() - case stringTag: - p.string() - default: - panic(fmt.Sprintf("unexpected value tag %d", tag)) - } -} - -func (p *gc_bin_parser) float() { - sign := p.int() - if sign == 0 { - return - } - - p.int() // exp - p.string() // mant -} - -// ---------------------------------------------------------------------------- -// Low-level decoders - -func (p *gc_bin_parser) tagOrIndex() int { - if p.debugFormat { - p.marker('t') - } - - return int(p.rawInt64()) -} - -func (p *gc_bin_parser) int() int { - x := p.int64() - if int64(int(x)) != x { - panic("exported integer too large") - } - return int(x) -} - -func (p *gc_bin_parser) int64() int64 { - if p.debugFormat { - p.marker('i') - } - - return p.rawInt64() -} - -func (p *gc_bin_parser) path() string { - if p.debugFormat { - p.marker('p') - } - // if the path was seen before, i is its index (>= 0) - // (the empty string is at index 0) - i := p.rawInt64() - if i >= 0 { - return p.pathList[i] - } - // otherwise, i is the negative path length (< 0) - a := make([]string, -i) - for n := range a { - a[n] = p.string() - } - s := strings.Join(a, "/") - p.pathList = append(p.pathList, s) - return s -} - -func (p *gc_bin_parser) string() string { - if p.debugFormat { - p.marker('s') - } - // if the string was seen before, i is its index (>= 0) - // (the empty string is at index 0) - i := p.rawInt64() - if i >= 0 { - return p.strList[i] - } - // otherwise, i is the negative string length (< 0) - if n := int(-i); n <= cap(p.buf) { - p.buf = p.buf[:n] - } else { - p.buf = make([]byte, n) - } - for i := range p.buf { - p.buf[i] = p.rawByte() - } - s := string(p.buf) - p.strList = append(p.strList, s) - return s -} - -func (p *gc_bin_parser) marker(want byte) { - if got := p.rawByte(); got != want { - panic(fmt.Sprintf("incorrect marker: got %c; want %c (pos = %d)", got, want, p.read)) - } - - pos := p.read - if n := int(p.rawInt64()); n != pos { - panic(fmt.Sprintf("incorrect position: got %d; want %d", n, pos)) - } -} - -// rawInt64 should only be used by low-level decoders. -func (p *gc_bin_parser) rawInt64() int64 { - i, err := binary.ReadVarint(p) - if err != nil { - panic(fmt.Sprintf("read error: %v", err)) - } - return i -} - -// rawStringln should only be used to read the initial version string. -func (p *gc_bin_parser) rawStringln(b byte) string { - p.buf = p.buf[:0] - for b != '\n' { - p.buf = append(p.buf, b) - b = p.rawByte() - } - return string(p.buf) -} - -// needed for binary.ReadVarint in rawInt64 -func (p *gc_bin_parser) ReadByte() (byte, error) { - return p.rawByte(), nil -} - -// byte is the bottleneck interface for reading p.data. -// It unescapes '|' 'S' to '$' and '|' '|' to '|'. -// rawByte should only be used by low-level decoders. -func (p *gc_bin_parser) rawByte() byte { - b := p.data[0] - r := 1 - if b == '|' { - b = p.data[1] - r = 2 - switch b { - case 'S': - b = '$' - case '|': - // nothing to do - default: - panic("unexpected escape sequence in export data") - } - } - p.data = p.data[r:] - p.read += r - return b - -} - -// ---------------------------------------------------------------------------- -// Export format - -// Tags. Must be < 0. -const ( - // Objects - packageTag = -(iota + 1) - constTag - typeTag - varTag - funcTag - endTag - - // Types - namedTag - arrayTag - sliceTag - dddTag - structTag - pointerTag - signatureTag - interfaceTag - mapTag - chanTag - - // Values - falseTag - trueTag - int64Tag - floatTag - fractionTag // not used by gc - complexTag - stringTag - nilTag // only used by gc (appears in exported inlined function bodies) - unknownTag // not used by gc (only appears in packages with errors) - - // Type aliases - aliasTag -) - -var predeclared = []ast.Expr{ - // basic types - ast.NewIdent("bool"), - ast.NewIdent("int"), - ast.NewIdent("int8"), - ast.NewIdent("int16"), - ast.NewIdent("int32"), - ast.NewIdent("int64"), - ast.NewIdent("uint"), - ast.NewIdent("uint8"), - ast.NewIdent("uint16"), - ast.NewIdent("uint32"), - ast.NewIdent("uint64"), - ast.NewIdent("uintptr"), - ast.NewIdent("float32"), - ast.NewIdent("float64"), - ast.NewIdent("complex64"), - ast.NewIdent("complex128"), - ast.NewIdent("string"), - - // basic type aliases - ast.NewIdent("byte"), - ast.NewIdent("rune"), - - // error - ast.NewIdent("error"), - - // TODO(nsf): don't think those are used in just package type info, - // maybe for consts, but we are not interested in that - // untyped types - ast.NewIdent(">_<"), // TODO: types.Typ[types.UntypedBool], - ast.NewIdent(">_<"), // TODO: types.Typ[types.UntypedInt], - ast.NewIdent(">_<"), // TODO: types.Typ[types.UntypedRune], - ast.NewIdent(">_<"), // TODO: types.Typ[types.UntypedFloat], - ast.NewIdent(">_<"), // TODO: types.Typ[types.UntypedComplex], - ast.NewIdent(">_<"), // TODO: types.Typ[types.UntypedString], - ast.NewIdent(">_<"), // TODO: types.Typ[types.UntypedNil], - - // package unsafe - &ast.SelectorExpr{X: ast.NewIdent("unsafe"), Sel: ast.NewIdent("Pointer")}, - - // invalid type - ast.NewIdent(">_<"), // TODO: types.Typ[types.Invalid], // only appears in packages with errors - - // used internally by gc; never used by this package or in .a files - ast.NewIdent("any"), -} diff --git a/vendor/github.com/nsf/gocode/package_text.go b/vendor/github.com/nsf/gocode/package_text.go deleted file mode 100644 index c714bb1..0000000 --- a/vendor/github.com/nsf/gocode/package_text.go +++ /dev/null @@ -1,678 +0,0 @@ -package main - -import ( - "bytes" - "errors" - "fmt" - "go/ast" - "go/token" - "strconv" - "text/scanner" -) - -//------------------------------------------------------------------------- -// gc_parser -// -// The following part of the code may contain portions of the code from the Go -// standard library, which tells me to retain their copyright notice: -// -// Copyright (c) 2009 The Go Authors. All rights reserved. -// -// Redistribution and use in source and binary forms, with or without -// modification, are permitted provided that the following conditions are -// met: -// -// * Redistributions of source code must retain the above copyright -// notice, this list of conditions and the following disclaimer. -// * Redistributions in binary form must reproduce the above -// copyright notice, this list of conditions and the following disclaimer -// in the documentation and/or other materials provided with the -// distribution. -// * Neither the name of Google Inc. nor the names of its -// contributors may be used to endorse or promote products derived from -// this software without specific prior written permission. -// -// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS -// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT -// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR -// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT -// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, -// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT -// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, -// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY -// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE -// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. -//------------------------------------------------------------------------- - -type gc_parser struct { - scanner scanner.Scanner - tok rune - lit string - path_to_name map[string]string - beautify bool - pfc *package_file_cache -} - -func (p *gc_parser) init(data []byte, pfc *package_file_cache) { - p.scanner.Init(bytes.NewReader(data)) - p.scanner.Error = func(_ *scanner.Scanner, msg string) { p.error(msg) } - p.scanner.Mode = scanner.ScanIdents | scanner.ScanInts | scanner.ScanStrings | - scanner.ScanComments | scanner.ScanChars | scanner.SkipComments - p.scanner.Whitespace = 1<<'\t' | 1<<' ' | 1<<'\r' | 1<<'\v' | 1<<'\f' - p.scanner.Filename = "package.go" - p.next() - // and the built-in "unsafe" package to the path_to_name map - p.path_to_name = map[string]string{"unsafe": "unsafe"} - p.pfc = pfc -} - -func (p *gc_parser) next() { - p.tok = p.scanner.Scan() - switch p.tok { - case scanner.Ident, scanner.Int, scanner.String: - p.lit = p.scanner.TokenText() - default: - p.lit = "" - } -} - -func (p *gc_parser) error(msg string) { - panic(errors.New(msg)) -} - -func (p *gc_parser) errorf(format string, args ...interface{}) { - p.error(fmt.Sprintf(format, args...)) -} - -func (p *gc_parser) expect(tok rune) string { - lit := p.lit - if p.tok != tok { - p.errorf("expected %s, got %s (%q)", scanner.TokenString(tok), - scanner.TokenString(p.tok), lit) - } - p.next() - return lit -} - -func (p *gc_parser) expect_keyword(keyword string) { - lit := p.expect(scanner.Ident) - if lit != keyword { - p.errorf("expected keyword: %s, got: %q", keyword, lit) - } -} - -func (p *gc_parser) expect_special(what string) { - i := 0 - for i < len(what) { - if p.tok != rune(what[i]) { - break - } - - nc := p.scanner.Peek() - if i != len(what)-1 && nc <= ' ' { - break - } - - p.next() - i++ - } - - if i < len(what) { - p.errorf("expected: %q, got: %q", what, what[0:i]) - } -} - -// dotIdentifier = "?" | ( ident | '·' ) { ident | int | '·' } . -// we're doing lexer job here, kind of -func (p *gc_parser) parse_dot_ident() string { - if p.tok == '?' { - p.next() - return "?" - } - - ident := "" - sep := 'x' - i, j := 0, -1 - for (p.tok == scanner.Ident || p.tok == scanner.Int || p.tok == '·') && sep > ' ' { - ident += p.lit - if p.tok == '·' { - ident += "·" - j = i - i++ - } - i += len(p.lit) - sep = p.scanner.Peek() - p.next() - } - // middot = \xc2\xb7 - if j != -1 && i > j+1 { - c := ident[j+2] - if c >= '0' && c <= '9' { - ident = ident[0:j] - } - } - return ident -} - -// ImportPath = string_lit . -// quoted name of the path, but we return it as an identifier, taking an alias -// from 'pathToAlias' map, it is filled by import statements -func (p *gc_parser) parse_package() *ast.Ident { - path, err := strconv.Unquote(p.expect(scanner.String)) - if err != nil { - panic(err) - } - - return ast.NewIdent(path) -} - -// ExportedName = "@" ImportPath "." dotIdentifier . -func (p *gc_parser) parse_exported_name() *ast.SelectorExpr { - p.expect('@') - pkg := p.parse_package() - if pkg.Name == "" { - pkg.Name = "!" + p.pfc.name + "!" + p.pfc.defalias - } else { - pkg.Name = p.path_to_name[pkg.Name] - } - p.expect('.') - name := ast.NewIdent(p.parse_dot_ident()) - return &ast.SelectorExpr{X: pkg, Sel: name} -} - -// Name = identifier | "?" | ExportedName . -func (p *gc_parser) parse_name() (string, ast.Expr) { - switch p.tok { - case scanner.Ident: - name := p.lit - p.next() - return name, ast.NewIdent(name) - case '?': - p.next() - return "?", ast.NewIdent("?") - case '@': - en := p.parse_exported_name() - return en.Sel.Name, en - } - p.error("name expected") - return "", nil -} - -// Field = Name Type [ string_lit ] . -func (p *gc_parser) parse_field() *ast.Field { - var tag string - name, _ := p.parse_name() - typ := p.parse_type() - if p.tok == scanner.String { - tag = p.expect(scanner.String) - } - - var names []*ast.Ident - if name != "?" { - names = []*ast.Ident{ast.NewIdent(name)} - } - - return &ast.Field{ - Names: names, - Type: typ, - Tag: &ast.BasicLit{Kind: token.STRING, Value: tag}, - } -} - -// Parameter = ( identifier | "?" ) [ "..." ] Type [ string_lit ] . -func (p *gc_parser) parse_parameter() *ast.Field { - // name - name, _ := p.parse_name() - - // type - var typ ast.Expr - if p.tok == '.' { - p.expect_special("...") - typ = &ast.Ellipsis{Elt: p.parse_type()} - } else { - typ = p.parse_type() - } - - var tag string - if p.tok == scanner.String { - tag = p.expect(scanner.String) - } - - return &ast.Field{ - Names: []*ast.Ident{ast.NewIdent(name)}, - Type: typ, - Tag: &ast.BasicLit{Kind: token.STRING, Value: tag}, - } -} - -// Parameters = "(" [ ParameterList ] ")" . -// ParameterList = { Parameter "," } Parameter . -func (p *gc_parser) parse_parameters() *ast.FieldList { - flds := []*ast.Field{} - parse_parameter := func() { - par := p.parse_parameter() - flds = append(flds, par) - } - - p.expect('(') - if p.tok != ')' { - parse_parameter() - for p.tok == ',' { - p.next() - parse_parameter() - } - } - p.expect(')') - return &ast.FieldList{List: flds} -} - -// Signature = Parameters [ Result ] . -// Result = Type | Parameters . -func (p *gc_parser) parse_signature() *ast.FuncType { - var params *ast.FieldList - var results *ast.FieldList - - params = p.parse_parameters() - switch p.tok { - case scanner.Ident, '[', '*', '<', '@': - fld := &ast.Field{Type: p.parse_type()} - results = &ast.FieldList{List: []*ast.Field{fld}} - case '(': - results = p.parse_parameters() - } - return &ast.FuncType{Params: params, Results: results} -} - -// MethodOrEmbedSpec = Name [ Signature ] . -func (p *gc_parser) parse_method_or_embed_spec() *ast.Field { - name, nameexpr := p.parse_name() - if p.tok == '(' { - typ := p.parse_signature() - return &ast.Field{ - Names: []*ast.Ident{ast.NewIdent(name)}, - Type: typ, - } - } - - return &ast.Field{ - Type: nameexpr, - } -} - -// int_lit = [ "-" | "+" ] { "0" ... "9" } . -func (p *gc_parser) parse_int() { - switch p.tok { - case '-', '+': - p.next() - } - p.expect(scanner.Int) -} - -// number = int_lit [ "p" int_lit ] . -func (p *gc_parser) parse_number() { - p.parse_int() - if p.lit == "p" { - p.next() - p.parse_int() - } -} - -//------------------------------------------------------------------------------- -// gc_parser.types -//------------------------------------------------------------------------------- - -// InterfaceType = "interface" "{" [ MethodOrEmbedList ] "}" . -// MethodOrEmbedList = MethodOrEmbedSpec { ";" MethodOrEmbedSpec } . -func (p *gc_parser) parse_interface_type() ast.Expr { - var methods []*ast.Field - parse_method := func() { - meth := p.parse_method_or_embed_spec() - methods = append(methods, meth) - } - - p.expect_keyword("interface") - p.expect('{') - if p.tok != '}' { - parse_method() - for p.tok == ';' { - p.next() - parse_method() - } - } - p.expect('}') - return &ast.InterfaceType{Methods: &ast.FieldList{List: methods}} -} - -// StructType = "struct" "{" [ FieldList ] "}" . -// FieldList = Field { ";" Field } . -func (p *gc_parser) parse_struct_type() ast.Expr { - var fields []*ast.Field - parse_field := func() { - fld := p.parse_field() - fields = append(fields, fld) - } - - p.expect_keyword("struct") - p.expect('{') - if p.tok != '}' { - parse_field() - for p.tok == ';' { - p.next() - parse_field() - } - } - p.expect('}') - return &ast.StructType{Fields: &ast.FieldList{List: fields}} -} - -// MapType = "map" "[" Type "]" Type . -func (p *gc_parser) parse_map_type() ast.Expr { - p.expect_keyword("map") - p.expect('[') - key := p.parse_type() - p.expect(']') - elt := p.parse_type() - return &ast.MapType{Key: key, Value: elt} -} - -// ChanType = ( "chan" [ "<-" ] | "<-" "chan" ) Type . -func (p *gc_parser) parse_chan_type() ast.Expr { - dir := ast.SEND | ast.RECV - if p.tok == scanner.Ident { - p.expect_keyword("chan") - if p.tok == '<' { - p.expect_special("<-") - dir = ast.SEND - } - } else { - p.expect_special("<-") - p.expect_keyword("chan") - dir = ast.RECV - } - - elt := p.parse_type() - return &ast.ChanType{Dir: dir, Value: elt} -} - -// ArrayOrSliceType = ArrayType | SliceType . -// ArrayType = "[" int_lit "]" Type . -// SliceType = "[" "]" Type . -func (p *gc_parser) parse_array_or_slice_type() ast.Expr { - p.expect('[') - if p.tok == ']' { - // SliceType - p.next() // skip ']' - return &ast.ArrayType{Len: nil, Elt: p.parse_type()} - } - - // ArrayType - lit := p.expect(scanner.Int) - p.expect(']') - return &ast.ArrayType{ - Len: &ast.BasicLit{Kind: token.INT, Value: lit}, - Elt: p.parse_type(), - } -} - -// Type = -// BasicType | TypeName | ArrayType | SliceType | StructType | -// PointerType | FuncType | InterfaceType | MapType | ChanType | -// "(" Type ")" . -// BasicType = ident . -// TypeName = ExportedName . -// SliceType = "[" "]" Type . -// PointerType = "*" Type . -// FuncType = "func" Signature . -func (p *gc_parser) parse_type() ast.Expr { - switch p.tok { - case scanner.Ident: - switch p.lit { - case "struct": - return p.parse_struct_type() - case "func": - p.next() - return p.parse_signature() - case "interface": - return p.parse_interface_type() - case "map": - return p.parse_map_type() - case "chan": - return p.parse_chan_type() - default: - lit := p.lit - p.next() - return ast.NewIdent(lit) - } - case '@': - return p.parse_exported_name() - case '[': - return p.parse_array_or_slice_type() - case '*': - p.next() - return &ast.StarExpr{X: p.parse_type()} - case '<': - return p.parse_chan_type() - case '(': - p.next() - typ := p.parse_type() - p.expect(')') - return typ - } - p.errorf("unexpected token: %s", scanner.TokenString(p.tok)) - return nil -} - -//------------------------------------------------------------------------------- -// gc_parser.declarations -//------------------------------------------------------------------------------- - -// ImportDecl = "import" identifier string_lit . -func (p *gc_parser) parse_import_decl() { - p.expect_keyword("import") - alias := p.expect(scanner.Ident) - path := p.parse_package() - fullName := "!" + path.Name + "!" + alias - p.path_to_name[path.Name] = fullName - p.pfc.add_package_to_scope(fullName, path.Name) -} - -// ConstDecl = "const" ExportedName [ Type ] "=" Literal . -// Literal = bool_lit | int_lit | float_lit | complex_lit | string_lit . -// bool_lit = "true" | "false" . -// complex_lit = "(" float_lit "+" float_lit ")" . -// rune_lit = "(" int_lit "+" int_lit ")" . -// string_lit = `"` { unicode_char } `"` . -func (p *gc_parser) parse_const_decl() (string, *ast.GenDecl) { - // TODO: do we really need actual const value? gocode doesn't use this - p.expect_keyword("const") - name := p.parse_exported_name() - - var typ ast.Expr - if p.tok != '=' { - typ = p.parse_type() - } - - p.expect('=') - - // skip the value - switch p.tok { - case scanner.Ident: - // must be bool, true or false - p.next() - case '-', '+', scanner.Int: - // number - p.parse_number() - case '(': - // complex_lit or rune_lit - p.next() // skip '(' - if p.tok == scanner.Char { - p.next() - } else { - p.parse_number() - } - p.expect('+') - p.parse_number() - p.expect(')') - case scanner.Char: - p.next() - case scanner.String: - p.next() - default: - p.error("expected literal") - } - - return name.X.(*ast.Ident).Name, &ast.GenDecl{ - Tok: token.CONST, - Specs: []ast.Spec{ - &ast.ValueSpec{ - Names: []*ast.Ident{name.Sel}, - Type: typ, - Values: []ast.Expr{&ast.BasicLit{Kind: token.INT, Value: "0"}}, - }, - }, - } -} - -// TypeDecl = "type" ExportedName Type . -func (p *gc_parser) parse_type_decl() (string, *ast.GenDecl) { - p.expect_keyword("type") - name := p.parse_exported_name() - typ := p.parse_type() - return name.X.(*ast.Ident).Name, &ast.GenDecl{ - Tok: token.TYPE, - Specs: []ast.Spec{ - &ast.TypeSpec{ - Name: name.Sel, - Type: typ, - }, - }, - } -} - -// VarDecl = "var" ExportedName Type . -func (p *gc_parser) parse_var_decl() (string, *ast.GenDecl) { - p.expect_keyword("var") - name := p.parse_exported_name() - typ := p.parse_type() - return name.X.(*ast.Ident).Name, &ast.GenDecl{ - Tok: token.VAR, - Specs: []ast.Spec{ - &ast.ValueSpec{ - Names: []*ast.Ident{name.Sel}, - Type: typ, - }, - }, - } -} - -// FuncBody = "{" ... "}" . -func (p *gc_parser) parse_func_body() { - p.expect('{') - for i := 1; i > 0; p.next() { - switch p.tok { - case '{': - i++ - case '}': - i-- - } - } -} - -// FuncDecl = "func" ExportedName Signature [ FuncBody ] . -func (p *gc_parser) parse_func_decl() (string, *ast.FuncDecl) { - // "func" was already consumed by lookahead - name := p.parse_exported_name() - typ := p.parse_signature() - if p.tok == '{' { - p.parse_func_body() - } - return name.X.(*ast.Ident).Name, &ast.FuncDecl{ - Name: name.Sel, - Type: typ, - } -} - -func strip_method_receiver(recv *ast.FieldList) string { - var sel *ast.SelectorExpr - - // find selector expression - typ := recv.List[0].Type - switch t := typ.(type) { - case *ast.StarExpr: - sel = t.X.(*ast.SelectorExpr) - case *ast.SelectorExpr: - sel = t - } - - // extract package path - pkg := sel.X.(*ast.Ident).Name - - // write back stripped type - switch t := typ.(type) { - case *ast.StarExpr: - t.X = sel.Sel - case *ast.SelectorExpr: - recv.List[0].Type = sel.Sel - } - - return pkg -} - -// MethodDecl = "func" Receiver Name Signature . -// Receiver = "(" ( identifier | "?" ) [ "*" ] ExportedName ")" [ FuncBody ] . -func (p *gc_parser) parse_method_decl() (string, *ast.FuncDecl) { - recv := p.parse_parameters() - pkg := strip_method_receiver(recv) - name, _ := p.parse_name() - typ := p.parse_signature() - if p.tok == '{' { - p.parse_func_body() - } - return pkg, &ast.FuncDecl{ - Recv: recv, - Name: ast.NewIdent(name), - Type: typ, - } -} - -// Decl = [ ImportDecl | ConstDecl | TypeDecl | VarDecl | FuncDecl | MethodDecl ] "\n" . -func (p *gc_parser) parse_decl() (pkg string, decl ast.Decl) { - switch p.lit { - case "import": - p.parse_import_decl() - case "const": - pkg, decl = p.parse_const_decl() - case "type": - pkg, decl = p.parse_type_decl() - case "var": - pkg, decl = p.parse_var_decl() - case "func": - p.next() - if p.tok == '(' { - pkg, decl = p.parse_method_decl() - } else { - pkg, decl = p.parse_func_decl() - } - } - p.expect('\n') - return -} - -// Export = PackageClause { Decl } "$$" . -// PackageClause = "package" identifier [ "safe" ] "\n" . -func (p *gc_parser) parse_export(callback func(string, ast.Decl)) { - p.expect_keyword("package") - p.pfc.defalias = p.expect(scanner.Ident) - if p.tok != '\n' { - p.expect_keyword("safe") - } - p.expect('\n') - - for p.tok != '$' && p.tok != scanner.EOF { - pkg, decl := p.parse_decl() - if decl != nil { - callback(pkg, decl) - } - } -} diff --git a/vendor/github.com/nsf/gocode/pre_go17.go b/vendor/github.com/nsf/gocode/pre_go17.go deleted file mode 100644 index 6fca344..0000000 --- a/vendor/github.com/nsf/gocode/pre_go17.go +++ /dev/null @@ -1,7 +0,0 @@ -// +build !go1.7,!go1.8 - -package main - -func init() { - knownPackageIdents["context"] = "golang.org/x/net/context" -} diff --git a/vendor/github.com/nsf/gocode/ripper.go b/vendor/github.com/nsf/gocode/ripper.go deleted file mode 100644 index e1c2f75..0000000 --- a/vendor/github.com/nsf/gocode/ripper.go +++ /dev/null @@ -1,141 +0,0 @@ -package main - -import ( - "go/scanner" - "go/token" -) - -// All the code in this file serves single purpose: -// It separates a function with the cursor inside and the rest of the code. I'm -// doing that, because sometimes parser is not able to recover itself from an -// error and the autocompletion results become less complete. - -type tok_pos_pair struct { - tok token.Token - pos token.Pos -} - -type tok_collection struct { - tokens []tok_pos_pair - fset *token.FileSet -} - -func (this *tok_collection) next(s *scanner.Scanner) bool { - pos, tok, _ := s.Scan() - if tok == token.EOF { - return false - } - - this.tokens = append(this.tokens, tok_pos_pair{tok, pos}) - return true -} - -func (this *tok_collection) find_decl_beg(pos int) int { - lowest := 0 - lowpos := -1 - lowi := -1 - cur := 0 - for i := pos; i >= 0; i-- { - t := this.tokens[i] - switch t.tok { - case token.RBRACE: - cur++ - case token.LBRACE: - cur-- - } - - if cur < lowest { - lowest = cur - lowpos = this.fset.Position(t.pos).Offset - lowi = i - } - } - - cur = lowest - for i := lowi - 1; i >= 0; i-- { - t := this.tokens[i] - switch t.tok { - case token.RBRACE: - cur++ - case token.LBRACE: - cur-- - } - if t.tok == token.SEMICOLON && cur == lowest { - lowpos = this.fset.Position(t.pos).Offset - break - } - } - - return lowpos -} - -func (this *tok_collection) find_decl_end(pos int) int { - highest := 0 - highpos := -1 - cur := 0 - - if this.tokens[pos].tok == token.LBRACE { - pos++ - } - - for i := pos; i < len(this.tokens); i++ { - t := this.tokens[i] - switch t.tok { - case token.RBRACE: - cur++ - case token.LBRACE: - cur-- - } - - if cur > highest { - highest = cur - highpos = this.fset.Position(t.pos).Offset - } - } - - return highpos -} - -func (this *tok_collection) find_outermost_scope(cursor int) (int, int) { - pos := 0 - - for i, t := range this.tokens { - if cursor <= this.fset.Position(t.pos).Offset { - break - } - pos = i - } - - return this.find_decl_beg(pos), this.find_decl_end(pos) -} - -// return new cursor position, file without ripped part and the ripped part itself -// variants: -// new-cursor, file-without-ripped-part, ripped-part -// old-cursor, file, nil -func (this *tok_collection) rip_off_decl(file []byte, cursor int) (int, []byte, []byte) { - this.fset = token.NewFileSet() - var s scanner.Scanner - s.Init(this.fset.AddFile("", this.fset.Base(), len(file)), file, nil, scanner.ScanComments) - for this.next(&s) { - } - - beg, end := this.find_outermost_scope(cursor) - if beg == -1 || end == -1 { - return cursor, file, nil - } - - ripped := make([]byte, end+1-beg) - copy(ripped, file[beg:end+1]) - - newfile := make([]byte, len(file)-len(ripped)) - copy(newfile, file[:beg]) - copy(newfile[beg:], file[end+1:]) - - return cursor - beg, newfile, ripped -} - -func rip_off_decl(file []byte, cursor int) (int, []byte, []byte) { - var tc tok_collection - return tc.rip_off_decl(file, cursor) -} diff --git a/vendor/github.com/nsf/gocode/rpc.go b/vendor/github.com/nsf/gocode/rpc.go deleted file mode 100644 index b1e0ea7..0000000 --- a/vendor/github.com/nsf/gocode/rpc.go +++ /dev/null @@ -1,162 +0,0 @@ -// WARNING! Autogenerated by goremote, don't touch. - -package main - -import ( - "net/rpc" -) - -type RPC struct { -} - -// wrapper for: server_auto_complete - -type Args_auto_complete struct { - Arg0 []byte - Arg1 string - Arg2 int - Arg3 go_build_context -} -type Reply_auto_complete struct { - Arg0 []candidate - Arg1 int -} - -func (r *RPC) RPC_auto_complete(args *Args_auto_complete, reply *Reply_auto_complete) error { - reply.Arg0, reply.Arg1 = server_auto_complete(args.Arg0, args.Arg1, args.Arg2, args.Arg3) - return nil -} -func client_auto_complete(cli *rpc.Client, Arg0 []byte, Arg1 string, Arg2 int, Arg3 go_build_context) (c []candidate, d int) { - var args Args_auto_complete - var reply Reply_auto_complete - args.Arg0 = Arg0 - args.Arg1 = Arg1 - args.Arg2 = Arg2 - args.Arg3 = Arg3 - err := cli.Call("RPC.RPC_auto_complete", &args, &reply) - if err != nil { - panic(err) - } - return reply.Arg0, reply.Arg1 -} - -// wrapper for: server_close - -type Args_close struct { - Arg0 int -} -type Reply_close struct { - Arg0 int -} - -func (r *RPC) RPC_close(args *Args_close, reply *Reply_close) error { - reply.Arg0 = server_close(args.Arg0) - return nil -} -func client_close(cli *rpc.Client, Arg0 int) int { - var args Args_close - var reply Reply_close - args.Arg0 = Arg0 - err := cli.Call("RPC.RPC_close", &args, &reply) - if err != nil { - panic(err) - } - return reply.Arg0 -} - -// wrapper for: server_status - -type Args_status struct { - Arg0 int -} -type Reply_status struct { - Arg0 string -} - -func (r *RPC) RPC_status(args *Args_status, reply *Reply_status) error { - reply.Arg0 = server_status(args.Arg0) - return nil -} -func client_status(cli *rpc.Client, Arg0 int) string { - var args Args_status - var reply Reply_status - args.Arg0 = Arg0 - err := cli.Call("RPC.RPC_status", &args, &reply) - if err != nil { - panic(err) - } - return reply.Arg0 -} - -// wrapper for: server_drop_cache - -type Args_drop_cache struct { - Arg0 int -} -type Reply_drop_cache struct { - Arg0 int -} - -func (r *RPC) RPC_drop_cache(args *Args_drop_cache, reply *Reply_drop_cache) error { - reply.Arg0 = server_drop_cache(args.Arg0) - return nil -} -func client_drop_cache(cli *rpc.Client, Arg0 int) int { - var args Args_drop_cache - var reply Reply_drop_cache - args.Arg0 = Arg0 - err := cli.Call("RPC.RPC_drop_cache", &args, &reply) - if err != nil { - panic(err) - } - return reply.Arg0 -} - -// wrapper for: server_set - -type Args_set struct { - Arg0, Arg1 string -} -type Reply_set struct { - Arg0 string -} - -func (r *RPC) RPC_set(args *Args_set, reply *Reply_set) error { - reply.Arg0 = server_set(args.Arg0, args.Arg1) - return nil -} -func client_set(cli *rpc.Client, Arg0, Arg1 string) string { - var args Args_set - var reply Reply_set - args.Arg0 = Arg0 - args.Arg1 = Arg1 - err := cli.Call("RPC.RPC_set", &args, &reply) - if err != nil { - panic(err) - } - return reply.Arg0 -} - -// wrapper for: server_options - -type Args_options struct { - Arg0 int -} -type Reply_options struct { - Arg0 string -} - -func (r *RPC) RPC_options(args *Args_options, reply *Reply_options) error { - reply.Arg0 = server_options(args.Arg0) - return nil -} -func client_options(cli *rpc.Client, Arg0 int) string { - var args Args_options - var reply Reply_options - args.Arg0 = Arg0 - err := cli.Call("RPC.RPC_options", &args, &reply) - if err != nil { - panic(err) - } - return reply.Arg0 -} diff --git a/vendor/github.com/nsf/gocode/scope.go b/vendor/github.com/nsf/gocode/scope.go deleted file mode 100644 index 802e296..0000000 --- a/vendor/github.com/nsf/gocode/scope.go +++ /dev/null @@ -1,77 +0,0 @@ -package main - -//------------------------------------------------------------------------- -// scope -//------------------------------------------------------------------------- - -type scope struct { - // the package name that this scope resides in - pkgname string - parent *scope // nil for universe scope - entities map[string]*decl -} - -func new_named_scope(outer *scope, name string) *scope { - s := new_scope(outer) - s.pkgname = name - return s -} - -func new_scope(outer *scope) *scope { - s := new(scope) - if outer != nil { - s.pkgname = outer.pkgname - } - s.parent = outer - s.entities = make(map[string]*decl) - return s -} - -// returns: new, prev -func advance_scope(s *scope) (*scope, *scope) { - if len(s.entities) == 0 { - return s, s.parent - } - return new_scope(s), s -} - -// adds declaration or returns an existing one -func (s *scope) add_named_decl(d *decl) *decl { - return s.add_decl(d.name, d) -} - -func (s *scope) add_decl(name string, d *decl) *decl { - decl, ok := s.entities[name] - if !ok { - s.entities[name] = d - return d - } - return decl -} - -func (s *scope) replace_decl(name string, d *decl) { - s.entities[name] = d -} - -func (s *scope) merge_decl(d *decl) { - decl, ok := s.entities[d.name] - if !ok { - s.entities[d.name] = d - } else { - decl := decl.deep_copy() - decl.expand_or_replace(d) - s.entities[d.name] = decl - } -} - -func (s *scope) lookup(name string) *decl { - decl, ok := s.entities[name] - if !ok { - if s.parent != nil { - return s.parent.lookup(name) - } else { - return nil - } - } - return decl -} diff --git a/vendor/github.com/nsf/gocode/server.go b/vendor/github.com/nsf/gocode/server.go deleted file mode 100644 index 82813df..0000000 --- a/vendor/github.com/nsf/gocode/server.go +++ /dev/null @@ -1,247 +0,0 @@ -package main - -import ( - "bytes" - "fmt" - "go/build" - "log" - "net" - "net/rpc" - "os" - "path/filepath" - "reflect" - "runtime" - "time" -) - -func do_server() int { - g_config.read() - if g_config.ForceDebugOutput != "" { - // forcefully enable debugging and redirect logging into the - // specified file - *g_debug = true - f, err := os.Create(g_config.ForceDebugOutput) - if err != nil { - panic(err) - } - log.SetOutput(f) - } - - addr := *g_addr - if *g_sock == "unix" { - addr = get_socket_filename() - if file_exists(addr) { - log.Printf("unix socket: '%s' already exists\n", addr) - return 1 - } - } - g_daemon = new_daemon(*g_sock, addr) - if *g_sock == "unix" { - // cleanup unix socket file - defer os.Remove(addr) - } - - rpc.Register(new(RPC)) - - g_daemon.loop() - return 0 -} - -//------------------------------------------------------------------------- -// daemon -//------------------------------------------------------------------------- - -type daemon struct { - listener net.Listener - cmd_in chan int - autocomplete *auto_complete_context - pkgcache package_cache - declcache *decl_cache - context package_lookup_context -} - -func new_daemon(network, address string) *daemon { - var err error - - d := new(daemon) - d.listener, err = net.Listen(network, address) - if err != nil { - panic(err) - } - - d.cmd_in = make(chan int, 1) - d.pkgcache = new_package_cache() - d.declcache = new_decl_cache(&d.context) - d.autocomplete = new_auto_complete_context(d.pkgcache, d.declcache) - return d -} - -func (this *daemon) drop_cache() { - this.pkgcache = new_package_cache() - this.declcache = new_decl_cache(&this.context) - this.autocomplete = new_auto_complete_context(this.pkgcache, this.declcache) -} - -const ( - daemon_close = iota -) - -func (this *daemon) loop() { - conn_in := make(chan net.Conn) - go func() { - for { - c, err := this.listener.Accept() - if err != nil { - panic(err) - } - conn_in <- c - } - }() - - timeout := time.Duration(g_config.CloseTimeout) * time.Second - countdown := time.NewTimer(timeout) - - for { - // handle connections or server CMDs (currently one CMD) - select { - case c := <-conn_in: - rpc.ServeConn(c) - countdown.Reset(timeout) - runtime.GC() - case cmd := <-this.cmd_in: - switch cmd { - case daemon_close: - return - } - case <-countdown.C: - return - } - } -} - -func (this *daemon) close() { - this.cmd_in <- daemon_close -} - -var g_daemon *daemon - -//------------------------------------------------------------------------- -// server_* functions -// -// Corresponding client_* functions are autogenerated by goremote. -//------------------------------------------------------------------------- - -func server_auto_complete(file []byte, filename string, cursor int, context_packed go_build_context) (c []candidate, d int) { - context := unpack_build_context(&context_packed) - defer func() { - if err := recover(); err != nil { - print_backtrace(err) - c = []candidate{ - {"PANIC", "PANIC", decl_invalid, "panic"}, - } - - // drop cache - g_daemon.drop_cache() - } - }() - // TODO: Probably we don't care about comparing all the fields, checking GOROOT and GOPATH - // should be enough. - if !reflect.DeepEqual(g_daemon.context.Context, context.Context) { - g_daemon.context = context - g_daemon.drop_cache() - } - switch g_config.PackageLookupMode { - case "bzl": - // when package lookup mode is bzl, we set GOPATH to "" explicitly and - // BzlProjectRoot becomes valid (or empty) - var err error - g_daemon.context.GOPATH = "" - g_daemon.context.BzlProjectRoot, err = find_bzl_project_root(g_config.LibPath, filename) - if *g_debug && err != nil { - log.Printf("Bzl project root not found: %s", err) - } - case "gb": - // when package lookup mode is gb, we set GOPATH to "" explicitly and - // GBProjectRoot becomes valid (or empty) - var err error - g_daemon.context.GOPATH = "" - g_daemon.context.GBProjectRoot, err = find_gb_project_root(filename) - if *g_debug && err != nil { - log.Printf("Gb project root not found: %s", err) - } - case "go": - // get current package path for GO15VENDOREXPERIMENT hack - g_daemon.context.CurrentPackagePath = "" - pkg, err := g_daemon.context.ImportDir(filepath.Dir(filename), build.FindOnly) - if err == nil { - if *g_debug { - log.Printf("Go project path: %s", pkg.ImportPath) - } - g_daemon.context.CurrentPackagePath = pkg.ImportPath - } else if *g_debug { - log.Printf("Go project path not found: %s", err) - } - } - if *g_debug { - var buf bytes.Buffer - log.Printf("Got autocompletion request for '%s'\n", filename) - log.Printf("Cursor at: %d\n", cursor) - if cursor > len(file) || cursor < 0 { - log.Println("ERROR! Cursor is outside of the boundaries of the buffer, " + - "this is most likely a text editor plugin bug. Text editor is responsible " + - "for passing the correct cursor position to gocode.") - } else { - buf.WriteString("-------------------------------------------------------\n") - buf.Write(file[:cursor]) - buf.WriteString("#") - buf.Write(file[cursor:]) - log.Print(buf.String()) - log.Println("-------------------------------------------------------") - } - } - candidates, d := g_daemon.autocomplete.apropos(file, filename, cursor) - if *g_debug { - log.Printf("Offset: %d\n", d) - log.Printf("Number of candidates found: %d\n", len(candidates)) - log.Printf("Candidates are:\n") - for _, c := range candidates { - abbr := fmt.Sprintf("%s %s %s", c.Class, c.Name, c.Type) - if c.Class == decl_func { - abbr = fmt.Sprintf("%s %s%s", c.Class, c.Name, c.Type[len("func"):]) - } - log.Printf(" %s\n", abbr) - } - log.Println("=======================================================") - } - return candidates, d -} - -func server_close(notused int) int { - g_daemon.close() - return 0 -} - -func server_status(notused int) string { - return g_daemon.autocomplete.status() -} - -func server_drop_cache(notused int) int { - // drop cache - g_daemon.drop_cache() - return 0 -} - -func server_set(key, value string) string { - if key == "\x00" { - return g_config.list() - } else if value == "\x00" { - return g_config.list_option(key) - } - // drop cache on settings changes - g_daemon.drop_cache() - return g_config.set_option(key, value) -} - -func server_options(notused int) string { - return g_config.options() -} diff --git a/vendor/github.com/nsf/gocode/type_alias_build_hack_18.go b/vendor/github.com/nsf/gocode/type_alias_build_hack_18.go deleted file mode 100644 index cb7d1f1..0000000 --- a/vendor/github.com/nsf/gocode/type_alias_build_hack_18.go +++ /dev/null @@ -1,18 +0,0 @@ -// +build !go1.9,!go1.8.typealias - -package main - -import ( - "go/ast" -) - -func typeAliasSpec(name string, typ ast.Expr) *ast.TypeSpec { - return &ast.TypeSpec{ - Name: ast.NewIdent(name), - Type: typ, - } -} - -func isAliasTypeSpec(t *ast.TypeSpec) bool { - return false -} diff --git a/vendor/github.com/nsf/gocode/type_alias_build_hack_19.go b/vendor/github.com/nsf/gocode/type_alias_build_hack_19.go deleted file mode 100644 index b2b074f..0000000 --- a/vendor/github.com/nsf/gocode/type_alias_build_hack_19.go +++ /dev/null @@ -1,19 +0,0 @@ -// +build go1.9 go1.8.typealias - -package main - -import ( - "go/ast" -) - -func typeAliasSpec(name string, typ ast.Expr) *ast.TypeSpec { - return &ast.TypeSpec{ - Name: ast.NewIdent(name), - Assign: 1, - Type: typ, - } -} - -func isAliasTypeSpec(t *ast.TypeSpec) bool { - return t.Assign != 0 -} diff --git a/vendor/github.com/nsf/gocode/utils.go b/vendor/github.com/nsf/gocode/utils.go deleted file mode 100644 index 8b153c5..0000000 --- a/vendor/github.com/nsf/gocode/utils.go +++ /dev/null @@ -1,296 +0,0 @@ -package main - -import ( - "bytes" - "fmt" - "go/build" - "io/ioutil" - "os" - "path/filepath" - "runtime" - "strings" - "sync" - "unicode/utf8" -) - -// our own readdir, which skips the files it cannot lstat -func readdir_lstat(name string) ([]os.FileInfo, error) { - f, err := os.Open(name) - if err != nil { - return nil, err - } - defer f.Close() - - names, err := f.Readdirnames(-1) - if err != nil { - return nil, err - } - - out := make([]os.FileInfo, 0, len(names)) - for _, lname := range names { - s, err := os.Lstat(filepath.Join(name, lname)) - if err != nil { - continue - } - out = append(out, s) - } - return out, nil -} - -// our other readdir function, only opens and reads -func readdir(dirname string) []os.FileInfo { - f, err := os.Open(dirname) - if err != nil { - return nil - } - fi, err := f.Readdir(-1) - f.Close() - if err != nil { - panic(err) - } - return fi -} - -// returns truncated 'data' and amount of bytes skipped (for cursor pos adjustment) -func filter_out_shebang(data []byte) ([]byte, int) { - if len(data) > 2 && data[0] == '#' && data[1] == '!' { - newline := bytes.Index(data, []byte("\n")) - if newline != -1 && len(data) > newline+1 { - return data[newline+1:], newline + 1 - } - } - return data, 0 -} - -func file_exists(filename string) bool { - _, err := os.Stat(filename) - if err != nil { - return false - } - return true -} - -func is_dir(path string) bool { - fi, err := os.Stat(path) - return err == nil && fi.IsDir() -} - -func char_to_byte_offset(s []byte, offset_c int) (offset_b int) { - for offset_b = 0; offset_c > 0 && offset_b < len(s); offset_b++ { - if utf8.RuneStart(s[offset_b]) { - offset_c-- - } - } - return offset_b -} - -func xdg_home_dir() string { - xdghome := os.Getenv("XDG_CONFIG_HOME") - if xdghome == "" { - xdghome = filepath.Join(os.Getenv("HOME"), ".config") - } - return xdghome -} - -func has_prefix(s, prefix string, ignorecase bool) bool { - if ignorecase { - s = strings.ToLower(s) - prefix = strings.ToLower(prefix) - } - return strings.HasPrefix(s, prefix) -} - -func find_bzl_project_root(libpath, path string) (string, error) { - if libpath == "" { - return "", fmt.Errorf("could not find project root, libpath is empty") - } - - pathMap := map[string]struct{}{} - for _, lp := range strings.Split(libpath, ":") { - lp := strings.TrimSpace(lp) - pathMap[filepath.Clean(lp)] = struct{}{} - } - - path = filepath.Dir(path) - if path == "" { - return "", fmt.Errorf("project root is blank") - } - - start := path - for path != "/" { - if _, ok := pathMap[filepath.Clean(path)]; ok { - return path, nil - } - path = filepath.Dir(path) - } - return "", fmt.Errorf("could not find project root in %q or its parents", start) -} - -// Code taken directly from `gb`, I hope author doesn't mind. -func find_gb_project_root(path string) (string, error) { - path = filepath.Dir(path) - if path == "" { - return "", fmt.Errorf("project root is blank") - } - start := path - for path != "/" { - root := filepath.Join(path, "src") - if _, err := os.Stat(root); err != nil { - if os.IsNotExist(err) { - path = filepath.Dir(path) - continue - } - return "", err - } - path, err := filepath.EvalSymlinks(path) - if err != nil { - return "", err - } - return path, nil - } - return "", fmt.Errorf("could not find project root in %q or its parents", start) -} - -// vendorlessImportPath returns the devendorized version of the provided import path. -// e.g. "foo/bar/vendor/a/b" => "a/b" -func vendorlessImportPath(ipath string, currentPackagePath string) (string, bool) { - split := strings.Split(ipath, "vendor/") - // no vendor in path - if len(split) == 1 { - return ipath, true - } - // this import path does not belong to the current package - if currentPackagePath != "" && !strings.Contains(currentPackagePath, split[0]) { - return "", false - } - // Devendorize for use in import statement. - if i := strings.LastIndex(ipath, "/vendor/"); i >= 0 { - return ipath[i+len("/vendor/"):], true - } - if strings.HasPrefix(ipath, "vendor/") { - return ipath[len("vendor/"):], true - } - return ipath, true -} - -//------------------------------------------------------------------------- -// print_backtrace -// -// a nicer backtrace printer than the default one -//------------------------------------------------------------------------- - -var g_backtrace_mutex sync.Mutex - -func print_backtrace(err interface{}) { - g_backtrace_mutex.Lock() - defer g_backtrace_mutex.Unlock() - fmt.Printf("panic: %v\n", err) - i := 2 - for { - pc, file, line, ok := runtime.Caller(i) - if !ok { - break - } - f := runtime.FuncForPC(pc) - fmt.Printf("%d(%s): %s:%d\n", i-1, f.Name(), file, line) - i++ - } - fmt.Println("") -} - -//------------------------------------------------------------------------- -// File reader goroutine -// -// It's a bad idea to block multiple goroutines on file I/O. Creates many -// threads which fight for HDD. Therefore only single goroutine should read HDD -// at the same time. -//------------------------------------------------------------------------- - -type file_read_request struct { - filename string - out chan file_read_response -} - -type file_read_response struct { - data []byte - error error -} - -type file_reader_type struct { - in chan file_read_request -} - -func new_file_reader() *file_reader_type { - this := new(file_reader_type) - this.in = make(chan file_read_request) - go func() { - var rsp file_read_response - for { - req := <-this.in - rsp.data, rsp.error = ioutil.ReadFile(req.filename) - req.out <- rsp - } - }() - return this -} - -func (this *file_reader_type) read_file(filename string) ([]byte, error) { - req := file_read_request{ - filename, - make(chan file_read_response), - } - this.in <- req - rsp := <-req.out - return rsp.data, rsp.error -} - -var file_reader = new_file_reader() - -//------------------------------------------------------------------------- -// copy of the build.Context without func fields -//------------------------------------------------------------------------- - -type go_build_context struct { - GOARCH string - GOOS string - GOROOT string - GOPATH string - CgoEnabled bool - UseAllFiles bool - Compiler string - BuildTags []string - ReleaseTags []string - InstallSuffix string -} - -func pack_build_context(ctx *build.Context) go_build_context { - return go_build_context{ - GOARCH: ctx.GOARCH, - GOOS: ctx.GOOS, - GOROOT: ctx.GOROOT, - GOPATH: ctx.GOPATH, - CgoEnabled: ctx.CgoEnabled, - UseAllFiles: ctx.UseAllFiles, - Compiler: ctx.Compiler, - BuildTags: ctx.BuildTags, - ReleaseTags: ctx.ReleaseTags, - InstallSuffix: ctx.InstallSuffix, - } -} - -func unpack_build_context(ctx *go_build_context) package_lookup_context { - return package_lookup_context{ - Context: build.Context{ - GOARCH: ctx.GOARCH, - GOOS: ctx.GOOS, - GOROOT: ctx.GOROOT, - GOPATH: ctx.GOPATH, - CgoEnabled: ctx.CgoEnabled, - UseAllFiles: ctx.UseAllFiles, - Compiler: ctx.Compiler, - BuildTags: ctx.BuildTags, - ReleaseTags: ctx.ReleaseTags, - InstallSuffix: ctx.InstallSuffix, - }, - } -} diff --git a/vendor/github.com/pmezard/go-difflib/LICENSE b/vendor/github.com/pmezard/go-difflib/LICENSE deleted file mode 100644 index c67dad6..0000000 --- a/vendor/github.com/pmezard/go-difflib/LICENSE +++ /dev/null @@ -1,27 +0,0 @@ -Copyright (c) 2013, Patrick Mezard -All rights reserved. - -Redistribution and use in source and binary forms, with or without -modification, are permitted provided that the following conditions are -met: - - Redistributions of source code must retain the above copyright -notice, this list of conditions and the following disclaimer. - Redistributions in binary form must reproduce the above copyright -notice, this list of conditions and the following disclaimer in the -documentation and/or other materials provided with the distribution. - The names of its contributors may not be used to endorse or promote -products derived from this software without specific prior written -permission. - -THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS -IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED -TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A -PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT -HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, -SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED -TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR -PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF -LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING -NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS -SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. diff --git a/vendor/github.com/pmezard/go-difflib/difflib/difflib.go b/vendor/github.com/pmezard/go-difflib/difflib/difflib.go deleted file mode 100644 index 003e99f..0000000 --- a/vendor/github.com/pmezard/go-difflib/difflib/difflib.go +++ /dev/null @@ -1,772 +0,0 @@ -// Package difflib is a partial port of Python difflib module. -// -// It provides tools to compare sequences of strings and generate textual diffs. -// -// The following class and functions have been ported: -// -// - SequenceMatcher -// -// - unified_diff -// -// - context_diff -// -// Getting unified diffs was the main goal of the port. Keep in mind this code -// is mostly suitable to output text differences in a human friendly way, there -// are no guarantees generated diffs are consumable by patch(1). -package difflib - -import ( - "bufio" - "bytes" - "fmt" - "io" - "strings" -) - -func min(a, b int) int { - if a < b { - return a - } - return b -} - -func max(a, b int) int { - if a > b { - return a - } - return b -} - -func calculateRatio(matches, length int) float64 { - if length > 0 { - return 2.0 * float64(matches) / float64(length) - } - return 1.0 -} - -type Match struct { - A int - B int - Size int -} - -type OpCode struct { - Tag byte - I1 int - I2 int - J1 int - J2 int -} - -// SequenceMatcher compares sequence of strings. The basic -// algorithm predates, and is a little fancier than, an algorithm -// published in the late 1980's by Ratcliff and Obershelp under the -// hyperbolic name "gestalt pattern matching". The basic idea is to find -// the longest contiguous matching subsequence that contains no "junk" -// elements (R-O doesn't address junk). The same idea is then applied -// recursively to the pieces of the sequences to the left and to the right -// of the matching subsequence. This does not yield minimal edit -// sequences, but does tend to yield matches that "look right" to people. -// -// SequenceMatcher tries to compute a "human-friendly diff" between two -// sequences. Unlike e.g. UNIX(tm) diff, the fundamental notion is the -// longest *contiguous* & junk-free matching subsequence. That's what -// catches peoples' eyes. The Windows(tm) windiff has another interesting -// notion, pairing up elements that appear uniquely in each sequence. -// That, and the method here, appear to yield more intuitive difference -// reports than does diff. This method appears to be the least vulnerable -// to synching up on blocks of "junk lines", though (like blank lines in -// ordinary text files, or maybe "

" lines in HTML files). That may be -// because this is the only method of the 3 that has a *concept* of -// "junk" . -// -// Timing: Basic R-O is cubic time worst case and quadratic time expected -// case. SequenceMatcher is quadratic time for the worst case and has -// expected-case behavior dependent in a complicated way on how many -// elements the sequences have in common; best case time is linear. -type SequenceMatcher struct { - a []string - b []string - b2j map[string][]int - IsJunk func(string) bool - autoJunk bool - bJunk map[string]struct{} - matchingBlocks []Match - fullBCount map[string]int - bPopular map[string]struct{} - opCodes []OpCode -} - -func NewMatcher(a, b []string) *SequenceMatcher { - m := SequenceMatcher{autoJunk: true} - m.SetSeqs(a, b) - return &m -} - -func NewMatcherWithJunk(a, b []string, autoJunk bool, - isJunk func(string) bool) *SequenceMatcher { - - m := SequenceMatcher{IsJunk: isJunk, autoJunk: autoJunk} - m.SetSeqs(a, b) - return &m -} - -// Set two sequences to be compared. -func (m *SequenceMatcher) SetSeqs(a, b []string) { - m.SetSeq1(a) - m.SetSeq2(b) -} - -// Set the first sequence to be compared. The second sequence to be compared is -// not changed. -// -// SequenceMatcher computes and caches detailed information about the second -// sequence, so if you want to compare one sequence S against many sequences, -// use .SetSeq2(s) once and call .SetSeq1(x) repeatedly for each of the other -// sequences. -// -// See also SetSeqs() and SetSeq2(). -func (m *SequenceMatcher) SetSeq1(a []string) { - if &a == &m.a { - return - } - m.a = a - m.matchingBlocks = nil - m.opCodes = nil -} - -// Set the second sequence to be compared. The first sequence to be compared is -// not changed. -func (m *SequenceMatcher) SetSeq2(b []string) { - if &b == &m.b { - return - } - m.b = b - m.matchingBlocks = nil - m.opCodes = nil - m.fullBCount = nil - m.chainB() -} - -func (m *SequenceMatcher) chainB() { - // Populate line -> index mapping - b2j := map[string][]int{} - for i, s := range m.b { - indices := b2j[s] - indices = append(indices, i) - b2j[s] = indices - } - - // Purge junk elements - m.bJunk = map[string]struct{}{} - if m.IsJunk != nil { - junk := m.bJunk - for s, _ := range b2j { - if m.IsJunk(s) { - junk[s] = struct{}{} - } - } - for s, _ := range junk { - delete(b2j, s) - } - } - - // Purge remaining popular elements - popular := map[string]struct{}{} - n := len(m.b) - if m.autoJunk && n >= 200 { - ntest := n/100 + 1 - for s, indices := range b2j { - if len(indices) > ntest { - popular[s] = struct{}{} - } - } - for s, _ := range popular { - delete(b2j, s) - } - } - m.bPopular = popular - m.b2j = b2j -} - -func (m *SequenceMatcher) isBJunk(s string) bool { - _, ok := m.bJunk[s] - return ok -} - -// Find longest matching block in a[alo:ahi] and b[blo:bhi]. -// -// If IsJunk is not defined: -// -// Return (i,j,k) such that a[i:i+k] is equal to b[j:j+k], where -// alo <= i <= i+k <= ahi -// blo <= j <= j+k <= bhi -// and for all (i',j',k') meeting those conditions, -// k >= k' -// i <= i' -// and if i == i', j <= j' -// -// In other words, of all maximal matching blocks, return one that -// starts earliest in a, and of all those maximal matching blocks that -// start earliest in a, return the one that starts earliest in b. -// -// If IsJunk is defined, first the longest matching block is -// determined as above, but with the additional restriction that no -// junk element appears in the block. Then that block is extended as -// far as possible by matching (only) junk elements on both sides. So -// the resulting block never matches on junk except as identical junk -// happens to be adjacent to an "interesting" match. -// -// If no blocks match, return (alo, blo, 0). -func (m *SequenceMatcher) findLongestMatch(alo, ahi, blo, bhi int) Match { - // CAUTION: stripping common prefix or suffix would be incorrect. - // E.g., - // ab - // acab - // Longest matching block is "ab", but if common prefix is - // stripped, it's "a" (tied with "b"). UNIX(tm) diff does so - // strip, so ends up claiming that ab is changed to acab by - // inserting "ca" in the middle. That's minimal but unintuitive: - // "it's obvious" that someone inserted "ac" at the front. - // Windiff ends up at the same place as diff, but by pairing up - // the unique 'b's and then matching the first two 'a's. - besti, bestj, bestsize := alo, blo, 0 - - // find longest junk-free match - // during an iteration of the loop, j2len[j] = length of longest - // junk-free match ending with a[i-1] and b[j] - j2len := map[int]int{} - for i := alo; i != ahi; i++ { - // look at all instances of a[i] in b; note that because - // b2j has no junk keys, the loop is skipped if a[i] is junk - newj2len := map[int]int{} - for _, j := range m.b2j[m.a[i]] { - // a[i] matches b[j] - if j < blo { - continue - } - if j >= bhi { - break - } - k := j2len[j-1] + 1 - newj2len[j] = k - if k > bestsize { - besti, bestj, bestsize = i-k+1, j-k+1, k - } - } - j2len = newj2len - } - - // Extend the best by non-junk elements on each end. In particular, - // "popular" non-junk elements aren't in b2j, which greatly speeds - // the inner loop above, but also means "the best" match so far - // doesn't contain any junk *or* popular non-junk elements. - for besti > alo && bestj > blo && !m.isBJunk(m.b[bestj-1]) && - m.a[besti-1] == m.b[bestj-1] { - besti, bestj, bestsize = besti-1, bestj-1, bestsize+1 - } - for besti+bestsize < ahi && bestj+bestsize < bhi && - !m.isBJunk(m.b[bestj+bestsize]) && - m.a[besti+bestsize] == m.b[bestj+bestsize] { - bestsize += 1 - } - - // Now that we have a wholly interesting match (albeit possibly - // empty!), we may as well suck up the matching junk on each - // side of it too. Can't think of a good reason not to, and it - // saves post-processing the (possibly considerable) expense of - // figuring out what to do with it. In the case of an empty - // interesting match, this is clearly the right thing to do, - // because no other kind of match is possible in the regions. - for besti > alo && bestj > blo && m.isBJunk(m.b[bestj-1]) && - m.a[besti-1] == m.b[bestj-1] { - besti, bestj, bestsize = besti-1, bestj-1, bestsize+1 - } - for besti+bestsize < ahi && bestj+bestsize < bhi && - m.isBJunk(m.b[bestj+bestsize]) && - m.a[besti+bestsize] == m.b[bestj+bestsize] { - bestsize += 1 - } - - return Match{A: besti, B: bestj, Size: bestsize} -} - -// Return list of triples describing matching subsequences. -// -// Each triple is of the form (i, j, n), and means that -// a[i:i+n] == b[j:j+n]. The triples are monotonically increasing in -// i and in j. It's also guaranteed that if (i, j, n) and (i', j', n') are -// adjacent triples in the list, and the second is not the last triple in the -// list, then i+n != i' or j+n != j'. IOW, adjacent triples never describe -// adjacent equal blocks. -// -// The last triple is a dummy, (len(a), len(b), 0), and is the only -// triple with n==0. -func (m *SequenceMatcher) GetMatchingBlocks() []Match { - if m.matchingBlocks != nil { - return m.matchingBlocks - } - - var matchBlocks func(alo, ahi, blo, bhi int, matched []Match) []Match - matchBlocks = func(alo, ahi, blo, bhi int, matched []Match) []Match { - match := m.findLongestMatch(alo, ahi, blo, bhi) - i, j, k := match.A, match.B, match.Size - if match.Size > 0 { - if alo < i && blo < j { - matched = matchBlocks(alo, i, blo, j, matched) - } - matched = append(matched, match) - if i+k < ahi && j+k < bhi { - matched = matchBlocks(i+k, ahi, j+k, bhi, matched) - } - } - return matched - } - matched := matchBlocks(0, len(m.a), 0, len(m.b), nil) - - // It's possible that we have adjacent equal blocks in the - // matching_blocks list now. - nonAdjacent := []Match{} - i1, j1, k1 := 0, 0, 0 - for _, b := range matched { - // Is this block adjacent to i1, j1, k1? - i2, j2, k2 := b.A, b.B, b.Size - if i1+k1 == i2 && j1+k1 == j2 { - // Yes, so collapse them -- this just increases the length of - // the first block by the length of the second, and the first - // block so lengthened remains the block to compare against. - k1 += k2 - } else { - // Not adjacent. Remember the first block (k1==0 means it's - // the dummy we started with), and make the second block the - // new block to compare against. - if k1 > 0 { - nonAdjacent = append(nonAdjacent, Match{i1, j1, k1}) - } - i1, j1, k1 = i2, j2, k2 - } - } - if k1 > 0 { - nonAdjacent = append(nonAdjacent, Match{i1, j1, k1}) - } - - nonAdjacent = append(nonAdjacent, Match{len(m.a), len(m.b), 0}) - m.matchingBlocks = nonAdjacent - return m.matchingBlocks -} - -// Return list of 5-tuples describing how to turn a into b. -// -// Each tuple is of the form (tag, i1, i2, j1, j2). The first tuple -// has i1 == j1 == 0, and remaining tuples have i1 == the i2 from the -// tuple preceding it, and likewise for j1 == the previous j2. -// -// The tags are characters, with these meanings: -// -// 'r' (replace): a[i1:i2] should be replaced by b[j1:j2] -// -// 'd' (delete): a[i1:i2] should be deleted, j1==j2 in this case. -// -// 'i' (insert): b[j1:j2] should be inserted at a[i1:i1], i1==i2 in this case. -// -// 'e' (equal): a[i1:i2] == b[j1:j2] -func (m *SequenceMatcher) GetOpCodes() []OpCode { - if m.opCodes != nil { - return m.opCodes - } - i, j := 0, 0 - matching := m.GetMatchingBlocks() - opCodes := make([]OpCode, 0, len(matching)) - for _, m := range matching { - // invariant: we've pumped out correct diffs to change - // a[:i] into b[:j], and the next matching block is - // a[ai:ai+size] == b[bj:bj+size]. So we need to pump - // out a diff to change a[i:ai] into b[j:bj], pump out - // the matching block, and move (i,j) beyond the match - ai, bj, size := m.A, m.B, m.Size - tag := byte(0) - if i < ai && j < bj { - tag = 'r' - } else if i < ai { - tag = 'd' - } else if j < bj { - tag = 'i' - } - if tag > 0 { - opCodes = append(opCodes, OpCode{tag, i, ai, j, bj}) - } - i, j = ai+size, bj+size - // the list of matching blocks is terminated by a - // sentinel with size 0 - if size > 0 { - opCodes = append(opCodes, OpCode{'e', ai, i, bj, j}) - } - } - m.opCodes = opCodes - return m.opCodes -} - -// Isolate change clusters by eliminating ranges with no changes. -// -// Return a generator of groups with up to n lines of context. -// Each group is in the same format as returned by GetOpCodes(). -func (m *SequenceMatcher) GetGroupedOpCodes(n int) [][]OpCode { - if n < 0 { - n = 3 - } - codes := m.GetOpCodes() - if len(codes) == 0 { - codes = []OpCode{OpCode{'e', 0, 1, 0, 1}} - } - // Fixup leading and trailing groups if they show no changes. - if codes[0].Tag == 'e' { - c := codes[0] - i1, i2, j1, j2 := c.I1, c.I2, c.J1, c.J2 - codes[0] = OpCode{c.Tag, max(i1, i2-n), i2, max(j1, j2-n), j2} - } - if codes[len(codes)-1].Tag == 'e' { - c := codes[len(codes)-1] - i1, i2, j1, j2 := c.I1, c.I2, c.J1, c.J2 - codes[len(codes)-1] = OpCode{c.Tag, i1, min(i2, i1+n), j1, min(j2, j1+n)} - } - nn := n + n - groups := [][]OpCode{} - group := []OpCode{} - for _, c := range codes { - i1, i2, j1, j2 := c.I1, c.I2, c.J1, c.J2 - // End the current group and start a new one whenever - // there is a large range with no changes. - if c.Tag == 'e' && i2-i1 > nn { - group = append(group, OpCode{c.Tag, i1, min(i2, i1+n), - j1, min(j2, j1+n)}) - groups = append(groups, group) - group = []OpCode{} - i1, j1 = max(i1, i2-n), max(j1, j2-n) - } - group = append(group, OpCode{c.Tag, i1, i2, j1, j2}) - } - if len(group) > 0 && !(len(group) == 1 && group[0].Tag == 'e') { - groups = append(groups, group) - } - return groups -} - -// Return a measure of the sequences' similarity (float in [0,1]). -// -// Where T is the total number of elements in both sequences, and -// M is the number of matches, this is 2.0*M / T. -// Note that this is 1 if the sequences are identical, and 0 if -// they have nothing in common. -// -// .Ratio() is expensive to compute if you haven't already computed -// .GetMatchingBlocks() or .GetOpCodes(), in which case you may -// want to try .QuickRatio() or .RealQuickRation() first to get an -// upper bound. -func (m *SequenceMatcher) Ratio() float64 { - matches := 0 - for _, m := range m.GetMatchingBlocks() { - matches += m.Size - } - return calculateRatio(matches, len(m.a)+len(m.b)) -} - -// Return an upper bound on ratio() relatively quickly. -// -// This isn't defined beyond that it is an upper bound on .Ratio(), and -// is faster to compute. -func (m *SequenceMatcher) QuickRatio() float64 { - // viewing a and b as multisets, set matches to the cardinality - // of their intersection; this counts the number of matches - // without regard to order, so is clearly an upper bound - if m.fullBCount == nil { - m.fullBCount = map[string]int{} - for _, s := range m.b { - m.fullBCount[s] = m.fullBCount[s] + 1 - } - } - - // avail[x] is the number of times x appears in 'b' less the - // number of times we've seen it in 'a' so far ... kinda - avail := map[string]int{} - matches := 0 - for _, s := range m.a { - n, ok := avail[s] - if !ok { - n = m.fullBCount[s] - } - avail[s] = n - 1 - if n > 0 { - matches += 1 - } - } - return calculateRatio(matches, len(m.a)+len(m.b)) -} - -// Return an upper bound on ratio() very quickly. -// -// This isn't defined beyond that it is an upper bound on .Ratio(), and -// is faster to compute than either .Ratio() or .QuickRatio(). -func (m *SequenceMatcher) RealQuickRatio() float64 { - la, lb := len(m.a), len(m.b) - return calculateRatio(min(la, lb), la+lb) -} - -// Convert range to the "ed" format -func formatRangeUnified(start, stop int) string { - // Per the diff spec at http://www.unix.org/single_unix_specification/ - beginning := start + 1 // lines start numbering with one - length := stop - start - if length == 1 { - return fmt.Sprintf("%d", beginning) - } - if length == 0 { - beginning -= 1 // empty ranges begin at line just before the range - } - return fmt.Sprintf("%d,%d", beginning, length) -} - -// Unified diff parameters -type UnifiedDiff struct { - A []string // First sequence lines - FromFile string // First file name - FromDate string // First file time - B []string // Second sequence lines - ToFile string // Second file name - ToDate string // Second file time - Eol string // Headers end of line, defaults to LF - Context int // Number of context lines -} - -// Compare two sequences of lines; generate the delta as a unified diff. -// -// Unified diffs are a compact way of showing line changes and a few -// lines of context. The number of context lines is set by 'n' which -// defaults to three. -// -// By default, the diff control lines (those with ---, +++, or @@) are -// created with a trailing newline. This is helpful so that inputs -// created from file.readlines() result in diffs that are suitable for -// file.writelines() since both the inputs and outputs have trailing -// newlines. -// -// For inputs that do not have trailing newlines, set the lineterm -// argument to "" so that the output will be uniformly newline free. -// -// The unidiff format normally has a header for filenames and modification -// times. Any or all of these may be specified using strings for -// 'fromfile', 'tofile', 'fromfiledate', and 'tofiledate'. -// The modification times are normally expressed in the ISO 8601 format. -func WriteUnifiedDiff(writer io.Writer, diff UnifiedDiff) error { - buf := bufio.NewWriter(writer) - defer buf.Flush() - wf := func(format string, args ...interface{}) error { - _, err := buf.WriteString(fmt.Sprintf(format, args...)) - return err - } - ws := func(s string) error { - _, err := buf.WriteString(s) - return err - } - - if len(diff.Eol) == 0 { - diff.Eol = "\n" - } - - started := false - m := NewMatcher(diff.A, diff.B) - for _, g := range m.GetGroupedOpCodes(diff.Context) { - if !started { - started = true - fromDate := "" - if len(diff.FromDate) > 0 { - fromDate = "\t" + diff.FromDate - } - toDate := "" - if len(diff.ToDate) > 0 { - toDate = "\t" + diff.ToDate - } - if diff.FromFile != "" || diff.ToFile != "" { - err := wf("--- %s%s%s", diff.FromFile, fromDate, diff.Eol) - if err != nil { - return err - } - err = wf("+++ %s%s%s", diff.ToFile, toDate, diff.Eol) - if err != nil { - return err - } - } - } - first, last := g[0], g[len(g)-1] - range1 := formatRangeUnified(first.I1, last.I2) - range2 := formatRangeUnified(first.J1, last.J2) - if err := wf("@@ -%s +%s @@%s", range1, range2, diff.Eol); err != nil { - return err - } - for _, c := range g { - i1, i2, j1, j2 := c.I1, c.I2, c.J1, c.J2 - if c.Tag == 'e' { - for _, line := range diff.A[i1:i2] { - if err := ws(" " + line); err != nil { - return err - } - } - continue - } - if c.Tag == 'r' || c.Tag == 'd' { - for _, line := range diff.A[i1:i2] { - if err := ws("-" + line); err != nil { - return err - } - } - } - if c.Tag == 'r' || c.Tag == 'i' { - for _, line := range diff.B[j1:j2] { - if err := ws("+" + line); err != nil { - return err - } - } - } - } - } - return nil -} - -// Like WriteUnifiedDiff but returns the diff a string. -func GetUnifiedDiffString(diff UnifiedDiff) (string, error) { - w := &bytes.Buffer{} - err := WriteUnifiedDiff(w, diff) - return string(w.Bytes()), err -} - -// Convert range to the "ed" format. -func formatRangeContext(start, stop int) string { - // Per the diff spec at http://www.unix.org/single_unix_specification/ - beginning := start + 1 // lines start numbering with one - length := stop - start - if length == 0 { - beginning -= 1 // empty ranges begin at line just before the range - } - if length <= 1 { - return fmt.Sprintf("%d", beginning) - } - return fmt.Sprintf("%d,%d", beginning, beginning+length-1) -} - -type ContextDiff UnifiedDiff - -// Compare two sequences of lines; generate the delta as a context diff. -// -// Context diffs are a compact way of showing line changes and a few -// lines of context. The number of context lines is set by diff.Context -// which defaults to three. -// -// By default, the diff control lines (those with *** or ---) are -// created with a trailing newline. -// -// For inputs that do not have trailing newlines, set the diff.Eol -// argument to "" so that the output will be uniformly newline free. -// -// The context diff format normally has a header for filenames and -// modification times. Any or all of these may be specified using -// strings for diff.FromFile, diff.ToFile, diff.FromDate, diff.ToDate. -// The modification times are normally expressed in the ISO 8601 format. -// If not specified, the strings default to blanks. -func WriteContextDiff(writer io.Writer, diff ContextDiff) error { - buf := bufio.NewWriter(writer) - defer buf.Flush() - var diffErr error - wf := func(format string, args ...interface{}) { - _, err := buf.WriteString(fmt.Sprintf(format, args...)) - if diffErr == nil && err != nil { - diffErr = err - } - } - ws := func(s string) { - _, err := buf.WriteString(s) - if diffErr == nil && err != nil { - diffErr = err - } - } - - if len(diff.Eol) == 0 { - diff.Eol = "\n" - } - - prefix := map[byte]string{ - 'i': "+ ", - 'd': "- ", - 'r': "! ", - 'e': " ", - } - - started := false - m := NewMatcher(diff.A, diff.B) - for _, g := range m.GetGroupedOpCodes(diff.Context) { - if !started { - started = true - fromDate := "" - if len(diff.FromDate) > 0 { - fromDate = "\t" + diff.FromDate - } - toDate := "" - if len(diff.ToDate) > 0 { - toDate = "\t" + diff.ToDate - } - if diff.FromFile != "" || diff.ToFile != "" { - wf("*** %s%s%s", diff.FromFile, fromDate, diff.Eol) - wf("--- %s%s%s", diff.ToFile, toDate, diff.Eol) - } - } - - first, last := g[0], g[len(g)-1] - ws("***************" + diff.Eol) - - range1 := formatRangeContext(first.I1, last.I2) - wf("*** %s ****%s", range1, diff.Eol) - for _, c := range g { - if c.Tag == 'r' || c.Tag == 'd' { - for _, cc := range g { - if cc.Tag == 'i' { - continue - } - for _, line := range diff.A[cc.I1:cc.I2] { - ws(prefix[cc.Tag] + line) - } - } - break - } - } - - range2 := formatRangeContext(first.J1, last.J2) - wf("--- %s ----%s", range2, diff.Eol) - for _, c := range g { - if c.Tag == 'r' || c.Tag == 'i' { - for _, cc := range g { - if cc.Tag == 'd' { - continue - } - for _, line := range diff.B[cc.J1:cc.J2] { - ws(prefix[cc.Tag] + line) - } - } - break - } - } - } - return diffErr -} - -// Like WriteContextDiff but returns the diff a string. -func GetContextDiffString(diff ContextDiff) (string, error) { - w := &bytes.Buffer{} - err := WriteContextDiff(w, diff) - return string(w.Bytes()), err -} - -// Split a string on "\n" while preserving them. The output can be used -// as input for UnifiedDiff and ContextDiff structures. -func SplitLines(s string) []string { - lines := strings.SplitAfter(s, "\n") - lines[len(lines)-1] += "\n" - return lines -} diff --git a/vendor/github.com/visualfc/gotools/LICENSE b/vendor/github.com/visualfc/gotools/LICENSE deleted file mode 100644 index ca2493d..0000000 --- a/vendor/github.com/visualfc/gotools/LICENSE +++ /dev/null @@ -1,28 +0,0 @@ -Copyright (c) 2011-2017, visualfc -All rights reserved. - -Redistribution and use in source and binary forms, with or without -modification, are permitted provided that the following conditions are met: - -* Redistributions of source code must retain the above copyright notice, this - list of conditions and the following disclaimer. - -* Redistributions in binary form must reproduce the above copyright notice, - this list of conditions and the following disclaimer in the documentation - and/or other materials provided with the distribution. - -* Neither the name of gotools nor the names of its - contributors may be used to endorse or promote products derived from - this software without specific prior written permission. - -THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" -AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE -IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE -DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE -FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL -DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR -SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER -CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, -OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE -OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - diff --git a/vendor/github.com/visualfc/gotools/README.md b/vendor/github.com/visualfc/gotools/README.md deleted file mode 100644 index 7ad5359..0000000 --- a/vendor/github.com/visualfc/gotools/README.md +++ /dev/null @@ -1,28 +0,0 @@ -LiteIDE Golang Tools -========= - -### LiteIDE - -_LiteIDE is a simple, open source, cross-platform Go IDE._ - -### GoTools -_GoTools is a golang tools support for LiteIDE._ - -### Website -* LiteIDE Source code - -* Gotools Source code - -* Binary downloads - -* Google group - -* How to Install - -* FAQ - -* Changes - - -### Donate -* diff --git a/vendor/github.com/visualfc/gotools/astview/astdoc.go b/vendor/github.com/visualfc/gotools/astview/astdoc.go deleted file mode 100644 index a03bd5c..0000000 --- a/vendor/github.com/visualfc/gotools/astview/astdoc.go +++ /dev/null @@ -1,700 +0,0 @@ -// Copyright 2009 The Go Authors. All rights reserved. -// Use of this source code is governed by a BSD-style -// license that can be found in the LICENSE file. - -// Package doc extracts source code documentation from a Go AST. -package astview - -import ( - "fmt" - "go/ast" - "go/token" - "regexp" - "sort" - "strconv" - "strings" -) - -// ---------------------------------------------------------------------------- - -type typeDoc struct { - // len(decl.Specs) == 1, and the element type is *ast.TypeSpec - // if the type declaration hasn't been seen yet, decl is nil - decl *ast.GenDecl - // values, factory functions, and methods associated with the type - values []*ast.GenDecl // consts and vars - factories map[string]*ast.FuncDecl - methods map[string]*ast.FuncDecl -} - -// docReader accumulates documentation for a single package. -// It modifies the AST: Comments (declaration documentation) -// that have been collected by the DocReader are set to nil -// in the respective AST nodes so that they are not printed -// twice (once when printing the documentation and once when -// printing the corresponding AST node). -// -type docReader struct { - doc *ast.CommentGroup // package documentation, if any - pkgName string - showAll bool - values []*ast.GenDecl // consts and vars - types map[string]*typeDoc - funcs map[string]*ast.FuncDecl - imports map[string]int - bugs []*ast.CommentGroup - todos []*TodoDoc -} - -func (doc *docReader) init(pkgName string, showAll bool) { - doc.pkgName = pkgName - doc.showAll = showAll - doc.imports = make(map[string]int) - doc.types = make(map[string]*typeDoc) - doc.funcs = make(map[string]*ast.FuncDecl) -} - -func (doc *docReader) addDoc(comments *ast.CommentGroup) { - if doc.doc == nil { - // common case: just one package comment - doc.doc = comments - return - } - - // More than one package comment: Usually there will be only - // one file with a package comment, but it's better to collect - // all comments than drop them on the floor. - // (This code isn't particularly clever - no amortized doubling is - // used - but this situation occurs rarely and is not time-critical.) - n1 := len(doc.doc.List) - n2 := len(comments.List) - list := make([]*ast.Comment, n1+1+n2) // + 1 for separator line - copy(list, doc.doc.List) - list[n1] = &ast.Comment{token.NoPos, "//"} // separator line - copy(list[n1+1:], comments.List) - doc.doc = &ast.CommentGroup{list} -} - -func (doc *docReader) addType(decl *ast.GenDecl) { - spec := decl.Specs[0].(*ast.TypeSpec) - typ := doc.lookupTypeDoc(spec.Name.Name) - // typ should always be != nil since declared types - // are always named - be conservative and check - if typ != nil { - // a type should be added at most once, so typ.decl - // should be nil - if it isn't, simply overwrite it - typ.decl = decl - } -} - -func (doc *docReader) lookupTypeDoc(name string) *typeDoc { - if name == "" { - return nil // no type docs for anonymous types - } - if tdoc, found := doc.types[name]; found { - return tdoc - } - // type wasn't found - add one without declaration - tdoc := &typeDoc{nil, nil, make(map[string]*ast.FuncDecl), make(map[string]*ast.FuncDecl)} - doc.types[name] = tdoc - return tdoc -} - -func docBaseTypeName(typ ast.Expr, showAll bool) string { - switch t := typ.(type) { - case *ast.Ident: - // if the type is not exported, the effect to - // a client is as if there were no type name - if showAll || t.IsExported() { - return t.Name - } - case *ast.StarExpr: - return docBaseTypeName(t.X, showAll) - } - return "" -} - -func (doc *docReader) addValue(decl *ast.GenDecl) { - // determine if decl should be associated with a type - // Heuristic: For each typed entry, determine the type name, if any. - // If there is exactly one type name that is sufficiently - // frequent, associate the decl with the respective type. - domName := "" - domFreq := 0 - prev := "" - for _, s := range decl.Specs { - if v, ok := s.(*ast.ValueSpec); ok { - name := "" - switch { - case v.Type != nil: - // a type is present; determine its name - name = docBaseTypeName(v.Type, doc.showAll) - case decl.Tok == token.CONST: - // no type is present but we have a constant declaration; - // use the previous type name (w/o more type information - // we cannot handle the case of unnamed variables with - // initializer expressions except for some trivial cases) - name = prev - } - if name != "" { - // entry has a named type - if domName != "" && domName != name { - // more than one type name - do not associate - // with any type - domName = "" - break - } - domName = name - domFreq++ - } - prev = name - } - } - - // determine values list - const threshold = 0.75 - values := &doc.values - if domName != "" && domFreq >= int(float64(len(decl.Specs))*threshold) { - // typed entries are sufficiently frequent - typ := doc.lookupTypeDoc(domName) - if typ != nil { - values = &typ.values // associate with that type - } - } - - *values = append(*values, decl) -} - -// Helper function to set the table entry for function f. Makes sure that -// at least one f with associated documentation is stored in table, if there -// are multiple f's with the same name. -func setFunc(table map[string]*ast.FuncDecl, f *ast.FuncDecl) { - name := f.Name.Name - if g, exists := table[name]; exists && g.Doc != nil { - // a function with the same name has already been registered; - // since it has documentation, assume f is simply another - // implementation and ignore it - // TODO(gri) consider collecting all functions, or at least - // all comments - return - } - // function doesn't exist or has no documentation; use f - table[name] = f -} - -func (doc *docReader) addFunc(fun *ast.FuncDecl) { - name := fun.Name.Name - - // determine if it should be associated with a type - if fun.Recv != nil { - // method - typ := doc.lookupTypeDoc(docBaseTypeName(fun.Recv.List[0].Type, doc.showAll)) - if typ != nil { - // exported receiver type - setFunc(typ.methods, fun) - } - // otherwise don't show the method - // TODO(gri): There may be exported methods of non-exported types - // that can be called because of exported values (consts, vars, or - // function results) of that type. Could determine if that is the - // case and then show those methods in an appropriate section. - return - } - - // perhaps a factory function - // determine result type, if any - if fun.Type.Results.NumFields() >= 1 { - res := fun.Type.Results.List[0] - if len(res.Names) <= 1 { - // exactly one (named or anonymous) result associated - // with the first type in result signature (there may - // be more than one result) - tname := docBaseTypeName(res.Type, doc.showAll) - typ := doc.lookupTypeDoc(tname) - if typ != nil { - // named and exported result type - - // Work-around for failure of heuristic: In package os - // too many functions are considered factory functions - // for the Error type. Eliminate manually for now as - // this appears to be the only important case in the - // current library where the heuristic fails. - if doc.pkgName == "os" && tname == "Error" && - name != "NewError" && name != "NewSyscallError" { - // not a factory function for os.Error - setFunc(doc.funcs, fun) // treat as ordinary function - return - } - - setFunc(typ.factories, fun) - return - } - } - } - - // ordinary function - setFunc(doc.funcs, fun) -} - -func (doc *docReader) addDecl(decl ast.Decl) { - switch d := decl.(type) { - case *ast.GenDecl: - if len(d.Specs) > 0 { - switch d.Tok { - case token.IMPORT: - // imports are handled individually - for _, spec := range d.Specs { - if s, ok := spec.(*ast.ImportSpec); ok { - if import_, err := strconv.Unquote(s.Path.Value); err == nil { - doc.imports[import_] = 1 - } - } - } - case token.CONST, token.VAR: - // constants and variables are always handled as a group - doc.addValue(d) - case token.TYPE: - // types are handled individually - for _, spec := range d.Specs { - // make a (fake) GenDecl node for this TypeSpec - // (we need to do this here - as opposed to just - // for printing - so we don't lose the GenDecl - // documentation) - // - // TODO(gri): Consider just collecting the TypeSpec - // node (and copy in the GenDecl.doc if there is no - // doc in the TypeSpec - this is currently done in - // makeTypeDocs below). Simpler data structures, but - // would lose GenDecl documentation if the TypeSpec - // has documentation as well. - doc.addType(&ast.GenDecl{d.Doc, d.Pos(), token.TYPE, token.NoPos, []ast.Spec{spec}, token.NoPos}) - // A new GenDecl node is created, no need to nil out d.Doc. - } - } - } - case *ast.FuncDecl: - doc.addFunc(d) - } -} - -func copyCommentList(list []*ast.Comment) []*ast.Comment { - return append([]*ast.Comment(nil), list...) -} - -var ( - todoList = "TODO,BUG,FIXME,NOTE,SECBUG" - bug_markers = regexp.MustCompile("^/[/*][ \t]*BUG\\(.*\\):[ \t]*") // BUG(uid): - bug_content = regexp.MustCompile("[^ \n\r\t]+") // at least one non-whitespace char - todo_markers = regexp.MustCompile(fmt.Sprintf("^/[/*][ \t]*(%s)[\\s\\:\\(\\,].*$", strings.Replace(todoList, ",", "|", -1))) -) - -// addFile adds the AST for a source file to the docReader. -// Adding the same AST multiple times is a no-op. -// -func (doc *docReader) addFile(src *ast.File) { - // add package documentation - if src.Doc != nil { - doc.addDoc(src.Doc) - src.Doc = nil // doc consumed - remove from ast.File node - } - - // add all declarations - for _, decl := range src.Decls { - doc.addDecl(decl) - } - // collect BUG(...) comments - for _, c := range src.Comments { - text := c.List[0].Text - if m := todo_markers.FindStringSubmatchIndex(text); m != nil { - doc.todos = append(doc.todos, &TodoDoc{text[m[2]:m[3]], text[m[2]:], c}) - } - // if m := bug_markers.FindStringIndex(text); m != nil { - // // found a BUG comment; maybe empty - // if btxt := text[m[1]:]; bug_content.MatchString(btxt) { - // // non-empty BUG comment; collect comment without BUG prefix - // list := copyCommentList(c.List) - // list[0].Text = text[m[1]:] - // doc.bugs = append(doc.bugs, &ast.CommentGroup{list}) - // } - // } - } - src.Comments = nil // consumed unassociated comments - remove from ast.File node -} - -func NewFileDoc(file *ast.File, showAll bool) *PackageDoc { - var r docReader - r.init(file.Name.Name, showAll) - r.addFile(file) - return r.newDoc("", nil) -} - -func NewPackageDoc(pkg *ast.Package, importpath string, showAll bool) *PackageDoc { - var r docReader - r.init(pkg.Name, showAll) - filenames := make([]string, len(pkg.Files)) - i := 0 - for filename, f := range pkg.Files { - r.addFile(f) - filenames[i] = filename - i++ - } - return r.newDoc(importpath, filenames) -} - -// ---------------------------------------------------------------------------- -// Conversion to external representation - -// ValueDoc is the documentation for a group of declared -// values, either vars or consts. -// -type ValueDoc struct { - Doc string - Decl *ast.GenDecl - order int -} - -type sortValueDoc []*ValueDoc - -func (p sortValueDoc) Len() int { return len(p) } -func (p sortValueDoc) Swap(i, j int) { p[i], p[j] = p[j], p[i] } - -func declName(d *ast.GenDecl) string { - if len(d.Specs) != 1 { - return "" - } - - switch v := d.Specs[0].(type) { - case *ast.ValueSpec: - return v.Names[0].Name - case *ast.TypeSpec: - return v.Name.Name - } - - return "" -} - -func (p sortValueDoc) Less(i, j int) bool { - // sort by name - // pull blocks (name = "") up to top - // in original order - if ni, nj := declName(p[i].Decl), declName(p[j].Decl); ni != nj { - return ni < nj - } - return p[i].order < p[j].order -} - -func makeValueDocs(list []*ast.GenDecl, tok token.Token) []*ValueDoc { - d := make([]*ValueDoc, len(list)) // big enough in any case - n := 0 - for i, decl := range list { - if decl.Tok == tok { - d[n] = &ValueDoc{decl.Doc.Text(), decl, i} - n++ - decl.Doc = nil // doc consumed - removed from AST - } - } - d = d[0:n] - sort.Sort(sortValueDoc(d)) - return d -} - -// FuncDoc is the documentation for a func declaration, -// either a top-level function or a method function. -// -type FuncDoc struct { - Doc string - Recv ast.Expr // TODO(rsc): Would like string here - Name string - Decl *ast.FuncDecl -} - -type sortFuncDoc []*FuncDoc - -func (p sortFuncDoc) Len() int { return len(p) } -func (p sortFuncDoc) Swap(i, j int) { p[i], p[j] = p[j], p[i] } -func (p sortFuncDoc) Less(i, j int) bool { return p[i].Name < p[j].Name } - -func makeFuncDocs(m map[string]*ast.FuncDecl) []*FuncDoc { - d := make([]*FuncDoc, len(m)) - i := 0 - for _, f := range m { - doc := new(FuncDoc) - doc.Doc = f.Doc.Text() - f.Doc = nil // doc consumed - remove from ast.FuncDecl node - if f.Recv != nil { - doc.Recv = f.Recv.List[0].Type - } - doc.Name = f.Name.Name - doc.Decl = f - d[i] = doc - i++ - } - sort.Sort(sortFuncDoc(d)) - return d -} - -// TypeDoc is the documentation for a declared type. -// Consts and Vars are sorted lists of constants and variables of (mostly) that type. -// Factories is a sorted list of factory functions that return that type. -// Methods is a sorted list of method functions on that type. -type TypeDoc struct { - Doc string - Type *ast.TypeSpec - Consts []*ValueDoc - Vars []*ValueDoc - Funcs []*FuncDoc - Methods []*FuncDoc - Decl *ast.GenDecl - order int -} - -type sortTypeDoc []*TypeDoc - -func (p sortTypeDoc) Len() int { return len(p) } -func (p sortTypeDoc) Swap(i, j int) { p[i], p[j] = p[j], p[i] } -func (p sortTypeDoc) Less(i, j int) bool { - // sort by name - // pull blocks (name = "") up to top - // in original order - if ni, nj := p[i].Type.Name.Name, p[j].Type.Name.Name; ni != nj { - return ni < nj - } - return p[i].order < p[j].order -} - -// NOTE(rsc): This would appear not to be correct for type ( ) -// blocks, but the doc extractor above has split them into -// individual declarations. -func (doc *docReader) makeTypeDocs(m map[string]*typeDoc) []*TypeDoc { - d := make([]*TypeDoc, len(m)) - i := 0 - for _, old := range m { - // all typeDocs should have a declaration associated with - // them after processing an entire package - be conservative - // and check - if decl := old.decl; decl != nil { - typespec := decl.Specs[0].(*ast.TypeSpec) - t := new(TypeDoc) - doc := typespec.Doc - typespec.Doc = nil // doc consumed - remove from ast.TypeSpec node - if doc == nil { - // no doc associated with the spec, use the declaration doc, if any - doc = decl.Doc - } - decl.Doc = nil // doc consumed - remove from ast.Decl node - t.Doc = doc.Text() - t.Type = typespec - t.Consts = makeValueDocs(old.values, token.CONST) - t.Vars = makeValueDocs(old.values, token.VAR) - t.Funcs = makeFuncDocs(old.factories) - t.Methods = makeFuncDocs(old.methods) - t.Decl = old.decl - t.order = i - d[i] = t - i++ - } else { - // no corresponding type declaration found - move any associated - // values, factory functions, and methods back to the top-level - // so that they are not lost (this should only happen if a package - // file containing the explicit type declaration is missing or if - // an unqualified type name was used after a "." import) - // 1) move values - doc.values = append(doc.values, old.values...) - // 2) move factory functions - for name, f := range old.factories { - doc.funcs[name] = f - } - // 3) move methods - for name, f := range old.methods { - // don't overwrite functions with the same name - if _, found := doc.funcs[name]; !found { - doc.funcs[name] = f - } - } - } - } - d = d[0:i] // some types may have been ignored - sort.Sort(sortTypeDoc(d)) - return d -} - -func makeBugDocs(list []*ast.CommentGroup) []string { - d := make([]string, len(list)) - for i, g := range list { - d[i] = g.Text() - } - return d -} - -type TodoDoc struct { - Tag string - Text string - Comments *ast.CommentGroup -} - -// PackageDoc is the documentation for an entire package. -// -type PackageDoc struct { - PackageName string - ImportPath string - Imports []string - Filenames []string - Doc string - Consts []*ValueDoc - Types []*TypeDoc - Vars []*ValueDoc - Funcs []*FuncDoc - Factorys []*FuncDoc - Todos []*TodoDoc - Bugs []string -} - -// newDoc returns the accumulated documentation for the package. -// -func (doc *docReader) newDoc(importpath string, filenames []string) *PackageDoc { - p := new(PackageDoc) - p.PackageName = doc.pkgName - p.ImportPath = importpath - sort.Strings(filenames) - p.Filenames = filenames - p.Doc = doc.doc.Text() - p.Imports = sortedKeys(doc.imports) - // makeTypeDocs may extend the list of doc.values and - // doc.funcs and thus must be called before any other - // function consuming those lists - p.Types = doc.makeTypeDocs(doc.types) - p.Consts = makeValueDocs(doc.values, token.CONST) - p.Vars = makeValueDocs(doc.values, token.VAR) - p.Funcs = makeFuncDocs(doc.funcs) - p.Bugs = makeBugDocs(doc.bugs) - p.Todos = doc.todos - - for _, d := range p.Types { - switch d.Type.Type.(type) { - case *ast.StructType: - p.Factorys = append(p.Factorys, d.Funcs...) - d.Funcs = make([]*FuncDoc, 0) - case *ast.InterfaceType: - p.Factorys = append(p.Factorys, d.Funcs...) - d.Funcs = make([]*FuncDoc, 0) - default: - p.Vars = append(p.Vars, d.Vars...) - d.Vars = make([]*ValueDoc, 0) - p.Consts = append(p.Consts, d.Consts...) - d.Consts = make([]*ValueDoc, 0) - } - } - return p -} - -func sortedKeys(m map[string]int) []string { - list := make([]string, len(m)) - i := 0 - for key := range m { - list[i] = key - i++ - } - sort.Strings(list) - return list -} - -// ---------------------------------------------------------------------------- -// Filtering by name - -type Filter func(string) bool - -func matchFields(fields *ast.FieldList, f Filter) bool { - if fields != nil { - for _, field := range fields.List { - for _, name := range field.Names { - if f(name.Name) { - return true - } - } - } - } - return false -} - -func matchDecl(d *ast.GenDecl, f Filter) bool { - for _, d := range d.Specs { - switch v := d.(type) { - case *ast.ValueSpec: - for _, name := range v.Names { - if f(name.Name) { - return true - } - } - case *ast.TypeSpec: - if f(v.Name.Name) { - return true - } - switch t := v.Type.(type) { - case *ast.StructType: - if matchFields(t.Fields, f) { - return true - } - case *ast.InterfaceType: - if matchFields(t.Methods, f) { - return true - } - } - } - } - return false -} - -func filterValueDocs(a []*ValueDoc, f Filter) []*ValueDoc { - w := 0 - for _, vd := range a { - if matchDecl(vd.Decl, f) { - a[w] = vd - w++ - } - } - return a[0:w] -} - -func filterFuncDocs(a []*FuncDoc, f Filter) []*FuncDoc { - w := 0 - for _, fd := range a { - if f(fd.Name) { - a[w] = fd - w++ - } - } - return a[0:w] -} - -func filterTypeDocs(a []*TypeDoc, f Filter) []*TypeDoc { - w := 0 - for _, td := range a { - n := 0 // number of matches - if matchDecl(td.Decl, f) { - n = 1 - } else { - // type name doesn't match, but we may have matching consts, vars, factories or methods - td.Consts = filterValueDocs(td.Consts, f) - td.Vars = filterValueDocs(td.Vars, f) - td.Funcs = filterFuncDocs(td.Funcs, f) - td.Methods = filterFuncDocs(td.Methods, f) - n += len(td.Consts) + len(td.Vars) + len(td.Funcs) + len(td.Methods) - } - if n > 0 { - a[w] = td - w++ - } - } - return a[0:w] -} - -// Filter eliminates documentation for names that don't pass through the filter f. -// TODO: Recognize "Type.Method" as a name. -// -func (p *PackageDoc) Filter(f Filter) { - p.Consts = filterValueDocs(p.Consts, f) - p.Vars = filterValueDocs(p.Vars, f) - p.Types = filterTypeDocs(p.Types, f) - p.Funcs = filterFuncDocs(p.Funcs, f) - p.Doc = "" // don't show top-level package doc -} diff --git a/vendor/github.com/visualfc/gotools/astview/astview.go b/vendor/github.com/visualfc/gotools/astview/astview.go deleted file mode 100644 index 3fe9660..0000000 --- a/vendor/github.com/visualfc/gotools/astview/astview.go +++ /dev/null @@ -1,408 +0,0 @@ -// Copyright 2011-2015 visualfc . All rights reserved. -// Use of this source code is governed by a BSD-style -// license that can be found in the LICENSE file. - -package astview - -import ( - "fmt" - "go/ast" - "go/parser" - "go/token" - "go/types" - "io" - "io/ioutil" - "os" - "path/filepath" - "strings" - - "github.com/visualfc/gotools/command" - "github.com/visualfc/gotools/pkgutil" -) - -var Command = &command.Command{ - Run: runAstView, - UsageLine: "astview [-stdin] files...", - Short: "print go files astview", - Long: `print go files astview`, -} - -var astViewStdin bool -var astViewShowEndPos bool -var astViewShowTodo bool - -func init() { - Command.Flag.BoolVar(&astViewStdin, "stdin", false, "input from stdin") - Command.Flag.BoolVar(&astViewShowEndPos, "end", false, "show decl end pos") - Command.Flag.BoolVar(&astViewShowTodo, "todo", false, "show todo list") -} - -func runAstView(cmd *command.Command, args []string) error { - if len(args) == 0 { - cmd.Usage() - return os.ErrInvalid - } - if astViewStdin { - view, err := NewFilePackageSource(args[0], os.Stdin, true) - if err != nil { - fmt.Fprintf(os.Stderr, "astview: %s", err) - command.SetExitStatus(3) - command.Exit() - } - view.PrintTree(os.Stdout) - } else { - err := PrintFilesTree(args, os.Stdout, true) - if err != nil { - fmt.Fprintf(os.Stderr, "astview:%s", err) - command.SetExitStatus(3) - command.Exit() - } - } - return nil -} - -const ( - tag_package = "p" - tag_imports_folder = "+m" - tag_import = "mm" - tag_type = "t" - tag_struct = "s" - tag_interface = "i" - tag_value = "v" - tag_const = "c" - tag_func = "f" - tag_value_folder = "+v" - tag_const_folder = "+c" - tag_func_folder = "+f" - tag_factor_folder = "+tf" - tag_type_method = "tm" - tag_type_factor = "tf" - tag_type_value = "tv" - tag_todo = "b" - tag_todo_folder = "+b" -) - -type PackageView struct { - fset *token.FileSet - pdoc *PackageDoc - pkg *ast.Package - expr bool -} - -var AllFiles []string - -func (p *PackageView) posFileIndex(pos token.Position) int { - var index = -1 - for i := 0; i < len(AllFiles); i++ { - if AllFiles[i] == pos.Filename { - index = i - break - } - } - if index == -1 { - AllFiles = append(AllFiles, pos.Filename) - index = len(AllFiles) - 1 - } - return index -} - -func (p *PackageView) posText(pos token.Position, end token.Position) (s string) { - index := p.posFileIndex(pos) - if astViewShowEndPos { - return fmt.Sprintf("%d:%d:%d:%d:%d", index, pos.Line, pos.Column, end.Line, end.Column) - } - return fmt.Sprintf("%d:%d:%d", index, pos.Line, pos.Column) -} - -func NewFilePackage(filename string) (*PackageView, error) { - p := new(PackageView) - p.fset = token.NewFileSet() - file, err := parser.ParseFile(p.fset, filename, nil, parser.AllErrors) - if file == nil { - return nil, err - } - m := make(map[string]*ast.File) - m[filename] = file - pkg, err := ast.NewPackage(p.fset, m, nil, nil) - if err != nil { - return nil, err - } - p.pkg = pkg - p.pdoc = NewPackageDoc(pkg, pkg.Name, true) - return p, nil -} - -func NewPackageView(pkg *ast.Package, fset *token.FileSet, expr bool) (*PackageView, error) { - p := new(PackageView) - p.fset = fset - p.pkg = pkg - p.pdoc = NewPackageDoc(pkg, pkg.Name, true) - p.expr = expr - return p, nil -} - -func ParseFiles(fset *token.FileSet, filenames []string, mode parser.Mode) (pkgs map[string]*ast.Package, pkgsfiles []string, first error) { - pkgs = make(map[string]*ast.Package) - for _, filename := range filenames { - if src, err := parser.ParseFile(fset, filename, nil, mode); src != nil { - name := src.Name.Name - pkg, found := pkgs[name] - if !found { - pkg = &ast.Package{ - Name: name, - Files: make(map[string]*ast.File), - } - pkgs[name] = pkg - } - pkg.Files[filename] = src - pkgsfiles = append(pkgsfiles, filename) - } else { - first = err - return - } - } - return -} - -func PrintFilesTree(filenames []string, w io.Writer, expr bool) error { - fset := token.NewFileSet() - mode := parser.AllErrors - if astViewShowTodo { - mode |= parser.ParseComments - } - pkgs, pkgsfiles, err := ParseFiles(fset, filenames, mode) - if err != nil { - return err - } - AllFiles = pkgsfiles - for i := 0; i < len(AllFiles); i++ { - fmt.Fprintf(w, "@%s\n", AllFiles[i]) - } - for _, pkg := range pkgs { - view, err := NewPackageView(pkg, fset, expr) - if err != nil { - return err - } - view.PrintTree(w) - } - return nil -} - -func NewFilePackageSource(filename string, f *os.File, expr bool) (*PackageView, error) { - src, err := ioutil.ReadAll(f) - if err != nil { - return nil, err - } - p := new(PackageView) - p.fset = token.NewFileSet() - p.expr = expr - mode := parser.AllErrors - if astViewShowTodo { - mode |= parser.ParseComments - } - file, err := parser.ParseFile(p.fset, filename, src, mode) - if err != nil { - return nil, err - } - m := make(map[string]*ast.File) - m[filename] = file - pkg, err := ast.NewPackage(p.fset, m, nil, nil) - if err != nil { - return nil, err - } - - p.pdoc = NewPackageDoc(pkg, pkg.Name, true) - return p, nil -} - -func (p *PackageView) printFuncsHelper(w io.Writer, funcs []*FuncDoc, level int, tag string, tag_folder string) { - for _, f := range funcs { - pos := p.fset.Position(f.Decl.Pos()) - end := p.fset.Position(f.Decl.End()) - if p.expr { - fmt.Fprintf(w, "%d,%s,%s,%s@%s\n", level, tag, f.Name, p.posText(pos, end), types.ExprString(f.Decl.Type)) - } else { - fmt.Fprintf(w, "%d,%s,%s,%s\n", level, tag, f.Name, p.posText(pos, end)) - } - } -} - -func (p *PackageView) PrintVars(w io.Writer, vars []*ValueDoc, level int, tag string, tag_folder string) { - if len(tag_folder) > 0 && len(vars) > 0 { - if tag_folder == tag_value_folder { - fmt.Fprintf(w, "%d,%s,Variables\n", level, tag_folder) - } else if tag_folder == tag_const_folder { - fmt.Fprintf(w, "%d,%s,Constants\n", level, tag_folder) - } - level++ - } - for _, v := range vars { - if v.Decl == nil { - continue - } - for _, s := range v.Decl.Specs { - if m, ok := s.(*ast.ValueSpec); ok { - pos := p.fset.Position(m.Pos()) - end := p.fset.Position(m.End()) - for i := 0; i < len(m.Names); i++ { - if p.expr && m.Type != nil { - fmt.Fprintf(w, "%d,%s,%s,%s@%s\n", level, tag, m.Names[i], p.posText(pos, end), types.ExprString(m.Type)) - } else { - fmt.Fprintf(w, "%d,%s,%s,%s\n", level, tag, m.Names[i], p.posText(pos, end)) - } - } - } - } - } -} -func (p *PackageView) PrintTypes(w io.Writer, types []*TypeDoc, level int) { - for _, d := range types { - if d.Decl == nil { - continue - } - typespec := d.Decl.Specs[0].(*ast.TypeSpec) - var tag = tag_type - if _, ok := typespec.Type.(*ast.InterfaceType); ok { - tag = tag_interface - } else if _, ok := typespec.Type.(*ast.StructType); ok { - tag = tag_struct - } - pos := p.fset.Position(d.Decl.Pos()) - end := p.fset.Position(d.Decl.End()) - fmt.Fprintf(w, "%d,%s,%s,%s\n", level, tag, d.Type.Name, p.posText(pos, end)) - p.printFuncsHelper(w, d.Funcs, level+1, tag_type_factor, "") - p.printFuncsHelper(w, d.Methods, level+1, tag_type_method, "") - p.PrintTypeFields(w, d.Decl, level+1) - //p.PrintVars(w, d.Consts, level+1, tag_const, "") - //p.PrintVars(w, d.Vars, level+1, tag_value, "") - } -} - -func (p *PackageView) PrintTypeFields(w io.Writer, decl *ast.GenDecl, level int) { - spec, ok := decl.Specs[0].(*ast.TypeSpec) - if ok == false { - return - } - switch d := spec.Type.(type) { - case *ast.StructType: - for _, list := range d.Fields.List { - if list.Names == nil { - continue - } - for _, m := range list.Names { - pos := p.fset.Position(m.Pos()) - end := p.fset.Position(m.End()) - if list.Type != nil { - fmt.Fprintf(w, "%d,%s,%s,%s@%s\n", level, tag_type_value, m.Name, p.posText(pos, end), types.ExprString(list.Type)) - } else { - fmt.Fprintf(w, "%d,%s,%s,%s\n", level, tag_type_value, m.Name, p.posText(pos, end)) - } - } - } - case *ast.InterfaceType: - for _, list := range d.Methods.List { - if list.Names == nil { - continue - } - for _, m := range list.Names { - pos := p.fset.Position(m.Pos()) - end := p.fset.Position(m.End()) - fmt.Fprintf(w, "%d,%s,%s,%s\n", level, tag_type_method, m.Name, p.posText(pos, end)) - } - } - } -} - -func (p *PackageView) PrintHeader(w io.Writer, level int) { - fmt.Fprintf(w, "%d,%s,%s\n", level, tag_package, p.pdoc.PackageName) -} - -func (p *PackageView) PrintImports(w io.Writer, level int, tag, tag_folder string) { - if tag_folder != "" && len(p.pdoc.Imports) > 0 { - fmt.Fprintf(w, "%d,%s,%s\n", level, tag_folder, "Imports") - level++ - } - var parentPkg *pkgutil.Package - if pkgutil.IsVendorExperiment() { - for filename, _ := range p.pkg.Files { - if !filepath.IsAbs(filename) { - name, err := filepath.Abs(filename) - if err == nil { - filename = name - } - } - parentPkg = pkgutil.ImportFile(filename) - break - } - } - for _, name := range p.pdoc.Imports { - vname := "\"" + name + "\"" - var ps []string - for _, file := range p.pkg.Files { - for _, v := range file.Imports { - if v.Path.Value == vname { - pos := p.fset.Position(v.Pos()) - end := p.fset.Position(v.End()) - ps = append(ps, p.posText(pos, end)) - } - } - } - if parentPkg != nil { - name = pkgutil.VendoredImportPath(parentPkg, name) - } - fmt.Fprintf(w, "%d,%s,%s,%s\n", level, tag, name, strings.Join(ps, ";")) - } -} - -func (p *PackageView) PrintFuncs(w io.Writer, level int, tag_folder string) { - hasFolder := false - if len(p.pdoc.Funcs) > 0 || len(p.pdoc.Factorys) > 0 { - hasFolder = true - } - if !hasFolder { - return - } - if len(tag_folder) > 0 { - fmt.Fprintf(w, "%d,%s,Functions\n", level, tag_folder) - level++ - } - p.printFuncsHelper(w, p.pdoc.Factorys, level, tag_type_factor, tag_func_folder) - p.printFuncsHelper(w, p.pdoc.Funcs, level, tag_func, tag_func_folder) -} - -func (p *PackageView) PrintTodos(w io.Writer, level int, tag, tag_folder string) { - hasFolder := false - if len(p.pdoc.Todos) > 0 { - hasFolder = true - } - if !hasFolder { - return - } - if len(tag_folder) > 0 { - fmt.Fprintf(w, "%d,%s,TodoList\n", level, tag_folder) - level++ - } - for _, todo := range p.pdoc.Todos { - c := todo.Comments.List[0] - pos := p.fset.Position(c.Pos()) - end := p.fset.Position(c.End()) - ps := p.posText(pos, end) - fmt.Fprintf(w, "%d,%s,%s,%s@%s\n", level, tag, todo.Tag, ps, todo.Text) - } -} - -func (p *PackageView) PrintPackage(w io.Writer, level int) { - p.PrintHeader(w, level) - level++ - p.PrintImports(w, level, tag_import, tag_imports_folder) - p.PrintVars(w, p.pdoc.Vars, level, tag_value, tag_value_folder) - p.PrintVars(w, p.pdoc.Consts, level, tag_const, tag_const_folder) - p.PrintFuncs(w, level, tag_func_folder) - p.PrintTypes(w, p.pdoc.Types, level) - p.PrintTodos(w, level, tag_todo, tag_todo_folder) -} - -// level,tag,pos@info -func (p *PackageView) PrintTree(w io.Writer) { - p.PrintPackage(w, 0) -} diff --git a/vendor/github.com/visualfc/gotools/command/command.go b/vendor/github.com/visualfc/gotools/command/command.go deleted file mode 100644 index 2f6676b..0000000 --- a/vendor/github.com/visualfc/gotools/command/command.go +++ /dev/null @@ -1,346 +0,0 @@ -// Copyright 2011 The Go Authors. All rights reserved. -// Use of this source code is governed by a BSD-style -// license that can be found in the LICENSE file. - -//modify 2013-2014 visualfc - -package command - -import ( - "bytes" - "flag" - "fmt" - "io" - "log" - "os" - "strings" - "sync" - "text/template" - "unicode" - "unicode/utf8" -) - -// A Command is an implementation of a go command -// like go build or go fix. -type Command struct { - // Run runs the command. - // The args are the arguments after the command name. - Run func(cmd *Command, args []string) error - - // UsageLine is the one-line usage message. - // The first word in the line is taken to be the command name. - UsageLine string - - // Short is the short description shown in the 'go help' output. - Short string - - // Long is the long message shown in the 'go help ' output. - Long string - - // Flag is a set of flags specific to this command. - Flag flag.FlagSet - - // CustomFlags indicates that the command will do its own - // flag parsing. - CustomFlags bool - - Stdin io.Reader - Stdout io.Writer - Stderr io.Writer -} - -// Name returns the command's name: the first word in the usage line. -func (c *Command) Name() string { - name := c.UsageLine - i := strings.Index(name, " ") - if i >= 0 { - name = name[:i] - } - return name -} - -func (c *Command) Usage() { - fmt.Fprintf(os.Stderr, "usage: %s %s\n", AppName, c.UsageLine) - c.Flag.SetOutput(os.Stderr) - c.Flag.PrintDefaults() - //fmt.Fprintf(os.Stderr, "%s\n", strings.TrimSpace(c.Long)) - os.Exit(2) -} - -func (c *Command) PrintUsage() { - fmt.Fprintf(Stderr, "usage: %s %s\n", AppName, c.UsageLine) - c.Flag.SetOutput(Stderr) - c.Flag.PrintDefaults() -} - -// Runnable reports whether the command can be run; otherwise -// it is a documentation pseudo-command such as importpath. -func (c *Command) Runnable() bool { - return c.Run != nil -} - -func (c *Command) Println(args ...interface{}) { - fmt.Fprintln(c.Stdout, args...) -} - -func (c *Command) Printf(format string, args ...interface{}) { - fmt.Fprintf(c.Stdout, format, args...) -} - -var commands []*Command - -func Register(cmd *Command) { - commands = append(commands, cmd) -} - -func CommandList() (cmds []string) { - for _, cmd := range commands { - cmds = append(cmds, cmd.Name()) - } - return -} - -var exitStatus = 0 -var exitMu sync.Mutex - -func SetExitStatus(n int) { - exitMu.Lock() - if exitStatus < n { - exitStatus = n - } - exitMu.Unlock() -} - -var ( - Stdout io.Writer = os.Stdout - Stderr io.Writer = os.Stderr - Stdin io.Reader = os.Stdin -) - -func RunArgs(arguments []string, stdin io.Reader, stdout io.Writer, stderr io.Writer) error { - flag.CommandLine.Parse(arguments) - args := flag.Args() - if len(args) < 1 { - printUsage(os.Stderr) - return os.ErrInvalid - } - - if len(args) == 1 && strings.TrimSpace(args[0]) == "" { - printUsage(os.Stderr) - return os.ErrInvalid - } - - if args[0] == "help" { - if !help(args[1:]) { - return os.ErrInvalid - } - return nil - } - - for _, cmd := range commands { - if cmd.Name() == args[0] && cmd.Run != nil { - cmd.Flag.Usage = func() { cmd.Usage() } - if cmd.CustomFlags { - args = args[1:] - } else { - cmd.Flag.Parse(args[1:]) - args = cmd.Flag.Args() - } - cmd.Stdin = stdin - cmd.Stdout = stdout - cmd.Stderr = stderr - return cmd.Run(cmd, args) - } - } - - fmt.Fprintf(os.Stderr, "%s: unknown subcommand %q\nRun '%s help' for usage.\n", - AppName, args[0], AppName) - return os.ErrInvalid -} - -func Main() { - flag.Usage = usage - flag.Parse() - log.SetFlags(0) - - args := flag.Args() - if len(args) < 1 { - usage() - } - - if len(args) == 1 && strings.TrimSpace(args[0]) == "" { - usage() - } - - if args[0] == "help" { - if !help(args[1:]) { - os.Exit(2) - } - return - } - - for _, cmd := range commands { - if cmd.Name() == args[0] && cmd.Run != nil { - cmd.Flag.Usage = func() { cmd.Usage() } - if cmd.CustomFlags { - args = args[1:] - } else { - cmd.Flag.Parse(args[1:]) - args = cmd.Flag.Args() - } - cmd.Stdin = Stdin - cmd.Stdout = Stdout - cmd.Stderr = Stderr - err := cmd.Run(cmd, args) - if err != nil { - SetExitStatus(2) - } - Exit() - return - } - } - - fmt.Fprintf(os.Stderr, "%s: unknown subcommand %q\nRun '%s help' for usage.\n", - AppName, args[0], AppName) - SetExitStatus(2) - Exit() -} - -var AppInfo string = "LiteIDE golang tool." -var AppName string = "tools" - -var usageTemplate = ` -Usage: - - {{AppName}} command [arguments] - -The commands are: -{{range .}}{{if .Runnable}} - {{.Name | printf "%-11s"}} {{.Short}}{{end}}{{end}} - -Use "{{AppName}} help [command]" for more information about a command. - -Additional help topics: -{{range .}}{{if not .Runnable}} - {{.Name | printf "%-11s"}} {{.Short}}{{end}}{{end}} - -Use "{{AppName}} help [topic]" for more information about that topic. - -` - -var helpTemplate = `{{if .Runnable}}usage: {{AppName}} {{.UsageLine}} - -{{end}}{{.Long | trim}} -` - -var documentationTemplate = `// -/* -{{range .}}{{if .Short}}{{.Short | capitalize}} - -{{end}}{{if .Runnable}}Usage: - - {{AppName}} {{.UsageLine}} - -{{end}}{{.Long | trim}} - - -{{end}}*/ -package main -` - -// tmpl executes the given template text on data, writing the result to w. -func tmpl(w io.Writer, text string, data interface{}) { - t := template.New("top") - t.Funcs(template.FuncMap{"trim": strings.TrimSpace, "capitalize": capitalize}) - template.Must(t.Parse(text)) - if err := t.Execute(w, data); err != nil { - panic(err) - } -} - -func capitalize(s string) string { - if s == "" { - return s - } - r, n := utf8.DecodeRuneInString(s) - return string(unicode.ToTitle(r)) + s[n:] -} - -func printUsage(w io.Writer) { - if len(AppInfo) > 0 { - fmt.Fprintln(w, AppInfo) - } - tmpl(w, strings.Replace(usageTemplate, "{{AppName}}", AppName, -1), commands) -} - -func usage() { - printUsage(os.Stderr) - os.Exit(2) -} - -// help implements the 'help' command. -func help(args []string) bool { - if len(args) == 0 { - printUsage(os.Stdout) - // not exit 2: succeeded at 'go help'. - return true - } - if len(args) != 1 { - fmt.Fprintf(os.Stderr, "usage: %s help command\n\nToo many arguments given.\n", AppName) - return false - } - - arg := args[0] - - // 'go help documentation' generates doc.go. - if arg == "documentation" { - buf := new(bytes.Buffer) - printUsage(buf) - usage := &Command{Long: buf.String()} - tmpl(os.Stdout, strings.Replace(documentationTemplate, "{{AppName}}", AppName, -1), append([]*Command{usage}, commands...)) - return false - } - - for _, cmd := range commands { - if cmd.Name() == arg { - tmpl(os.Stdout, strings.Replace(helpTemplate, "{{AppName}}", AppName, -1), cmd) - // not exit 2: succeeded at 'go help cmd'. - return true - } - } - - fmt.Fprintf(os.Stderr, "Unknown help topic %#q. Run '%s help'.\n", arg, AppName) - //os.Exit(2) // failed at 'go help cmd' - return false -} - -var atexitFuncs []func() - -func Atexit(f func()) { - atexitFuncs = append(atexitFuncs, f) -} - -func Exit() { - for _, f := range atexitFuncs { - f() - } - os.Exit(exitStatus) -} - -func Fatalf(format string, args ...interface{}) { - Errorf(format, args...) - Exit() -} - -func Errorf(format string, args ...interface{}) { - log.Printf(format, args...) - SetExitStatus(1) -} - -var logf = log.Printf - -func ExitIfErrors() { - if exitStatus != 0 { - Exit() - } -} diff --git a/vendor/github.com/visualfc/gotools/command/version.go b/vendor/github.com/visualfc/gotools/command/version.go deleted file mode 100644 index 0a88780..0000000 --- a/vendor/github.com/visualfc/gotools/command/version.go +++ /dev/null @@ -1,33 +0,0 @@ -// Copyright 2011-2015 visualfc . All rights reserved. -// Use of this source code is governed by a BSD-style -// license that can be found in the LICENSE file. - -package command - -import ( - "os" - "runtime" -) - -func init() { - Register(cmdVersion) -} - -var AppVersion string = "1.0" - -var cmdVersion = &Command{ - Run: runVersion, - UsageLine: "version", - Short: "print tool version", - Long: `Version prints the version.`, -} - -func runVersion(cmd *Command, args []string) error { - if len(args) != 0 { - cmd.PrintUsage() - return os.ErrInvalid - } - - cmd.Printf("%s version %s [%s %s/%s]\n", AppName, AppVersion, runtime.Version(), runtime.GOOS, runtime.GOARCH) - return nil -} diff --git a/vendor/github.com/visualfc/gotools/doc.go b/vendor/github.com/visualfc/gotools/doc.go deleted file mode 100644 index e992f7d..0000000 --- a/vendor/github.com/visualfc/gotools/doc.go +++ /dev/null @@ -1,8 +0,0 @@ -// Copyright 2011-2017 visualfc . All rights reserved. -// Use of this source code is governed by a BSD-style -// license that can be found in the LICENSE file. - -/* -gotools document -*/ -package main diff --git a/vendor/github.com/visualfc/gotools/docview/dirtrees.go b/vendor/github.com/visualfc/gotools/docview/dirtrees.go deleted file mode 100644 index 2293e00..0000000 --- a/vendor/github.com/visualfc/gotools/docview/dirtrees.go +++ /dev/null @@ -1,352 +0,0 @@ -// Copyright 2010 The Go Authors. All rights reserved. -// Use of this source code is governed by a BSD-style -// license that can be found in the LICENSE file. - -// This file contains the code dealing with package directory trees. - -package docview - -import ( - "bytes" - "go/doc" - "go/parser" - "go/token" - "log" - "os" - "path/filepath" - "strings" - "unicode" -) - -type Directory struct { - Depth int - Path string // includes Name - Name string - Text string // package documentation, if any - Dirs []*Directory // subdirectories -} - -//func isGoFile(fi os.FileInfo) bool { -// name := fi.Name() -// return !fi.IsDir() && -// len(name) > 0 && name[0] != '.' && // ignore .files -// filepath.Ext(name) == ".go" -//} - -func isGoFile(f os.FileInfo) bool { - // ignore non-Go files - name := f.Name() - return !f.IsDir() && !strings.HasPrefix(name, ".") && strings.HasSuffix(name, ".go") -} - -func isPkgFile(fi os.FileInfo) bool { - return isGoFile(fi) && - !strings.HasSuffix(fi.Name(), "_test.go") // ignore test files -} - -func isPkgDir(fi os.FileInfo) bool { - name := fi.Name() - return fi.IsDir() && len(name) > 0 && - name[0] != '_' && name[0] != '.' // ignore _files and .files -} - -func firstSentence(s string) string { - i := -1 // index+1 of first terminator (punctuation ending a sentence) - j := -1 // index+1 of first terminator followed by white space - prev := 'A' - for k, ch := range s { - k1 := k + 1 - if ch == '.' || ch == '!' || ch == '?' { - if i < 0 { - i = k1 // first terminator - } - if k1 < len(s) && s[k1] <= ' ' { - if j < 0 { - j = k1 // first terminator followed by white space - } - if !unicode.IsUpper(prev) { - j = k1 - break - } - } - } - prev = ch - } - - if j < 0 { - // use the next best terminator - j = i - if j < 0 { - // no terminator at all, use the entire string - j = len(s) - } - } - - return s[0:j] -} - -type treeBuilder struct { - pathFilter func(string) bool - maxDepth int -} - -func (b *treeBuilder) newDirTree(fset *token.FileSet, path, name string, depth int) *Directory { - if b.pathFilter != nil && !b.pathFilter(path) { - return nil - } - - if depth >= b.maxDepth { - // return a dummy directory so that the parent directory - // doesn't get discarded just because we reached the max - // directory depth - return &Directory{depth, path, name, "", nil} - } - - list, err := fs.ReadDir(path) - if err != nil { - // newDirTree is called with a path that should be a package - // directory; errors here should not happen, but if they do, - // we want to know about them - log.Printf("ReadDir(%s): %s", path, err) - } - - // determine number of subdirectories and if there are package files - ndirs := 0 - hasPkgFiles := false - var synopses [4]string // prioritized package documentation (0 == highest priority) - for _, d := range list { - switch { - case isPkgDir(d): - ndirs++ - case isPkgFile(d): - // looks like a package file, but may just be a file ending in ".go"; - // don't just count it yet (otherwise we may end up with hasPkgFiles even - // though the directory doesn't contain any real package files - was bug) - if synopses[0] == "" { - // no "optimal" package synopsis yet; continue to collect synopses - //file, err := parseFile(fset, filepath.Join(path, d.Name()), - //parser.ParseComments|parser.PackageClauseOnly) - file, err := parser.ParseFile(fset, filepath.Join(path, d.Name()), nil, - parser.ParseComments|parser.PackageClauseOnly) - - if err == nil { - hasPkgFiles = true - if file.Doc != nil { - // prioritize documentation - i := -1 - switch file.Name.Name { - case name: - i = 0 // normal case: directory name matches package name - case fakePkgName: - i = 1 // synopses for commands - case "main": - i = 2 // directory contains a main package - default: - i = 3 // none of the above - } - if 0 <= i && i < len(synopses) && synopses[i] == "" { - synopses[i] = doc.Synopsis(file.Doc.Text()) - } - } - } - } - } - } - - // create subdirectory tree - var dirs []*Directory - if ndirs > 0 { - dirs = make([]*Directory, ndirs) - i := 0 - for _, d := range list { - if isPkgDir(d) { - name := d.Name() - dd := b.newDirTree(fset, filepath.Join(path, name), name, depth+1) - if dd != nil { - dirs[i] = dd - i++ - } - } - } - dirs = dirs[0:i] - } - - // if there are no package files and no subdirectories - // containing package files, ignore the directory - if !hasPkgFiles && len(dirs) == 0 { - return nil - } - - // select the highest-priority synopsis for the directory entry, if any - synopsis := "" - for _, synopsis = range synopses { - if synopsis != "" { - break - } - } - - return &Directory{depth, path, name, synopsis, dirs} -} - -// newDirectory creates a new package directory tree with at most maxDepth -// levels, anchored at root. The result tree is pruned such that it only -// contains directories that contain package files or that contain -// subdirectories containing package files (transitively). If a non-nil -// pathFilter is provided, directory paths additionally must be accepted -// by the filter (i.e., pathFilter(path) must be true). If a value >= 0 is -// provided for maxDepth, nodes at larger depths are pruned as well; they -// are assumed to contain package files even if their contents are not known -// (i.e., in this case the tree may contain directories w/o any package files). -// -func newDirectory(root string, pathFilter func(string) bool, maxDepth int) *Directory { - // The root could be a symbolic link so use Stat not Lstat. - d, err := fs.Stat(root) - // If we fail here, report detailed error messages; otherwise - // is is hard to see why a directory tree was not built. - switch { - case err != nil: - log.Printf("newDirectory(%s): %s", root, err) - return nil - case !isPkgDir(d): - log.Printf("newDirectory(%s): not a package directory", root) - return nil - } - if maxDepth < 0 { - maxDepth = 1e6 // "infinity" - } - b := treeBuilder{pathFilter, maxDepth} - // the file set provided is only for local parsing, no position - // information escapes and thus we don't need to save the set - return b.newDirTree(token.NewFileSet(), root, d.Name(), 0) -} - -func (dir *Directory) writeLeafs(buf *bytes.Buffer) { - if dir != nil { - if len(dir.Dirs) == 0 { - buf.WriteString(dir.Path) - buf.WriteByte('\n') - return - } - - for _, d := range dir.Dirs { - d.writeLeafs(buf) - } - } -} - -func (dir *Directory) walk(c chan<- *Directory, skipRoot bool) { - if dir != nil { - if !skipRoot { - c <- dir - } - for _, d := range dir.Dirs { - d.walk(c, false) - } - } -} - -func (dir *Directory) iter(skipRoot bool) <-chan *Directory { - c := make(chan *Directory) - go func() { - dir.walk(c, skipRoot) - close(c) - }() - return c -} - -func (dir *Directory) lookupLocal(name string) *Directory { - for _, d := range dir.Dirs { - if d.Name == name { - return d - } - } - return nil -} - -// lookup looks for the *Directory for a given path, relative to dir. -func (dir *Directory) lookup(path string) *Directory { - d := strings.Split(dir.Path, string(filepath.Separator)) - p := strings.Split(path, string(filepath.Separator)) - i := 0 - for i < len(d) { - if i >= len(p) || d[i] != p[i] { - return nil - } - i++ - } - for dir != nil && i < len(p) { - dir = dir.lookupLocal(p[i]) - i++ - } - return dir -} - -// DirEntry describes a directory entry. The Depth and Height values -// are useful for presenting an entry in an indented fashion. -// -type DirEntry struct { - Depth int // >= 0 - Height int // = DirList.MaxHeight - Depth, > 0 - Path string // includes Name, relative to DirList root - Name string - Synopsis string -} - -type DirList struct { - MaxHeight int // directory tree height, > 0 - List []DirEntry -} - -// listing creates a (linear) directory listing from a directory tree. -// If skipRoot is set, the root directory itself is excluded from the list. -// -func (root *Directory) listing(skipRoot bool) *DirList { - if root == nil { - return nil - } - - // determine number of entries n and maximum height - n := 0 - minDepth := 1 << 30 // infinity - maxDepth := 0 - for d := range root.iter(skipRoot) { - n++ - if minDepth > d.Depth { - minDepth = d.Depth - } - if maxDepth < d.Depth { - maxDepth = d.Depth - } - } - maxHeight := maxDepth - minDepth + 1 - - if n == 0 { - return nil - } - - // create list - list := make([]DirEntry, n) - i := 0 - for d := range root.iter(skipRoot) { - p := &list[i] - p.Depth = d.Depth - minDepth - p.Height = maxHeight - p.Depth - // the path is relative to root.Path - remove the root.Path - // prefix (the prefix should always be present but avoid - // crashes and check) - path := d.Path - if strings.HasPrefix(d.Path, root.Path) { - path = d.Path[len(root.Path):] - } - // remove trailing separator if any - path must be relative - if len(path) > 0 && path[0] == filepath.Separator { - path = path[1:] - } - p.Path = filepath.ToSlash(path) - p.Name = d.Name - p.Synopsis = d.Text - i++ - } - - return &DirList{maxHeight, list} -} diff --git a/vendor/github.com/visualfc/gotools/docview/docview.go b/vendor/github.com/visualfc/gotools/docview/docview.go deleted file mode 100644 index 85d96b6..0000000 --- a/vendor/github.com/visualfc/gotools/docview/docview.go +++ /dev/null @@ -1,407 +0,0 @@ -// Copyright 2011-2015 visualfc . All rights reserved. -// Use of this source code is governed by a BSD-style -// license that can be found in the LICENSE file. - -package docview - -import ( - "bytes" - "fmt" - "go/build" - "io" - "log" - "os" - "path/filepath" - "runtime" - "strconv" - "strings" - "text/template" - "time" - - "github.com/visualfc/gotools/command" -) - -var Command = &command.Command{ - Run: runDocView, - UsageLine: "docview [-mode] [-list|-find]", - Short: "golang docview util", - Long: `golang docview util`, -} - -var goroot = runtime.GOROOT() - -var docViewFind string -var docViewList string -var docViewMode string - -func init() { - Command.Flag.StringVar(&docViewFind, "find", "", "find package list, :pkg flag is best match") - Command.Flag.StringVar(&docViewList, "list", "", "Print go packages list [pkg|cmd]") - Command.Flag.StringVar(&docViewMode, "mode", "text", "Print mode [text|html|lite]") -} - -func runDocView(cmd *command.Command, args []string) error { - if docViewFind == "" && docViewList == "" { - cmd.Usage() - return os.ErrInvalid - } - - var template string - var info *Info - if len(docViewList) > 0 { - pkgPath := filepath.Join(goroot, "src", docViewList) - if docViewList == "pkg" { - _, err := os.Stat(pkgPath) - if err != nil { - pkgPath = filepath.Join(goroot, "src") - } - } - info = NewListInfo(pkgPath) - if info != nil { - if docViewList == "pkg" { - var filterList []DirEntry - for _, v := range info.Dirs.List { - if v.Path == "cmd" { - continue - } - if strings.HasPrefix(v.Path, "cmd/") { - continue - } - if strings.Contains(v.Path, "/testdata") { - continue - } - filterList = append(filterList, v) - } - info.Dirs.List = filterList - } else if docViewList == "cmd" { - var filterList []DirEntry - for _, v := range info.Dirs.List { - if strings.Contains(v.Path, "/") { - continue - } - if strings.Contains(v.Path, "internal") { - continue - } - filterList = append(filterList, v) - } - info.Dirs.List = filterList - } - } - switch docViewMode { - case "html": - template = listHTML - case "lite": - template = listLite - case "text": - template = listText - default: - template = listText - } - } else if len(docViewFind) > 0 { - dir := NewSourceDir(goroot) - info = dir.FindInfo(docViewFind) - switch docViewMode { - case "html": - template = findHTML - case "lite": - template = findLite - case "text": - template = findText - default: - template = findText - } - } - if info == nil { - fmt.Fprintf(os.Stderr, "\n") - command.SetExitStatus(3) - command.Exit() - } - contents := info.GetPkgList(docViewMode, template) - fmt.Fprintf(os.Stdout, "%s", contents) - return nil -} - -var ( - fs FileSystem = OS // the underlying file system -) - -// Fake package file and name for commands. Contains the command documentation. -const fakePkgFile = "doc.go" -const fakePkgName = "documentation" - -func textFmt(w io.Writer, format string, x ...interface{}) { - var buf bytes.Buffer - fmt.Fprint(&buf, x) - template.HTMLEscape(w, buf.Bytes()) -} - -func pathEscFmt(w io.Writer, format string, x ...interface{}) { - switch v := x[0].(type) { - case []byte: - template.HTMLEscape(w, v) - case string: - template.HTMLEscape(w, []byte(filepath.ToSlash(v))) - default: - var buf bytes.Buffer - fmt.Fprint(&buf, x) - template.HTMLEscape(w, buf.Bytes()) - } -} - -func htmlEscFmt(w io.Writer, format string, x ...interface{}) { - switch v := x[0].(type) { - case int: - template.HTMLEscape(w, []byte(strconv.Itoa(v))) - case []byte: - template.HTMLEscape(w, v) - case string: - template.HTMLEscape(w, []byte(v)) - default: - var buf bytes.Buffer - fmt.Fprint(&buf, x) - template.HTMLEscape(w, buf.Bytes()) - } -} - -// Template formatter for "padding" format. -func paddingFmt(w io.Writer, format string, x ...interface{}) { - for i := x[0].(int); i > 0; i-- { - fmt.Fprint(w, ``) - } -} - -// Template formatter for "time" format. -func timeFmt(w io.Writer, format string, x ...interface{}) { - template.HTMLEscape(w, []byte(time.Unix(x[0].(int64)/1e9, 0).String())) -} - -var fmap = template.FuncMap{ - "repeat": strings.Repeat, -} - -func readTemplateData(name, data string) *template.Template { - return template.Must(template.New(name).Funcs(fmap).Parse(data)) -} - -func readTemplateFile(name, path string) *template.Template { - return template.Must(template.New(name).Funcs(fmap).ParseFiles(path)) -} - -func applyTemplate(t *template.Template, name string, data interface{}) []byte { - var buf bytes.Buffer - if err := t.Execute(&buf, data); err != nil { - log.Printf("%s.Execute: %s", name, err) - } - return buf.Bytes() -} - -type Info struct { - Find string - Best *DirEntry - Dirs *DirList -} - -type GodocDir struct { - pkg *Directory - cmd *Directory - gopath []*Directory -} - -func NewSourceDir(goroot string) *GodocDir { - pkgPath := filepath.Join(goroot, "src/pkg") - _, err := os.Stat(pkgPath) - var cmd *Directory - if err != nil { - pkgPath = filepath.Join(goroot, "src") - } else { - cmd = newDirectory(filepath.Join(goroot, "src", "cmd"), nil, -1) - } - pkg := newDirectory(pkgPath, nil, -1) - ctx := build.Default - ctx.GOROOT = "" - var gopath []*Directory - for _, v := range ctx.SrcDirs() { - gopath = append(gopath, newDirectory(v, nil, -1)) - } - return &GodocDir{pkg, cmd, gopath} -} - -func (dir *GodocDir) FindInfo(name string) *Info { - max1, best1, list1 := FindDir(dir.pkg, name) - max2, best2, list2 := FindDir(dir.cmd, name) - var maxHeight int - if max1 >= max2 { - maxHeight = max1 - } else { - maxHeight = max2 - } - var best *DirEntry - if best1 != nil { - best = best1 - if best2 != nil { - list2 = append(list2, *best2) - } - } else { - best = best2 - } - var list []DirEntry - list = append(list, list1...) - list = append(list, list2...) - for _, v := range dir.gopath { - max3, best3, list3 := FindDir(v, name) - if max3 > maxHeight { - maxHeight = max3 - } - if best == nil { - best = best3 - } - list = append(list, list3...) - } - return &Info{name, best, &DirList{maxHeight, list}} -} - -func FindDir(dir *Directory, pkgname string) (maxHeight int, best *DirEntry, list []DirEntry) { - if dir == nil { - return - } - dirList := dir.listing(true) - max := len(dirList.List) - maxHeight = dirList.MaxHeight - - for i := 0; i < max; i++ { - name := dirList.List[i].Name - path := filepath.ToSlash(dirList.List[i].Path) - if name == pkgname || path == pkgname { - best = &dirList.List[i] - } else if strings.Contains(path, pkgname) { - list = append(list, dirList.List[i]) - } - } - return -} - -func appendList(list1, list2 []DirEntry) []DirEntry { - list := list1 - max := len(list2) - for i := 0; i < max; i++ { - list = append(list, list2[i]) - } - return list -} - -func NewListInfo(root string) *Info { - dir := newDirectory(root, nil, -1) - if dir == nil { - return nil - } - return &Info{"", nil, dir.listing(true)} -} - -func FindPkgInfo(root string, pkgname string) *Info { - dir := newDirectory(root, nil, -1) - if dir == nil { - return nil - } - dirList := dir.listing(true) - if pkgname == "*" { - return &Info{pkgname, nil, dirList} - } - var best DirEntry - var list []DirEntry - max := len(dirList.List) - for i := 0; i < max; i++ { - name := dirList.List[i].Name - path := filepath.ToSlash(dirList.List[i].Path) - if name == pkgname || path == pkgname { - best = dirList.List[i] - } else if strings.Contains(path, pkgname) { - list = append(list, dirList.List[i]) - } - } - return &Info{pkgname, &best, &DirList{dirList.MaxHeight, list}} -} - -func (info *Info) GetPkgList(name, templateData string) []byte { - data := readTemplateData(name, templateData) - return applyTemplate(data, "pkglist", info) -} - -var listHTML = ` -

-Need more packages? The -Package Dashboard -provides a list of goinstallable packages. -

-

Subdirectories

-

-{{with .Dirs}} -

- - - - - - - {{range .List}} - - {{repeat "" .Depth}} - - - - - {{end}} -
Name Synopsis
{{html .Name}}{{html .Synopsis}}
-

-{{end}}` - -var listText = `$list -{{with .Dirs}} -{{range .List}}{{.Path }} -{{end}} -{{end}}` - -var listLite = `$list{{with .Dirs}}{{range .List}},{{.Path}}{{end}}{{end}}` - -var findHTML = ` -

-Need more packages? The -Package Dashboard -provides a list of goinstallable packages. -

-

Subdirectories

- - - - - - {{with .Best}} - - - - - - {{end}} - {{with .Dirs}} - - - - - - {{range .List}} - - - - - - {{end}} -
Best Synopsis
{{.Path}}{{html .Synopsis}}
Match Synopsis
{{.Path}}{{html .Synopsis}}
-

-{{end}}` - -var findText = `$best -{{with .Best}}{{.Path}}{{end}} -$list -{{with .Dirs}}{{range .List}}{{.Path}} -{{end}}{{end}}` - -var findLite = `$find,{{with .Best}}{{.Path}}{{end}}{{with .Dirs}}{{range .List}},{{.Path}}{{end}}{{end}}` diff --git a/vendor/github.com/visualfc/gotools/docview/docx.go b/vendor/github.com/visualfc/gotools/docview/docx.go deleted file mode 100644 index 01a9355..0000000 --- a/vendor/github.com/visualfc/gotools/docview/docx.go +++ /dev/null @@ -1,668 +0,0 @@ -// Copyright 2009 The Go Authors. All rights reserved. -// Use of this source code is governed by a BSD-style -// license that can be found in the LICENSE file. - -// Package doc extracts source code documentation from a Go AST. -package docview - -import ( - "go/ast" - "go/token" - "regexp" - "sort" - "strconv" -) - -// ---------------------------------------------------------------------------- - -type typeDoc struct { - // len(decl.Specs) == 1, and the element type is *ast.TypeSpec - // if the type declaration hasn't been seen yet, decl is nil - decl *ast.GenDecl - // values, factory functions, and methods associated with the type - values []*ast.GenDecl // consts and vars - factories map[string]*ast.FuncDecl - methods map[string]*ast.FuncDecl -} - -// docReader accumulates documentation for a single package. -// It modifies the AST: Comments (declaration documentation) -// that have been collected by the DocReader are set to nil -// in the respective AST nodes so that they are not printed -// twice (once when printing the documentation and once when -// printing the corresponding AST node). -// -type docReader struct { - doc *ast.CommentGroup // package documentation, if any - pkgName string - showAll bool - values []*ast.GenDecl // consts and vars - types map[string]*typeDoc - funcs map[string]*ast.FuncDecl - imports map[string]int - bugs []*ast.CommentGroup -} - -func (doc *docReader) init(pkgName string, showAll bool) { - doc.pkgName = pkgName - doc.showAll = showAll - doc.imports = make(map[string]int) - doc.types = make(map[string]*typeDoc) - doc.funcs = make(map[string]*ast.FuncDecl) -} - -func (doc *docReader) addDoc(comments *ast.CommentGroup) { - if doc.doc == nil { - // common case: just one package comment - doc.doc = comments - return - } - - // More than one package comment: Usually there will be only - // one file with a package comment, but it's better to collect - // all comments than drop them on the floor. - // (This code isn't particularly clever - no amortized doubling is - // used - but this situation occurs rarely and is not time-critical.) - n1 := len(doc.doc.List) - n2 := len(comments.List) - list := make([]*ast.Comment, n1+1+n2) // + 1 for separator line - copy(list, doc.doc.List) - list[n1] = &ast.Comment{token.NoPos, "//"} // separator line - copy(list[n1+1:], comments.List) - doc.doc = &ast.CommentGroup{list} -} - -func (doc *docReader) addType(decl *ast.GenDecl) { - spec := decl.Specs[0].(*ast.TypeSpec) - typ := doc.lookupTypeDoc(spec.Name.Name) - // typ should always be != nil since declared types - // are always named - be conservative and check - if typ != nil { - // a type should be added at most once, so typ.decl - // should be nil - if it isn't, simply overwrite it - typ.decl = decl - } -} - -func (doc *docReader) lookupTypeDoc(name string) *typeDoc { - if name == "" { - return nil // no type docs for anonymous types - } - if tdoc, found := doc.types[name]; found { - return tdoc - } - // type wasn't found - add one without declaration - tdoc := &typeDoc{nil, nil, make(map[string]*ast.FuncDecl), make(map[string]*ast.FuncDecl)} - doc.types[name] = tdoc - return tdoc -} - -func docBaseTypeName(typ ast.Expr, showAll bool) string { - switch t := typ.(type) { - case *ast.Ident: - // if the type is not exported, the effect to - // a client is as if there were no type name - if showAll || t.IsExported() { - return t.Name - } - case *ast.StarExpr: - return docBaseTypeName(t.X, showAll) - } - return "" -} - -func (doc *docReader) addValue(decl *ast.GenDecl) { - // determine if decl should be associated with a type - // Heuristic: For each typed entry, determine the type name, if any. - // If there is exactly one type name that is sufficiently - // frequent, associate the decl with the respective type. - domName := "" - domFreq := 0 - prev := "" - for _, s := range decl.Specs { - if v, ok := s.(*ast.ValueSpec); ok { - name := "" - switch { - case v.Type != nil: - // a type is present; determine its name - name = docBaseTypeName(v.Type, doc.showAll) - case decl.Tok == token.CONST: - // no type is present but we have a constant declaration; - // use the previous type name (w/o more type information - // we cannot handle the case of unnamed variables with - // initializer expressions except for some trivial cases) - name = prev - } - if name != "" { - // entry has a named type - if domName != "" && domName != name { - // more than one type name - do not associate - // with any type - domName = "" - break - } - domName = name - domFreq++ - } - prev = name - } - } - - // determine values list - const threshold = 0.75 - values := &doc.values - if domName != "" && domFreq >= int(float64(len(decl.Specs))*threshold) { - // typed entries are sufficiently frequent - typ := doc.lookupTypeDoc(domName) - if typ != nil { - values = &typ.values // associate with that type - } - } - - *values = append(*values, decl) -} - -// Helper function to set the table entry for function f. Makes sure that -// at least one f with associated documentation is stored in table, if there -// are multiple f's with the same name. -func setFunc(table map[string]*ast.FuncDecl, f *ast.FuncDecl) { - name := f.Name.Name - if g, exists := table[name]; exists && g.Doc != nil { - // a function with the same name has already been registered; - // since it has documentation, assume f is simply another - // implementation and ignore it - // TODO(gri) consider collecting all functions, or at least - // all comments - return - } - // function doesn't exist or has no documentation; use f - table[name] = f -} - -func (doc *docReader) addFunc(fun *ast.FuncDecl) { - name := fun.Name.Name - - // determine if it should be associated with a type - if fun.Recv != nil { - // method - typ := doc.lookupTypeDoc(docBaseTypeName(fun.Recv.List[0].Type, doc.showAll)) - if typ != nil { - // exported receiver type - setFunc(typ.methods, fun) - } - // otherwise don't show the method - // TODO(gri): There may be exported methods of non-exported types - // that can be called because of exported values (consts, vars, or - // function results) of that type. Could determine if that is the - // case and then show those methods in an appropriate section. - return - } - - // perhaps a factory function - // determine result type, if any - if fun.Type.Results.NumFields() >= 1 { - res := fun.Type.Results.List[0] - if len(res.Names) <= 1 { - // exactly one (named or anonymous) result associated - // with the first type in result signature (there may - // be more than one result) - tname := docBaseTypeName(res.Type, doc.showAll) - typ := doc.lookupTypeDoc(tname) - if typ != nil { - // named and exported result type - - // Work-around for failure of heuristic: In package os - // too many functions are considered factory functions - // for the Error type. Eliminate manually for now as - // this appears to be the only important case in the - // current library where the heuristic fails. - if doc.pkgName == "os" && tname == "Error" && - name != "NewError" && name != "NewSyscallError" { - // not a factory function for os.Error - setFunc(doc.funcs, fun) // treat as ordinary function - return - } - - setFunc(typ.factories, fun) - return - } - } - } - - // ordinary function - setFunc(doc.funcs, fun) -} - -func (doc *docReader) addDecl(decl ast.Decl) { - switch d := decl.(type) { - case *ast.GenDecl: - if len(d.Specs) > 0 { - switch d.Tok { - case token.IMPORT: - // imports are handled individually - for _, spec := range d.Specs { - if s, ok := spec.(*ast.ImportSpec); ok { - if import_, err := strconv.Unquote(s.Path.Value); err == nil { - doc.imports[import_] = 1 - } - } - } - case token.CONST, token.VAR: - // constants and variables are always handled as a group - doc.addValue(d) - case token.TYPE: - // types are handled individually - for _, spec := range d.Specs { - // make a (fake) GenDecl node for this TypeSpec - // (we need to do this here - as opposed to just - // for printing - so we don't lose the GenDecl - // documentation) - // - // TODO(gri): Consider just collecting the TypeSpec - // node (and copy in the GenDecl.doc if there is no - // doc in the TypeSpec - this is currently done in - // makeTypeDocs below). Simpler data structures, but - // would lose GenDecl documentation if the TypeSpec - // has documentation as well. - doc.addType(&ast.GenDecl{d.Doc, d.Pos(), token.TYPE, token.NoPos, []ast.Spec{spec}, token.NoPos}) - // A new GenDecl node is created, no need to nil out d.Doc. - } - } - } - case *ast.FuncDecl: - doc.addFunc(d) - } -} - -func copyCommentList(list []*ast.Comment) []*ast.Comment { - return append([]*ast.Comment(nil), list...) -} - -var ( - bug_markers = regexp.MustCompile("^/[/*][ \t]*BUG\\(.*\\):[ \t]*") // BUG(uid): - bug_content = regexp.MustCompile("[^ \n\r\t]+") // at least one non-whitespace char -) - -// addFile adds the AST for a source file to the docReader. -// Adding the same AST multiple times is a no-op. -// -func (doc *docReader) addFile(src *ast.File) { - // add package documentation - if src.Doc != nil { - doc.addDoc(src.Doc) - src.Doc = nil // doc consumed - remove from ast.File node - } - - // add all declarations - for _, decl := range src.Decls { - doc.addDecl(decl) - } - - // collect BUG(...) comments - for _, c := range src.Comments { - text := c.List[0].Text - if m := bug_markers.FindStringIndex(text); m != nil { - // found a BUG comment; maybe empty - if btxt := text[m[1]:]; bug_content.MatchString(btxt) { - // non-empty BUG comment; collect comment without BUG prefix - list := copyCommentList(c.List) - list[0].Text = text[m[1]:] - doc.bugs = append(doc.bugs, &ast.CommentGroup{list}) - } - } - } - src.Comments = nil // consumed unassociated comments - remove from ast.File node -} - -func NewFileDoc(file *ast.File, showAll bool) *PackageDoc { - var r docReader - r.init(file.Name.Name, showAll) - r.addFile(file) - return r.newDoc("", nil) -} - -func NewPackageDoc(pkg *ast.Package, importpath string, showAll bool) *PackageDoc { - var r docReader - r.init(pkg.Name, showAll) - filenames := make([]string, len(pkg.Files)) - i := 0 - for filename, f := range pkg.Files { - r.addFile(f) - filenames[i] = filename - i++ - } - return r.newDoc(importpath, filenames) -} - -// ---------------------------------------------------------------------------- -// Conversion to external representation - -// ValueDoc is the documentation for a group of declared -// values, either vars or consts. -// -type ValueDoc struct { - Doc string - Decl *ast.GenDecl - order int -} - -type sortValueDoc []*ValueDoc - -func (p sortValueDoc) Len() int { return len(p) } -func (p sortValueDoc) Swap(i, j int) { p[i], p[j] = p[j], p[i] } - -func declName(d *ast.GenDecl) string { - if len(d.Specs) != 1 { - return "" - } - - switch v := d.Specs[0].(type) { - case *ast.ValueSpec: - return v.Names[0].Name - case *ast.TypeSpec: - return v.Name.Name - } - - return "" -} - -func (p sortValueDoc) Less(i, j int) bool { - // sort by name - // pull blocks (name = "") up to top - // in original order - if ni, nj := declName(p[i].Decl), declName(p[j].Decl); ni != nj { - return ni < nj - } - return p[i].order < p[j].order -} - -func makeValueDocs(list []*ast.GenDecl, tok token.Token) []*ValueDoc { - d := make([]*ValueDoc, len(list)) // big enough in any case - n := 0 - for i, decl := range list { - if decl.Tok == tok { - d[n] = &ValueDoc{decl.Doc.Text(), decl, i} - n++ - decl.Doc = nil // doc consumed - removed from AST - } - } - d = d[0:n] - sort.Sort(sortValueDoc(d)) - return d -} - -// FuncDoc is the documentation for a func declaration, -// either a top-level function or a method function. -// -type FuncDoc struct { - Doc string - Recv ast.Expr // TODO(rsc): Would like string here - Name string - Decl *ast.FuncDecl -} - -type sortFuncDoc []*FuncDoc - -func (p sortFuncDoc) Len() int { return len(p) } -func (p sortFuncDoc) Swap(i, j int) { p[i], p[j] = p[j], p[i] } -func (p sortFuncDoc) Less(i, j int) bool { return p[i].Name < p[j].Name } - -func makeFuncDocs(m map[string]*ast.FuncDecl) []*FuncDoc { - d := make([]*FuncDoc, len(m)) - i := 0 - for _, f := range m { - doc := new(FuncDoc) - doc.Doc = f.Doc.Text() - f.Doc = nil // doc consumed - remove from ast.FuncDecl node - if f.Recv != nil { - doc.Recv = f.Recv.List[0].Type - } - doc.Name = f.Name.Name - doc.Decl = f - d[i] = doc - i++ - } - sort.Sort(sortFuncDoc(d)) - return d -} - -// TypeDoc is the documentation for a declared type. -// Consts and Vars are sorted lists of constants and variables of (mostly) that type. -// Factories is a sorted list of factory functions that return that type. -// Methods is a sorted list of method functions on that type. -type TypeDoc struct { - Doc string - Type *ast.TypeSpec - Consts []*ValueDoc - Vars []*ValueDoc - Funcs []*FuncDoc - Methods []*FuncDoc - Decl *ast.GenDecl - order int -} - -type sortTypeDoc []*TypeDoc - -func (p sortTypeDoc) Len() int { return len(p) } -func (p sortTypeDoc) Swap(i, j int) { p[i], p[j] = p[j], p[i] } -func (p sortTypeDoc) Less(i, j int) bool { - // sort by name - // pull blocks (name = "") up to top - // in original order - if ni, nj := p[i].Type.Name.Name, p[j].Type.Name.Name; ni != nj { - return ni < nj - } - return p[i].order < p[j].order -} - -// NOTE(rsc): This would appear not to be correct for type ( ) -// blocks, but the doc extractor above has split them into -// individual declarations. -func (doc *docReader) makeTypeDocs(m map[string]*typeDoc) []*TypeDoc { - d := make([]*TypeDoc, len(m)) - i := 0 - for _, old := range m { - // all typeDocs should have a declaration associated with - // them after processing an entire package - be conservative - // and check - if decl := old.decl; decl != nil { - typespec := decl.Specs[0].(*ast.TypeSpec) - t := new(TypeDoc) - doc := typespec.Doc - typespec.Doc = nil // doc consumed - remove from ast.TypeSpec node - if doc == nil { - // no doc associated with the spec, use the declaration doc, if any - doc = decl.Doc - } - decl.Doc = nil // doc consumed - remove from ast.Decl node - t.Doc = doc.Text() - t.Type = typespec - t.Consts = makeValueDocs(old.values, token.CONST) - t.Vars = makeValueDocs(old.values, token.VAR) - t.Funcs = makeFuncDocs(old.factories) - t.Methods = makeFuncDocs(old.methods) - t.Decl = old.decl - t.order = i - d[i] = t - i++ - } else { - // no corresponding type declaration found - move any associated - // values, factory functions, and methods back to the top-level - // so that they are not lost (this should only happen if a package - // file containing the explicit type declaration is missing or if - // an unqualified type name was used after a "." import) - // 1) move values - doc.values = append(doc.values, old.values...) - // 2) move factory functions - for name, f := range old.factories { - doc.funcs[name] = f - } - // 3) move methods - for name, f := range old.methods { - // don't overwrite functions with the same name - if _, found := doc.funcs[name]; !found { - doc.funcs[name] = f - } - } - } - } - d = d[0:i] // some types may have been ignored - sort.Sort(sortTypeDoc(d)) - return d -} - -func makeBugDocs(list []*ast.CommentGroup) []string { - d := make([]string, len(list)) - for i, g := range list { - d[i] = g.Text() - } - return d -} - -// PackageDoc is the documentation for an entire package. -// -type PackageDoc struct { - PackageName string - ImportPath string - Imports []string - Filenames []string - Doc string - Consts []*ValueDoc - Types []*TypeDoc - Vars []*ValueDoc - Funcs []*FuncDoc - Bugs []string -} - -// newDoc returns the accumulated documentation for the package. -// -func (doc *docReader) newDoc(importpath string, filenames []string) *PackageDoc { - p := new(PackageDoc) - p.PackageName = doc.pkgName - p.ImportPath = importpath - sort.Strings(filenames) - p.Filenames = filenames - p.Doc = doc.doc.Text() - p.Imports = sortedKeys(doc.imports) - // makeTypeDocs may extend the list of doc.values and - // doc.funcs and thus must be called before any other - // function consuming those lists - p.Types = doc.makeTypeDocs(doc.types) - p.Consts = makeValueDocs(doc.values, token.CONST) - p.Vars = makeValueDocs(doc.values, token.VAR) - p.Funcs = makeFuncDocs(doc.funcs) - p.Bugs = makeBugDocs(doc.bugs) - return p -} - -func sortedKeys(m map[string]int) []string { - list := make([]string, len(m)) - i := 0 - for key := range m { - list[i] = key - i++ - } - sort.Strings(list) - return list -} - -// ---------------------------------------------------------------------------- -// Filtering by name - -type Filter func(string) bool - -func matchFields(fields *ast.FieldList, f Filter) bool { - if fields != nil { - for _, field := range fields.List { - for _, name := range field.Names { - if f(name.Name) { - return true - } - } - } - } - return false -} - -func matchDecl(d *ast.GenDecl, f Filter) bool { - for _, d := range d.Specs { - switch v := d.(type) { - case *ast.ValueSpec: - for _, name := range v.Names { - if f(name.Name) { - return true - } - } - case *ast.TypeSpec: - if f(v.Name.Name) { - return true - } - switch t := v.Type.(type) { - case *ast.StructType: - if matchFields(t.Fields, f) { - return true - } - case *ast.InterfaceType: - if matchFields(t.Methods, f) { - return true - } - } - } - } - return false -} - -func filterValueDocs(a []*ValueDoc, f Filter) []*ValueDoc { - w := 0 - for _, vd := range a { - if matchDecl(vd.Decl, f) { - a[w] = vd - w++ - } - } - return a[0:w] -} - -func filterFuncDocs(a []*FuncDoc, f Filter) []*FuncDoc { - w := 0 - for _, fd := range a { - if f(fd.Name) { - a[w] = fd - w++ - } - } - return a[0:w] -} - -func filterTypeDocs(a []*TypeDoc, f Filter) []*TypeDoc { - w := 0 - for _, td := range a { - n := 0 // number of matches - if matchDecl(td.Decl, f) { - n = 1 - } else { - // type name doesn't match, but we may have matching consts, vars, factories or methods - td.Consts = filterValueDocs(td.Consts, f) - td.Vars = filterValueDocs(td.Vars, f) - td.Funcs = filterFuncDocs(td.Funcs, f) - td.Methods = filterFuncDocs(td.Methods, f) - n += len(td.Consts) + len(td.Vars) + len(td.Funcs) + len(td.Methods) - } - if n > 0 { - a[w] = td - w++ - } - } - return a[0:w] -} - -// Filter eliminates documentation for names that don't pass through the filter f. -// TODO: Recognize "Type.Method" as a name. -// -func (p *PackageDoc) Filter(f Filter) { - p.Consts = filterValueDocs(p.Consts, f) - p.Vars = filterValueDocs(p.Vars, f) - p.Types = filterTypeDocs(p.Types, f) - p.Funcs = filterFuncDocs(p.Funcs, f) - p.Doc = "" // don't show top-level package doc -} diff --git a/vendor/github.com/visualfc/gotools/docview/filesystem.go b/vendor/github.com/visualfc/gotools/docview/filesystem.go deleted file mode 100644 index dc60649..0000000 --- a/vendor/github.com/visualfc/gotools/docview/filesystem.go +++ /dev/null @@ -1,70 +0,0 @@ -// Copyright 2011 The Go Authors. All rights reserved. -// Use of this source code is governed by a BSD-style -// license that can be found in the LICENSE file. - -// This file defines types for abstract file system access and -// provides an implementation accessing the file system of the -// underlying OS. - -package docview - -import ( - "fmt" - "io" - "io/ioutil" - "os" -) - -// The FileSystem interface specifies the methods godoc is using -// to access the file system for which it serves documentation. -type FileSystem interface { - Open(path string) (io.ReadCloser, error) - Lstat(path string) (os.FileInfo, error) - Stat(path string) (os.FileInfo, error) - ReadDir(path string) ([]os.FileInfo, error) -} - -// ReadFile reads the file named by path from fs and returns the contents. -func ReadFile(fs FileSystem, path string) ([]byte, error) { - rc, err := fs.Open(path) - if err != nil { - return nil, err - } - defer rc.Close() - return ioutil.ReadAll(rc) -} - -// ---------------------------------------------------------------------------- -// OS-specific FileSystem implementation - -var OS FileSystem = osFS{} - -// osFS is the OS-specific implementation of FileSystem -type osFS struct{} - -func (osFS) Open(path string) (io.ReadCloser, error) { - f, err := os.Open(path) - if err != nil { - return nil, err - } - fi, err := f.Stat() - if err != nil { - return nil, err - } - if fi.IsDir() { - return nil, fmt.Errorf("Open: %s is a directory", path) - } - return f, nil -} - -func (osFS) Lstat(path string) (os.FileInfo, error) { - return os.Lstat(path) -} - -func (osFS) Stat(path string) (os.FileInfo, error) { - return os.Stat(path) -} - -func (osFS) ReadDir(path string) ([]os.FileInfo, error) { - return ioutil.ReadDir(path) // is sorted -} diff --git a/vendor/github.com/visualfc/gotools/finddecl/finddecl.go b/vendor/github.com/visualfc/gotools/finddecl/finddecl.go deleted file mode 100644 index b9f3f9c..0000000 --- a/vendor/github.com/visualfc/gotools/finddecl/finddecl.go +++ /dev/null @@ -1,135 +0,0 @@ -// Copyright 2011-2015 visualfc . All rights reserved. -// Use of this source code is governed by a BSD-style -// license that can be found in the LICENSE file. - -package finddecl - -import ( - "errors" - "fmt" - "go/ast" - "go/parser" - "go/token" - "os" - "path/filepath" - "strconv" - - "github.com/visualfc/gotools/command" -) - -var Command = &command.Command{ - Run: runFindDecl, - UsageLine: "finddecl", - Short: "golang finddecl util", - Long: `golang finddecl util.`, -} -var ( - filePath string - fileLine int -) - -func init() { - Command.Flag.StringVar(&filePath, "file", "", "file path") - Command.Flag.IntVar(&fileLine, "line", -1, "file line") -} - -func runFindDecl(cmd *command.Command, args []string) error { - if len(filePath) == 0 || fileLine == -1 { - cmd.Usage() - return os.ErrInvalid - } - if !filepath.IsAbs(filePath) { - dir, err := os.Getwd() - if err != nil { - return err - } - filePath = filepath.Join(dir, filePath) - } - - fset := token.NewFileSet() - f, err := parser.ParseFile(fset, filePath, nil, 0) - if err != nil { - return err - } - decl := findDecl(fset, f, fileLine) - if decl == nil { - fmt.Println("-") - return errors.New("error find decl") - } - printDecl(fset, decl, fileLine) - return nil -} - -type Info struct { - Type string - Name string - BeginLine int - EndLine int -} - -func printDecl(fset *token.FileSet, decl ast.Decl, line int) { - var tag string - var name string - - tag = "-" - name = "-" - switch d := decl.(type) { - case *ast.GenDecl: - switch d.Tok { - case token.IMPORT: - tag = "import" - if len(d.Specs) > 0 { - if ts := d.Specs[0].(*ast.ImportSpec); ts != nil { - name, _ = strconv.Unquote(ts.Path.Value) - } - } - case token.TYPE: - tag = "type" - if len(d.Specs) > 0 { - if ts := d.Specs[0].(*ast.TypeSpec); ts != nil { - name = ts.Name.Name - switch ts.Type.(type) { - case *ast.StructType: - tag = "struct" - case *ast.InterfaceType: - tag = "interface" - default: - tag = "type" - } - } - } - case token.VAR, token.CONST: - tag = d.Tok.String() - var testName string - for _, ds := range d.Specs { - if ts := ds.(*ast.ValueSpec); ts != nil { - name = ts.Names[0].Name - for _, n := range ts.Names { - if line >= fset.Position(n.Pos()).Line && line <= fset.Position(n.End()).Line { - testName = n.Name - break - } - } - } - } - if testName != "" { - name = testName - } - default: - tag = d.Tok.String() - } - case *ast.FuncDecl: - tag = "func" - name = d.Name.Name - } - fmt.Println(tag, name, fset.Position(decl.Pos()).Line, fset.Position(decl.End()).Line) -} - -func findDecl(fset *token.FileSet, file *ast.File, line int) ast.Decl { - for _, decl := range file.Decls { - if line >= fset.Position(decl.Pos()).Line && line <= fset.Position(decl.End()).Line { - return decl - } - } - return nil -} diff --git a/vendor/github.com/visualfc/gotools/finddoc/finddoc.go b/vendor/github.com/visualfc/gotools/finddoc/finddoc.go deleted file mode 100644 index 0cd67b2..0000000 --- a/vendor/github.com/visualfc/gotools/finddoc/finddoc.go +++ /dev/null @@ -1,608 +0,0 @@ -// Copyright 2013 The rspace Authors. All rights reserved. -// Use of this source code is governed by a BSD-style -// license that can be found in the LICENSE file. - -// Doc is a simple document printer that produces the doc comments for its -// argument symbols, plus a link to the full documentation and a pointer to -// the source. It has a more Go-like UI than godoc. It can also search for -// symbols by looking in all packages, and case is ignored. For instance: -// doc isupper -// will find unicode.IsUpper. -// -// The -pkg flag retrieves package-level doc comments only. -// -// Usage: -// doc pkg.name # "doc io.Writer" -// doc pkg name # "doc fmt Printf" -// doc name # "doc isupper" (finds unicode.IsUpper) -// doc -pkg pkg # "doc fmt" -// -// The pkg is the last element of the package path; -// no slashes (ast.Node not go/ast.Node). -// -// Flags -// -c(onst) -f(unc) -i(nterface) -m(ethod) -s(truct) -t(ype) -v(ar) -// restrict hits to declarations of the corresponding kind. -// Flags -// -doc -src -url -// restrict printing to the documentation, source path, or godoc URL. -package finddoc - -import ( - "bytes" - "fmt" - "go/ast" - "go/parser" - "go/printer" - "go/token" - "go/types" - "os" - "path" - "path/filepath" - "regexp" - "runtime" - "strings" - - "github.com/visualfc/gotools/command" -) - -const usageDoc = `Find documentation for names. -usage: - doc pkg.name # "doc io.Writer" - doc pkg name # "doc fmt Printf" - doc name # "doc isupper" finds unicode.IsUpper - doc -pkg pkg # "doc fmt" - doc -r expr # "doc -r '.*exported'" -pkg is the last component of any package, e.g. fmt, parser -name is the name of an exported symbol; case is ignored in matches. - -The name may also be a regular expression to select which names -to match. In regular expression searches, case is ignored and -the pattern must match the entire name, so ".?print" will match -Print, Fprint and Sprint but not Fprintf. - -Flags - -c(onst) -f(unc) -i(nterface) -m(ethod) -s(truct) -t(ype) -v(ar) -restrict hits to declarations of the corresponding kind. -Flags - -doc -src -url -restrict printing to the documentation, source path, or godoc URL. -Flag - -r -takes a single argument (no package), a name or regular expression -to search for in all packages. -` - -var Command = &command.Command{ - Run: runDoc, - UsageLine: "finddoc [pkg.name|pkg name|-pkg name]", - Short: "golang doc lookup", - Long: usageDoc, -} - -var ( - // If none is set, all are set. - docFlag bool - srcFlag bool - urlFlag bool - regexpFlag bool - matchWordFlag bool - matchCaseFlag bool - constantFlag bool - functionFlag bool - interfaceFlag bool - methodFlag bool - packageFlag bool - structFlag bool - typeFlag bool - variableFlag bool - urlHeadTag string -) - -func init() { - Command.Flag.BoolVar(&docFlag, "doc", false, "restrict output to documentation only") - Command.Flag.BoolVar(&srcFlag, "src", false, "restrict output to source file only") - Command.Flag.BoolVar(&urlFlag, "url", false, "restrict output to godoc URL only") - Command.Flag.BoolVar(®expFlag, "r", false, "single argument is a regular expression for a name") - Command.Flag.BoolVar(&matchWordFlag, "word", false, "search match whole word") - Command.Flag.BoolVar(&matchCaseFlag, "case", false, "search match case") - - Command.Flag.BoolVar(&constantFlag, "const", false, "show doc for consts only") - Command.Flag.BoolVar(&functionFlag, "func", false, "show doc for funcs only") - Command.Flag.BoolVar(&interfaceFlag, "interface", false, "show doc for interfaces only") - Command.Flag.BoolVar(&methodFlag, "method", false, "show doc for methods only") - Command.Flag.BoolVar(&packageFlag, "package", false, "show top-level package doc only") - Command.Flag.BoolVar(&structFlag, "struct", false, "show doc for structs only") - Command.Flag.BoolVar(&typeFlag, "type", false, "show doc for types only") - Command.Flag.BoolVar(&variableFlag, "var", false, "show doc for vars only") - - Command.Flag.BoolVar(&constantFlag, "c", false, "alias for -const") - Command.Flag.BoolVar(&functionFlag, "f", false, "alias for -func") - Command.Flag.BoolVar(&interfaceFlag, "i", false, "alias for -interface") - Command.Flag.BoolVar(&methodFlag, "m", false, "alias for -method") - Command.Flag.BoolVar(&packageFlag, "pkg", false, "alias for -package") - Command.Flag.BoolVar(&structFlag, "s", false, "alias for -struct") - Command.Flag.BoolVar(&typeFlag, "t", false, "alias for -type") - Command.Flag.BoolVar(&variableFlag, "v", false, "alias for -var") - - Command.Flag.StringVar(&urlHeadTag, "urltag", "", "url head tag, liteide provate") -} - -func runDoc(cmd *command.Command, args []string) error { - if !(constantFlag || functionFlag || interfaceFlag || methodFlag || packageFlag || structFlag || typeFlag || variableFlag) { // none set - constantFlag = true - functionFlag = true - methodFlag = true - // Not package! It's special. - typeFlag = true - variableFlag = true - } - if !(docFlag || srcFlag || urlFlag) { - docFlag = true - srcFlag = true - urlFlag = true - } - var pkg, name string - switch len(args) { - case 1: - if packageFlag { - pkg = args[0] - } else if regexpFlag { - name = args[0] - } else if strings.Contains(args[0], ".") { - pkg, name = split(args[0]) - } else { - name = args[0] - } - case 2: - if packageFlag { - cmd.Usage() - } - pkg, name = args[0], args[1] - default: - cmd.Usage() - return os.ErrInvalid - } - if strings.Contains(pkg, "/") { - fmt.Fprintf(os.Stderr, "doc: package name cannot contain slash (TODO)\n") - os.Exit(2) - } - for _, path := range Paths(pkg) { - lookInDirectory(path, name) - } - return nil -} - -var slash = string(filepath.Separator) -var slashDot = string(filepath.Separator) + "." -var goRootSrcPkg = filepath.Join(runtime.GOROOT(), "src", "pkg") -var goRootSrcCmd = filepath.Join(runtime.GOROOT(), "src", "cmd") -var goPaths = SplitGopath() - -func split(arg string) (pkg, name string) { - dot := strings.IndexRune(arg, '.') // We know there's one there. - return arg[0:dot], arg[dot+1:] -} - -func Paths(pkg string) []string { - pkgs := pathsFor(runtime.GOROOT(), pkg) - for _, root := range goPaths { - pkgs = append(pkgs, pathsFor(root, pkg)...) - } - return pkgs -} - -func SplitGopath() []string { - gopath := os.Getenv("GOPATH") - if gopath == "" { - return nil - } - return strings.Split(gopath, string(os.PathListSeparator)) -} - -// pathsFor recursively walks the tree looking for possible directories for the package: -// those whose basename is pkg. -func pathsFor(root, pkg string) []string { - root = path.Join(root, "src") - pkgPaths := make([]string, 0, 10) - visit := func(pathName string, f os.FileInfo, err error) error { - if err != nil { - return nil - } - // One package per directory. Ignore the files themselves. - if !f.IsDir() { - return nil - } - // No .hg or other dot nonsense please. - if strings.Contains(pathName, slashDot) { - return filepath.SkipDir - } - // Is the last element of the path correct - if pkg == "" || filepath.Base(pathName) == pkg { - pkgPaths = append(pkgPaths, pathName) - } - return nil - } - - filepath.Walk(root, visit) - return pkgPaths -} - -// lookInDirectory looks in the package (if any) in the directory for the named exported identifier. -func lookInDirectory(directory, name string) { - fset := token.NewFileSet() - pkgs, _ := parser.ParseDir(fset, directory, nil, parser.ParseComments) // Ignore the error. - for _, pkg := range pkgs { - if pkg.Name == "main" || strings.HasSuffix(pkg.Name, "_test") { - continue - } - doPackage(pkg, fset, name) - } -} - -// prefixDirectory places the directory name on the beginning of each name in the list. -func prefixDirectory(directory string, names []string) { - if directory != "." { - for i, name := range names { - names[i] = filepath.Join(directory, name) - } - } -} - -// File is a wrapper for the state of a file used in the parser. -// The parse tree walkers are all methods of this type. -type File struct { - fset *token.FileSet - name string // Name of file. - ident string // Identifier we are searching for. - lowerIdent string // lower ident - regexp *regexp.Regexp - pathPrefix string // Prefix from GOROOT/GOPATH. - urlPrefix string // Start of corresponding URL for golang.org or godoc.org. - file *ast.File - comments ast.CommentMap - defs map[*ast.Ident]types.Object - doPrint bool - found bool - allFiles []*File // All files in the package. -} - -// doPackage analyzes the single package constructed from the named files, looking for -// the definition of ident. -func doPackage(pkg *ast.Package, fset *token.FileSet, ident string) { - var files []*File - found := false - for name, astFile := range pkg.Files { - if packageFlag && astFile.Doc == nil { - continue - } - file := &File{ - fset: fset, - name: name, - ident: ident, - lowerIdent: strings.ToLower(ident), - file: astFile, - comments: ast.NewCommentMap(fset, astFile, astFile.Comments), - } - if regexpFlag && regexp.QuoteMeta(ident) != ident { - // It's a regular expression. - var err error - file.regexp, err = regexp.Compile("^(?i:" + ident + ")$") - if err != nil { - fmt.Fprintf(os.Stderr, "regular expression `%s`:", err) - os.Exit(2) - } - } - switch { - case strings.HasPrefix(name, goRootSrcPkg): - file.urlPrefix = "http://golang.org/pkg" - file.pathPrefix = goRootSrcPkg - case strings.HasPrefix(name, goRootSrcCmd): - file.urlPrefix = "http://golang.org/cmd" - file.pathPrefix = goRootSrcCmd - default: - file.urlPrefix = "http://godoc.org" - for _, path := range goPaths { - p := filepath.Join(path, "src") - if strings.HasPrefix(name, p) { - file.pathPrefix = p - break - } - } - } - file.urlPrefix = urlHeadTag + file.urlPrefix - files = append(files, file) - if found { - continue - } - file.doPrint = false - if packageFlag { - file.pkgComments() - } else { - ast.Walk(file, file.file) - if file.found { - found = true - } - } - } - - if !found { - return - } - - // By providing the Context with our own error function, it will continue - // past the first error. There is no need for that function to do anything. - config := types.Config{ - Error: func(error) {}, - } - info := &types.Info{ - Defs: make(map[*ast.Ident]types.Object), - } - path := "" - var astFiles []*ast.File - for name, astFile := range pkg.Files { - if path == "" { - path = name - } - astFiles = append(astFiles, astFile) - } - config.Check(path, fset, astFiles, info) // Ignore errors. - - // We need to search all files for methods, so record the full list in each file. - for _, file := range files { - file.allFiles = files - } - for _, file := range files { - file.doPrint = true - file.defs = info.Defs - if packageFlag { - file.pkgComments() - } else { - ast.Walk(file, file.file) - } - } -} - -// Visit implements the ast.Visitor interface. -func (f *File) Visit(node ast.Node) ast.Visitor { - switch n := node.(type) { - case *ast.GenDecl: - // Variables, constants, types. - for _, spec := range n.Specs { - switch spec := spec.(type) { - case *ast.ValueSpec: - if constantFlag && n.Tok == token.CONST || variableFlag && n.Tok == token.VAR { - for _, ident := range spec.Names { - if f.match(ident.Name) { - f.printNode(n, ident, f.nameURL(ident.Name)) - break - } - } - } - case *ast.TypeSpec: - // If there is only one Spec, there are probably no parens and the - // comment we want appears before the type keyword, bound to - // the GenDecl. If the Specs are parenthesized, the comment we want - // is bound to the Spec. Hence we dig into the GenDecl to the Spec, - // but only if there are no parens. - node := ast.Node(n) - if n.Lparen.IsValid() { - node = spec - } - if f.match(spec.Name.Name) { - if typeFlag { - f.printNode(node, spec.Name, f.nameURL(spec.Name.Name)) - } else { - switch spec.Type.(type) { - case *ast.InterfaceType: - if interfaceFlag { - f.printNode(node, spec.Name, f.nameURL(spec.Name.Name)) - } - case *ast.StructType: - if structFlag { - f.printNode(node, spec.Name, f.nameURL(spec.Name.Name)) - } - } - } - if f.doPrint && f.defs[spec.Name] != nil && f.defs[spec.Name].Type() != nil { - ms := types.NewMethodSet(f.defs[spec.Name].Type()) //.Type().MethodSet() - if ms.Len() == 0 { - ms = types.NewMethodSet(types.NewPointer(f.defs[spec.Name].Type())) //.MethodSet() - } - f.methodSet(ms) - } - } - case *ast.ImportSpec: - continue // Don't care. - } - } - case *ast.FuncDecl: - // Methods, top-level functions. - if f.match(n.Name.Name) { - n.Body = nil // Do not print the function body. - if methodFlag && n.Recv != nil { - f.printNode(n, n.Name, f.methodURL(n.Recv.List[0].Type, n.Name.Name)) - } else if functionFlag && n.Recv == nil { - f.printNode(n, n.Name, f.nameURL(n.Name.Name)) - } - } - } - return f -} - -func (f *File) match(name string) bool { - // name must be exported. - if !ast.IsExported(name) { - return false - } - if f.regexp == nil { - if matchWordFlag { - if matchCaseFlag { - return name == f.ident - } - return strings.ToLower(name) == f.lowerIdent - } else { - if matchCaseFlag { - return strings.Contains(name, f.ident) - } - return strings.Contains(strings.ToLower(name), f.lowerIdent) - } - } - return f.regexp.MatchString(name) -} - -func (f *File) printNode(node, ident ast.Node, url string) { - if !f.doPrint { - f.found = true - return - } - fmt.Printf("%s%s%s", url, f.sourcePos(f.fset.Position(ident.Pos())), f.docs(node)) -} - -func (f *File) docs(node ast.Node) []byte { - if !docFlag { - return nil - } - commentedNode := printer.CommentedNode{Node: node} - if comments := f.comments.Filter(node).Comments(); comments != nil { - commentedNode.Comments = comments - } - var b bytes.Buffer - printer.Fprint(&b, f.fset, &commentedNode) - b.Write([]byte("\n\n")) // Add a blank line between entries if we print documentation. - return b.Bytes() -} - -func (f *File) pkgComments() { - doc := f.file.Doc - if doc == nil { - return - } - url := "" - if urlFlag { - url = f.packageURL() + "\n" - } - docText := "" - if docFlag { - docText = fmt.Sprintf("package %s\n%s\n\n", f.file.Name.Name, doc.Text()) - } - fmt.Printf("%s%s%s", url, f.sourcePos(f.fset.Position(doc.Pos())), docText) -} - -func (f *File) packageURL() string { - s := strings.TrimPrefix(f.name, f.pathPrefix) - // Now we have a path with a final file name. Drop it. - if i := strings.LastIndex(s, slash); i > 0 { - s = s[:i+1] - } - return f.urlPrefix + s -} - -func (f *File) packageName() string { - s := strings.TrimPrefix(f.name, f.pathPrefix) - // Now we have a path with a final file name. Drop it. - if i := strings.LastIndex(s, slash); i > 0 { - s = s[:i+1] - } - s = strings.Trim(s, slash) - return filepath.ToSlash(s) -} - -func (f *File) sourcePos(posn token.Position) string { - if !srcFlag { - return "" - } - return fmt.Sprintf("%s:%d:\n", posn.Filename, posn.Line) -} - -func (f *File) nameURL(name string) string { - if !urlFlag { - return "" - } - return fmt.Sprintf("%s#%s\n", f.packageURL(), name) -} - -func (f *File) methodURL(typ ast.Expr, name string) string { - if !urlFlag { - return "" - } - var b bytes.Buffer - printer.Fprint(&b, f.fset, typ) - typeName := b.Bytes() - if len(typeName) > 0 && typeName[0] == '*' { - typeName = typeName[1:] - } - return fmt.Sprintf("%s#%s.%s\n", f.packageURL(), typeName, name) -} - -// Here follows the code to find and print a method (actually a method set, because -// we want to do only one redundant tree walk, not one per method). -// It should be much easier than walking the whole tree again, but that's what we must do. -// TODO. - -type method struct { - index int // Which doc to write. (Keeps the results sorted) - *types.Selection -} - -type methodVisitor struct { - *File - methods []method - docs []string -} - -func (f *File) methodSet(set *types.MethodSet) { - // Build the set of things we're looking for. - methods := make([]method, 0, set.Len()) - docs := make([]string, set.Len()) - for i := 0; i < set.Len(); i++ { - if ast.IsExported(set.At(i).Obj().Name()) { - m := method{ - i, - set.At(i), - } - methods = append(methods, m) - } - } - if len(methods) == 0 { - return - } - // Collect the docs. - for _, file := range f.allFiles { - visitor := &methodVisitor{ - File: file, - methods: methods, - docs: docs, - } - ast.Walk(visitor, file.file) - methods = visitor.methods - } - // Print them in order. The incoming method set is sorted by name. - for _, doc := range docs { - if doc != "" { - fmt.Print(doc) - } - } -} - -// Visit implements the ast.Visitor interface. -func (visitor *methodVisitor) Visit(node ast.Node) ast.Visitor { - switch n := node.(type) { - case *ast.FuncDecl: - for i, method := range visitor.methods { - // If this is the right one, the position of the name of its identifier will match. - if method.Obj().Pos() == n.Name.Pos() { - n.Body = nil // TODO. Ugly - don't print the function body. - visitor.docs[method.index] = fmt.Sprintf("%s", visitor.File.docs(n)) - // If this was the last method, we're done. - if len(visitor.methods) == 1 { - return nil - } - // Drop this one from the list. - visitor.methods = append(visitor.methods[:i], visitor.methods[i+1:]...) - return visitor - } - } - } - return visitor -} diff --git a/vendor/github.com/visualfc/gotools/goapi/goapi.go b/vendor/github.com/visualfc/gotools/goapi/goapi.go deleted file mode 100644 index 92721cc..0000000 --- a/vendor/github.com/visualfc/gotools/goapi/goapi.go +++ /dev/null @@ -1,3774 +0,0 @@ -// Copyright 2011 The Go Authors. All rights reserved. -// Use of this source code is governed by a BSD-style -// license that can be found in the LICENSE file. - -// Api computes the exported API of a set of Go packages. - -//modify 2013-2014 visualfc - -package goapi - -import ( - "bufio" - "bytes" - "fmt" - "go/ast" - "go/build" - "go/doc" - "go/parser" - "go/printer" - "go/token" - "io" - "io/ioutil" - "log" - "os" - "os/exec" - "path" - "path/filepath" - "regexp" - "sort" - "strconv" - "strings" - "time" - - "github.com/visualfc/gotools/command" -) - -var Command = &command.Command{ - Run: runApi, - UsageLine: "goapi", - Short: "golang api util", - Long: `golang api util`, -} - -var apiVerbose bool -var apiAllmethods bool -var apiAlldecls bool -var apiShowpos bool -var apiSeparate string -var apiImportParser bool -var apiDefaultCtx bool -var apiCustomCtx string -var apiLookupInfo string -var apiLookupStdin bool -var apiOutput string - -func init() { - Command.Flag.BoolVar(&apiVerbose, "v", false, "verbose debugging") - Command.Flag.BoolVar(&apiAllmethods, "e", true, "extract for all embedded methods") - Command.Flag.BoolVar(&apiAlldecls, "a", false, "extract for all declarations") - Command.Flag.BoolVar(&apiShowpos, "pos", false, "addition token position") - Command.Flag.StringVar(&apiSeparate, "sep", ", ", "setup separators") - Command.Flag.BoolVar(&apiImportParser, "dep", true, "parser package imports") - Command.Flag.BoolVar(&apiDefaultCtx, "default_ctx", true, "extract for default context") - Command.Flag.StringVar(&apiCustomCtx, "custom_ctx", "", "optional comma-separated list of -[-cgo] to override default contexts.") - Command.Flag.StringVar(&apiLookupInfo, "cursor_info", "", "lookup cursor node info\"file.go:pos\"") - Command.Flag.BoolVar(&apiLookupStdin, "cursor_std", false, "cursor_info use stdin") - Command.Flag.StringVar(&apiOutput, "o", "", "output file") -} - -func runApi(cmd *command.Command, args []string) error { - if len(args) == 0 && apiLookupInfo == "" { - cmd.Usage() - return os.ErrInvalid - } - if apiVerbose { - now := time.Now() - defer func() { - log.Println("time", time.Now().Sub(now)) - }() - } - - var pkgs []string - if len(args) > 0 { - if args[0] == "std" || args[0] == "all" { - out, err := exec.Command("go", "list", "-e", args[0]).Output() - if err != nil { - log.Fatal(err) - } - pkgs = strings.Fields(string(out)) - } else { - pkgs = args - } - } - var curinfo CursorInfo - if apiLookupInfo != "" { - pos := strings.Index(apiLookupInfo, ":") - if pos != -1 { - curinfo.file = (apiLookupInfo)[:pos] - if i, err := strconv.Atoi((apiLookupInfo)[pos+1:]); err == nil { - curinfo.pos = token.Pos(i) - } - } - } - - if len(pkgs) == 1 && curinfo.pos != token.NoPos { - curinfo.pkg = pkgs[0] - } - - if apiLookupStdin { - src, err := ioutil.ReadAll(os.Stdin) - if err == nil { - curinfo.src = src - curinfo.std = true - } - } - - if apiCustomCtx != "" { - apiDefaultCtx = false - setCustomContexts() - } - - var features []string - w := NewWalker() - if curinfo.pkg != "" { - w.cursorInfo = &curinfo - } - w.sep = apiSeparate - - if apiDefaultCtx { - w.context = &build.Default - - for _, pkg := range pkgs { - w.wantedPkg[pkg] = true - } - - for _, pkg := range pkgs { - w.WalkPackage(pkg) - } - if w.cursorInfo != nil { - goto lookup - } else { - var file io.Writer - if apiOutput != "" { - var err error - file, err = os.Create(apiOutput) - if err != nil { - log.Fatal(err) - } - } else { - file = os.Stdout - } - bw := bufio.NewWriter(file) - defer bw.Flush() - for _, p := range w.packageMap { - if w.wantedPkg[p.name] { - for _, f := range p.Features() { - fmt.Fprintf(bw, "%s\n", f) - } - } - } - return nil - } - features = w.Features("") - } else { - for _, c := range contexts { - c.Compiler = build.Default.Compiler - } - - for _, pkg := range pkgs { - w.wantedPkg[pkg] = true - } - - var featureCtx = make(map[string]map[string]bool) // feature -> context name -> true - for _, context := range contexts { - w.context = context - w.ctxName = contextName(w.context) + ":" - - for _, pkg := range pkgs { - w.WalkPackage(pkg) - } - if w.cursorInfo != nil && w.cursorInfo.info != nil { - goto lookup - } - } - - for pkg, p := range w.packageMap { - if w.wantedPkg[p.name] { - pos := strings.Index(pkg, ":") - if pos == -1 { - continue - } - ctxName := pkg[:pos] - for _, f := range p.Features() { - if featureCtx[f] == nil { - featureCtx[f] = make(map[string]bool) - } - featureCtx[f][ctxName] = true - } - } - } - - for f, cmap := range featureCtx { - if len(cmap) == len(contexts) { - features = append(features, f) - continue - } - comma := strings.Index(f, ",") - for cname := range cmap { - f2 := fmt.Sprintf("%s (%s)%s", f[:comma], cname, f[comma:]) - features = append(features, f2) - } - } - sort.Strings(features) - } - -lookup: - if w.cursorInfo != nil { - info := w.cursorInfo.info - if info == nil { - os.Exit(1) - return os.ErrInvalid - } - // fmt.Println("kind,", info.Kind) - // fmt.Println("name,", info.Name) - // if info.Type != "" { - // fmt.Println("type,", strings.TrimLeft(info.Type, "*")) - // } - if info.Name == info.Type || info.Type == "" { - fmt.Printf("info, %s, %s\n", info.Kind, info.Name) - } else { - fmt.Printf("info, %s, %s, %s\n", info.Kind, info.Name, info.Type) - } - if info.Kind == KindImport || info.Kind == KindPackage { - if p := w.findPackage(info.Name); p != nil { - fmt.Println("help,", p.name) - } - } - if info.T != nil { - for _, text := range []string{info.Name, info.Type} { - typ := strings.TrimLeft(text, "*") - pos := strings.Index(typ, ".") - if pos != -1 { - if p := w.findPackage(typ[:pos]); p != nil { - fmt.Println("help,", p.name+typ[pos:]) - break - } - } - } - fmt.Println("pos,", w.fset.Position(info.T.Pos())) - } - return nil - } - - fail := false - defer func() { - if fail { - os.Exit(1) - } - }() - - bw := bufio.NewWriter(os.Stdout) - defer bw.Flush() - - for _, f := range features { - fmt.Fprintf(bw, "%s\n", f) - } - return nil -} - -type CursorInfo struct { - pkg string - file string - pos token.Pos - src []byte - std bool - info *TypeInfo -} - -// contexts are the default contexts which are scanned, unless -// overridden by the -contexts flag. -var contexts = []*build.Context{ - {GOOS: "linux", GOARCH: "386", CgoEnabled: true}, - {GOOS: "linux", GOARCH: "386"}, - {GOOS: "linux", GOARCH: "amd64", CgoEnabled: true}, - {GOOS: "linux", GOARCH: "amd64"}, - {GOOS: "linux", GOARCH: "arm"}, - {GOOS: "darwin", GOARCH: "386", CgoEnabled: true}, - {GOOS: "darwin", GOARCH: "386"}, - {GOOS: "darwin", GOARCH: "amd64", CgoEnabled: true}, - {GOOS: "darwin", GOARCH: "amd64"}, - {GOOS: "windows", GOARCH: "amd64"}, - {GOOS: "windows", GOARCH: "386"}, - {GOOS: "freebsd", GOARCH: "amd64"}, - {GOOS: "freebsd", GOARCH: "386"}, -} - -func contextName(c *build.Context) string { - s := c.GOOS + "-" + c.GOARCH - if c.CgoEnabled { - return s + "-cgo" - } - return s -} - -func osArchName(c *build.Context) string { - return c.GOOS + "-" + c.GOARCH -} - -func parseContext(c string) *build.Context { - parts := strings.Split(c, "-") - if len(parts) < 2 { - log.Fatalf("bad context: %q", c) - } - bc := &build.Context{ - GOOS: parts[0], - GOARCH: parts[1], - } - if len(parts) == 3 { - if parts[2] == "cgo" { - bc.CgoEnabled = true - } else { - log.Fatalf("bad context: %q", c) - } - } - return bc -} - -func setCustomContexts() { - contexts = []*build.Context{} - for _, c := range strings.Split(apiCustomCtx, ",") { - contexts = append(contexts, parseContext(c)) - } -} - -func set(items []string) map[string]bool { - s := make(map[string]bool) - for _, v := range items { - s[v] = true - } - return s -} - -var spaceParensRx = regexp.MustCompile(` \(\S+?\)`) - -func featureWithoutContext(f string) string { - if !strings.Contains(f, "(") { - return f - } - return spaceParensRx.ReplaceAllString(f, "") -} - -func compareAPI(w io.Writer, features, required, optional, exception []string, allowNew bool) (ok bool) { - ok = true - - optionalSet := set(optional) - exceptionSet := set(exception) - featureSet := set(features) - - sort.Strings(features) - sort.Strings(required) - - take := func(sl *[]string) string { - s := (*sl)[0] - *sl = (*sl)[1:] - return s - } - - for len(required) > 0 || len(features) > 0 { - switch { - case len(features) == 0 || (len(required) > 0 && required[0] < features[0]): - feature := take(&required) - if exceptionSet[feature] { - fmt.Fprintf(w, "~%s\n", feature) - } else if featureSet[featureWithoutContext(feature)] { - // okay. - } else { - fmt.Fprintf(w, "-%s\n", feature) - ok = false // broke compatibility - } - case len(required) == 0 || (len(features) > 0 && required[0] > features[0]): - newFeature := take(&features) - if optionalSet[newFeature] { - // Known added feature to the upcoming release. - // Delete it from the map so we can detect any upcoming features - // which were never seen. (so we can clean up the nextFile) - delete(optionalSet, newFeature) - } else { - fmt.Fprintf(w, "+%s\n", newFeature) - if !allowNew { - ok = false // we're in lock-down mode for next release - } - } - default: - take(&required) - take(&features) - } - } - - // In next file, but not in API. - var missing []string - for feature := range optionalSet { - missing = append(missing, feature) - } - sort.Strings(missing) - for _, feature := range missing { - fmt.Fprintf(w, "±%s\n", feature) - } - return -} - -func fileFeatures(filename string) []string { - bs, err := ioutil.ReadFile(filename) - if err != nil { - log.Fatalf("Error reading file %s: %v", filename, err) - } - text := strings.TrimSpace(string(bs)) - if text == "" { - return nil - } - return strings.Split(text, "\n") -} - -func isExtract(name string) bool { - if apiAlldecls { - return true - } - return ast.IsExported(name) -} - -// pkgSymbol represents a symbol in a package -type pkgSymbol struct { - pkg string // "net/http" - symbol string // "RoundTripper" -} - -//expression kind -type Kind int - -const ( - KindBuiltin Kind = iota - KindPackage - KindImport - KindVar - KindConst - KindInterface - KindParam - KindStruct - KindMethod - KindField - KindType - KindFunc - KindChan - KindArray - KindMap - KindSlice - KindLabel - KindBranch -) - -func (k Kind) String() string { - switch k { - case KindBuiltin: - return "builtin" - case KindPackage: - return "package" - case KindImport: - return "import" - case KindVar: - return "var" - case KindConst: - return "const" - case KindParam: - return "param" - case KindInterface: - return "interface" - case KindStruct: - return "struct" - case KindMethod: - return "method" - case KindField: - return "field" - case KindType: - return "type" - case KindFunc: - return "func" - case KindChan: - return "chan" - case KindMap: - return "map" - case KindArray: - return "array" - case KindSlice: - return "slice" - case KindLabel: - return "label" - case KindBranch: - return "branch" - } - return fmt.Sprint("unknown-kind") -} - -//expression type -type TypeInfo struct { - Kind Kind - Name string - Type string - X ast.Expr - T ast.Expr -} - -type ExprType struct { - X ast.Expr - T string -} - -type Package struct { - dpkg *doc.Package - apkg *ast.Package - interfaceMethods map[string]([]typeMethod) - interfaces map[string]*ast.InterfaceType //interface - structs map[string]*ast.StructType //struct - types map[string]ast.Expr //type - functions map[string]typeMethod //function - consts map[string]*ExprType //const => type - vars map[string]*ExprType //var => type - name string - dir string - sep string - deps []string - features map[string](token.Pos) // set -} - -func NewPackage() *Package { - return &Package{ - interfaceMethods: make(map[string]([]typeMethod)), - interfaces: make(map[string]*ast.InterfaceType), - structs: make(map[string]*ast.StructType), - types: make(map[string]ast.Expr), - functions: make(map[string]typeMethod), - consts: make(map[string]*ExprType), - vars: make(map[string]*ExprType), - features: make(map[string](token.Pos)), - sep: ", ", - } -} - -func (p *Package) Features() (fs []string) { - for f, ps := range p.features { - if apiShowpos { - fs = append(fs, f+p.sep+strconv.Itoa(int(ps))) - } else { - fs = append(fs, f) - } - } - sort.Strings(fs) - return -} - -func (p *Package) findType(name string) ast.Expr { - for k, v := range p.interfaces { - if k == name { - return v - } - } - for k, v := range p.structs { - if k == name { - return v - } - } - for k, v := range p.types { - if k == name { - return v - } - } - return nil -} - -func funcRetType(ft *ast.FuncType, index int) ast.Expr { - if ft.Results != nil { - pos := 0 - for _, fi := range ft.Results.List { - if fi.Names == nil { - if pos == index { - return fi.Type - } - pos++ - } else { - for _ = range fi.Names { - if pos == index { - return fi.Type - } - pos++ - } - } - } - } - return nil -} - -func findFunction(funcs []*doc.Func, name string) (*ast.Ident, *ast.FuncType) { - for _, f := range funcs { - if f.Name == name { - return &ast.Ident{Name: name, NamePos: f.Decl.Pos()}, f.Decl.Type - } - } - return nil, nil -} - -func (p *Package) findSelectorType(name string) ast.Expr { - if t, ok := p.vars[name]; ok { - return &ast.Ident{ - NamePos: t.X.Pos(), - Name: t.T, - } - } - if t, ok := p.consts[name]; ok { - return &ast.Ident{ - NamePos: t.X.Pos(), - Name: t.T, - } - } - if t, ok := p.functions[name]; ok { - return t.ft - } - for k, v := range p.structs { - if k == name { - return &ast.Ident{ - NamePos: v.Pos(), - Name: name, - } - } - } - for k, v := range p.interfaces { - if k == name { - return &ast.Ident{ - NamePos: v.Pos(), - Name: name, - } - } - } - for k, v := range p.types { - if k == name { - return v - } - } - return nil -} - -func (p *Package) findCallFunc(name string) ast.Expr { - if fn, ok := p.functions[name]; ok { - return fn.ft - } - if s, ok := p.structs[name]; ok { - return s - } - if t, ok := p.types[name]; ok { - return t - } - if v, ok := p.vars[name]; ok { - if strings.HasPrefix(v.T, "func(") { - e, err := parser.ParseExpr(v.T + "{}") - if err == nil { - return e - } - } - } - return nil -} - -func (p *Package) findCallType(name string, index int) ast.Expr { - if fn, ok := p.functions[name]; ok { - return funcRetType(fn.ft, index) - } - if s, ok := p.structs[name]; ok { - return &ast.Ident{ - NamePos: s.Pos(), - Name: name, - } - } - if t, ok := p.types[name]; ok { - return &ast.Ident{ - NamePos: t.Pos(), - Name: name, - } - } - return nil -} - -func (p *Package) findMethod(typ, name string) (*ast.Ident, *ast.FuncType) { - if t, ok := p.interfaces[typ]; ok && t.Methods != nil { - for _, fd := range t.Methods.List { - switch ft := fd.Type.(type) { - case *ast.FuncType: - for _, ident := range fd.Names { - if ident.Name == name { - return ident, ft - } - } - } - } - } - for k, v := range p.interfaceMethods { - if k == typ { - for _, m := range v { - if m.name == name { - return &ast.Ident{Name: name, NamePos: m.pos}, m.ft - } - } - } - } - if p.dpkg == nil { - return nil, nil - } - for _, t := range p.dpkg.Types { - if t.Name == typ { - return findFunction(t.Methods, name) - } - } - return nil, nil -} - -type Walker struct { - context *build.Context - fset *token.FileSet - scope []string - // features map[string](token.Pos) // set - lastConstType string - curPackageName string - sep string - ctxName string - curPackage *Package - constDep map[string]*ExprType // key's const identifier has type of future value const identifier - packageState map[string]loadState - packageMap map[string]*Package - interfaces map[pkgSymbol]*ast.InterfaceType - selectorFullPkg map[string]string // "http" => "net/http", updated by imports - wantedPkg map[string]bool // packages requested on the command line - cursorInfo *CursorInfo - localvar map[string]*ExprType -} - -func NewWalker() *Walker { - return &Walker{ - fset: token.NewFileSet(), - // features: make(map[string]token.Pos), - packageState: make(map[string]loadState), - interfaces: make(map[pkgSymbol]*ast.InterfaceType), - packageMap: make(map[string]*Package), - selectorFullPkg: make(map[string]string), - wantedPkg: make(map[string]bool), - localvar: make(map[string]*ExprType), - sep: ", ", - } -} - -// loadState is the state of a package's parsing. -type loadState int - -const ( - notLoaded loadState = iota - loading - loaded -) - -func (w *Walker) Features(ctx string) (fs []string) { - for pkg, p := range w.packageMap { - if w.wantedPkg[p.name] { - if ctx == "" || strings.HasPrefix(pkg, ctx) { - fs = append(fs, p.Features()...) - } - } - } - sort.Strings(fs) - return -} - -// fileDeps returns the imports in a file. -func fileDeps(f *ast.File) (pkgs []string) { - for _, is := range f.Imports { - fpkg, err := strconv.Unquote(is.Path.Value) - if err != nil { - log.Fatalf("error unquoting import string %q: %v", is.Path.Value, err) - } - if fpkg != "C" { - pkgs = append(pkgs, fpkg) - } - } - return -} - -func (w *Walker) findPackage(pkg string) *Package { - if full, ok := w.selectorFullPkg[pkg]; ok { - if w.ctxName != "" { - ctxName := w.ctxName + full - for k, v := range w.packageMap { - if k == ctxName { - return v - } - } - } - for k, v := range w.packageMap { - if k == full { - return v - } - } - } - return nil -} - -func (w *Walker) findPackageOSArch(pkg string) *Package { - if full, ok := w.selectorFullPkg[pkg]; ok { - ctxName := osArchName(w.context) + ":" + full - for k, v := range w.packageMap { - if k == ctxName { - return v - } - } - } - return nil -} - -// WalkPackage walks all files in package `name'. -// WalkPackage does nothing if the package has already been loaded. - -func (w *Walker) WalkPackage(pkg string) { - if build.IsLocalImport(pkg) { - wd, err := os.Getwd() - if err != nil { - if apiVerbose { - log.Println(err) - } - return - } - dir := filepath.Clean(filepath.Join(wd, pkg)) - bp, err := w.context.ImportDir(dir, 0) - if err != nil { - if apiVerbose { - log.Println(err) - } - return - } - if w.wantedPkg[pkg] == true { - w.wantedPkg[bp.Name] = true - delete(w.wantedPkg, pkg) - } - if w.cursorInfo != nil && w.cursorInfo.pkg == pkg { - w.cursorInfo.pkg = bp.Name - } - w.WalkPackageDir(bp.Name, bp.Dir, bp) - } else if filepath.IsAbs(pkg) { - bp, err := build.ImportDir(pkg, 0) - if err != nil { - if apiVerbose { - log.Println(err) - } - } - if w.wantedPkg[pkg] == true { - w.wantedPkg[bp.Name] = true - delete(w.wantedPkg, pkg) - } - if w.cursorInfo != nil && w.cursorInfo.pkg == pkg { - w.cursorInfo.pkg = bp.Name - } - - w.WalkPackageDir(bp.Name, bp.Dir, bp) - } else { - bp, err := build.Import(pkg, "", build.FindOnly) - if err != nil { - if apiVerbose { - log.Println(err) - } - return - } - w.WalkPackageDir(pkg, bp.Dir, nil) - } -} - -func (w *Walker) WalkPackageDir(name string, dir string, bp *build.Package) { - ctxName := w.ctxName + name - curName := name - switch w.packageState[ctxName] { - case loading: - log.Fatalf("import cycle loading package %q?", name) - return - case loaded: - return - } - w.packageState[ctxName] = loading - w.selectorFullPkg[name] = name - - defer func() { - w.packageState[ctxName] = loaded - }() - - sname := name[strings.LastIndexAny(name, ".-/\\")+1:] - - apkg := &ast.Package{ - Files: make(map[string]*ast.File), - } - if bp == nil { - bp, _ = w.context.ImportDir(dir, 0) - } - if bp == nil { - return - } - if w.ctxName != "" { - isCgo := (len(bp.CgoFiles) > 0) && w.context.CgoEnabled - if isCgo { - curName = ctxName - } else { - isOSArch := false - for _, file := range bp.GoFiles { - if isOSArchFile(w.context, file) { - isOSArch = true - break - } - } - var p *Package - if isOSArch { - curName = osArchName(w.context) + ":" + name - p = w.findPackageOSArch(name) - } else { - curName = name - p = w.findPackage(name) - } - if p != nil { - if apiImportParser { - for _, dep := range p.deps { - if _, ok := w.packageState[dep]; ok { - continue - } - w.WalkPackage(dep) - } - } - w.packageMap[ctxName] = p - return - } - } - } - - files := append(append([]string{}, bp.GoFiles...), bp.CgoFiles...) - - if w.cursorInfo != nil && w.cursorInfo.pkg == name { - files = append(files, bp.TestGoFiles...) - for _, v := range bp.XTestGoFiles { - if v == w.cursorInfo.file { - var xbp build.Package - xbp.Name = name + "_test" - xbp.GoFiles = append(xbp.GoFiles, bp.XTestGoFiles...) - w.cursorInfo.pkg = xbp.Name - w.WalkPackageDir(xbp.Name, dir, &xbp) - break - } - } - } - - if len(files) == 0 { - if apiVerbose { - log.Println("no Go source files in", bp.Dir) - } - return - } - var deps []string - - for _, file := range files { - var src interface{} = nil - if w.cursorInfo != nil && - w.cursorInfo.pkg == name && - w.cursorInfo.file == file && - w.cursorInfo.std { - src = w.cursorInfo.src - } - f, err := parser.ParseFile(w.fset, filepath.Join(dir, file), src, 0) - if err != nil { - if apiVerbose { - log.Printf("error parsing package %s, file %s: %v", name, file, err) - } - } - - if sname != f.Name.Name { - continue - } - apkg.Files[file] = f - if apiImportParser { - deps = fileDeps(f) - for _, dep := range deps { - if _, ok := w.packageState[dep]; ok { - continue - } - w.WalkPackage(dep) - } - } - if apiShowpos && w.wantedPkg[name] { - tf := w.fset.File(f.Pos()) - if tf != nil { - fmt.Printf("pos %s%s%s%s%d%s%d\n", name, w.sep, filepath.Join(dir, file), w.sep, tf.Base(), w.sep, tf.Size()) - } - } - } - /* else { - fdir, err := os.Open(dir) - if err != nil { - log.Fatalln(err) - } - infos, err := fdir.Readdir(-1) - fdir.Close() - if err != nil { - log.Fatalln(err) - } - - for _, info := range infos { - if info.IsDir() { - continue - } - file := info.Name() - if strings.HasPrefix(file, "_") || strings.HasSuffix(file, "_test.go") { - continue - } - if strings.HasSuffix(file, ".go") { - f, err := parser.ParseFile(w.fset, filepath.Join(dir, file), nil, 0) - if err != nil { - if apiVerbose { - log.Printf("error parsing package %s, file %s: %v", name, file, err) - } - continue - } - if f.Name.Name != sname { - continue - } - - apkg.Files[file] = f - if apiImportParser { - for _, dep := range fileDeps(f) { - w.WalkPackage(dep) - } - } - if apiShowpos && w.wantedPkg[name] { - tf := w.fset.File(f.Pos()) - if tf != nil { - fmt.Printf("pos %s%s%s%s%d:%d\n", name, w.sep, filepath.Join(dir, file), w.sep, tf.Base(), tf.Base()+tf.Size()) - } - } - } - } - }*/ - if curName != ctxName { - w.packageState[curName] = loading - - defer func() { - w.packageState[curName] = loaded - }() - } - - if apiVerbose { - log.Printf("package %s => %s, %v", ctxName, curName, w.wantedPkg[curName]) - } - pop := w.pushScope("pkg " + name) - defer pop() - - w.curPackageName = curName - w.constDep = map[string]*ExprType{} - w.curPackage = NewPackage() - w.curPackage.apkg = apkg - w.curPackage.name = name - w.curPackage.dir = dir - w.curPackage.deps = deps - w.curPackage.sep = w.sep - w.packageMap[curName] = w.curPackage - w.packageMap[ctxName] = w.curPackage - - for _, afile := range apkg.Files { - w.recordTypes(afile) - } - - // Register all function declarations first. - for _, afile := range apkg.Files { - for _, di := range afile.Decls { - if d, ok := di.(*ast.FuncDecl); ok { - if !w.isExtract(d.Name.Name) { - continue - } - w.peekFuncDecl(d) - } - } - } - - for _, afile := range apkg.Files { - w.walkFile(afile) - } - - w.resolveConstantDeps() - - if w.cursorInfo != nil && w.cursorInfo.pkg == name { - for k, v := range apkg.Files { - if k == w.cursorInfo.file { - f := w.fset.File(v.Pos()) - if f == nil { - log.Fatalf("error fset postion %v", v.Pos()) - } - info, err := w.lookupFile(v, token.Pos(f.Base())+w.cursorInfo.pos-1) - if err != nil { - log.Fatalln("lookup error,", err) - } else { - if info != nil && info.Kind == KindImport { - for _, is := range v.Imports { - fpath, err := strconv.Unquote(is.Path.Value) - if err == nil { - if info.Name == path.Base(fpath) { - info.T = is.Path - } - } - } - } - w.cursorInfo.info = info - } - break - } - } - return - } - - // Now that we're done walking types, vars and consts - // in the *ast.Package, use go/doc to do the rest - // (functions and methods). This is done here because - // go/doc is destructive. We can't use the - // *ast.Package after this. - var mode doc.Mode - if apiAllmethods { - mode |= doc.AllMethods - } - if apiAlldecls && w.wantedPkg[w.ctxName] { - mode |= doc.AllDecls - } - - dpkg := doc.New(apkg, name, mode) - w.curPackage.dpkg = dpkg - - if w.wantedPkg[name] != true { - return - } - - for _, t := range dpkg.Types { - // Move funcs up to the top-level, not hiding in the Types. - dpkg.Funcs = append(dpkg.Funcs, t.Funcs...) - - for _, m := range t.Methods { - w.walkFuncDecl(m.Decl) - } - } - - for _, f := range dpkg.Funcs { - w.walkFuncDecl(f.Decl) - } -} - -// pushScope enters a new scope (walking a package, type, node, etc) -// and returns a function that will leave the scope (with sanity checking -// for mismatched pushes & pops) -func (w *Walker) pushScope(name string) (popFunc func()) { - w.scope = append(w.scope, name) - return func() { - if len(w.scope) == 0 { - log.Fatalf("attempt to leave scope %q with empty scope list", name) - } - if w.scope[len(w.scope)-1] != name { - log.Fatalf("attempt to leave scope %q, but scope is currently %#v", name, w.scope) - } - w.scope = w.scope[:len(w.scope)-1] - } -} - -func (w *Walker) recordTypes(file *ast.File) { - cur := w.curPackage - for _, di := range file.Decls { - switch d := di.(type) { - case *ast.GenDecl: - switch d.Tok { - case token.TYPE: - for _, sp := range d.Specs { - ts := sp.(*ast.TypeSpec) - name := ts.Name.Name - switch t := ts.Type.(type) { - case *ast.InterfaceType: - if isExtract(name) { - w.noteInterface(name, t) - } - cur.interfaces[name] = t - case *ast.StructType: - cur.structs[name] = t - default: - cur.types[name] = ts.Type - } - } - } - } - } -} - -func inRange(node ast.Node, p token.Pos) bool { - if node == nil { - return false - } - return p >= node.Pos() && p <= node.End() -} - -func (w *Walker) lookupLabel(body *ast.BlockStmt, name string) (*TypeInfo, error) { - for _, stmt := range body.List { - switch v := stmt.(type) { - case *ast.BlockStmt: - return w.lookupLabel(v, name) - case *ast.LabeledStmt: - return &TypeInfo{Kind: KindLabel, Name: v.Label.Name, Type: "branch", T: v.Label}, nil - } - } - return nil, nil -} - -func (w *Walker) lookupFile(file *ast.File, p token.Pos) (*TypeInfo, error) { - if inRange(file.Name, p) { - return &TypeInfo{Kind: KindPackage, X: file.Name, Name: file.Name.Name, Type: file.Name.Name, T: file.Name}, nil - } - for _, di := range file.Decls { - switch d := di.(type) { - case *ast.GenDecl: - if inRange(d, p) { - return w.lookupDecl(d, p, false) - } - case *ast.FuncDecl: - if inRange(d, p) { - info, err := w.lookupDecl(d, p, false) - if info != nil && info.Kind == KindBranch { - return w.lookupLabel(d.Body, info.Name) - } - return info, err - } - if d.Body != nil && inRange(d.Body, p) { - return w.lookupStmt(d.Body, p) - } - default: - return nil, fmt.Errorf("un parser decl %T", di) - } - } - return nil, fmt.Errorf("un find cursor %v", w.fset.Position(p)) -} - -func (w *Walker) isExtract(name string) bool { - if w.wantedPkg[w.curPackageName] || apiAlldecls { - return true - } - return ast.IsExported(name) -} - -func (w *Walker) isType(typ string) *ExprType { - pos := strings.Index(typ, ".") - if pos != -1 { - pkg := typ[:pos] - typ = typ[pos+1:] - if p := w.findPackage(pkg); p != nil { - if t, ok := p.types[typ]; ok { - if r := w.isType(typ); r != nil { - return r - } - return &ExprType{X: t, T: w.pkgRetType(pkg, w.nodeString(t))} - } - } - return nil - } - if t, ok := w.curPackage.types[typ]; ok { - if r := w.isType(w.nodeString(t)); r != nil { - return r - } - return &ExprType{X: t, T: w.nodeString(t)} - } - return nil -} - -func (w *Walker) lookupStmt(vi ast.Stmt, p token.Pos) (*TypeInfo, error) { - if vi == nil { - return nil, nil - } - switch v := vi.(type) { - case *ast.BadStmt: - // - case *ast.EmptyStmt: - // - case *ast.LabeledStmt: - if inRange(v.Label, p) { - return &TypeInfo{Kind: KindLabel, Name: v.Label.Name}, nil - } - return w.lookupStmt(v.Stmt, p) - // - case *ast.DeclStmt: - return w.lookupDecl(v.Decl, p, true) - case *ast.AssignStmt: - if len(v.Lhs) == len(v.Rhs) { - for i := 0; i < len(v.Lhs); i++ { - switch lt := v.Lhs[i].(type) { - case *ast.Ident: - typ, err := w.varValueType(v.Rhs[i], 0) - if err == nil && v.Tok == token.DEFINE { - w.localvar[lt.Name] = &ExprType{T: typ, X: lt} - } else if apiVerbose { - log.Println(err) - } - } - if inRange(v.Lhs[i], p) { - return w.lookupExprInfo(v.Lhs[i], p) - } else if inRange(v.Rhs[i], p) { - return w.lookupExprInfo(v.Rhs[i], p) - } - if fl, ok := v.Rhs[i].(*ast.FuncLit); ok { - if inRange(fl, p) { - return w.lookupStmt(fl.Body, p) - } - } - } - } else if len(v.Rhs) == 1 { - for i := 0; i < len(v.Lhs); i++ { - switch lt := v.Lhs[i].(type) { - case *ast.Ident: - typ, err := w.varValueType(v.Rhs[0], i) - if err == nil && v.Tok == token.DEFINE { - w.localvar[lt.Name] = &ExprType{T: typ, X: lt} - } else if apiVerbose { - log.Println(err) - } - } - if inRange(v.Lhs[i], p) { - return w.lookupExprInfo(v.Lhs[i], p) - } else if inRange(v.Rhs[0], p) { - return w.lookupExprInfo(v.Rhs[0], p) - } - if fl, ok := v.Rhs[0].(*ast.FuncLit); ok { - if inRange(fl, p) { - return w.lookupStmt(fl.Body, p) - } - } - } - } - return nil, nil - case *ast.ExprStmt: - return w.lookupExprInfo(v.X, p) - case *ast.BlockStmt: - for _, st := range v.List { - if inRange(st, p) { - return w.lookupStmt(st, p) - } - _, err := w.lookupStmt(st, p) - if err != nil { - log.Println(err) - } - } - case *ast.IfStmt: - if inRange(v.Init, p) { - return w.lookupStmt(v.Init, p) - } else { - w.lookupStmt(v.Init, p) - } - if inRange(v.Cond, p) { - return w.lookupExprInfo(v.Cond, p) - } else if inRange(v.Body, p) { - return w.lookupStmt(v.Body, p) - } else if inRange(v.Else, p) { - return w.lookupStmt(v.Else, p) - } - case *ast.SendStmt: - if inRange(v.Chan, p) { - return w.lookupExprInfo(v.Chan, p) - } else if inRange(v.Value, p) { - return w.lookupExprInfo(v.Value, p) - } - case *ast.IncDecStmt: - return w.lookupExprInfo(v.X, p) - case *ast.GoStmt: - return w.lookupExprInfo(v.Call, p) - case *ast.DeferStmt: - return w.lookupExprInfo(v.Call, p) - case *ast.ReturnStmt: - for _, r := range v.Results { - if inRange(r, p) { - return w.lookupExprInfo(r, p) - } - } - case *ast.BranchStmt: - if inRange(v.Label, p) { - return &TypeInfo{Kind: KindBranch, Name: v.Label.Name, Type: "label", T: v.Label}, nil - } - // - case *ast.CaseClause: - for _, r := range v.List { - if inRange(r, p) { - return w.lookupExprInfo(r, p) - } - } - for _, body := range v.Body { - if inRange(body, p) { - return w.lookupStmt(body, p) - } else { - w.lookupStmt(body, p) - } - } - case *ast.SwitchStmt: - if inRange(v.Init, p) { - return w.lookupStmt(v.Init, p) - } else { - w.lookupStmt(v.Init, p) - } - if inRange(v.Tag, p) { - return w.lookupExprInfo(v.Tag, p) - } else if inRange(v.Body, p) { - return w.lookupStmt(v.Body, p) - } - case *ast.TypeSwitchStmt: - if inRange(v.Assign, p) { - return w.lookupStmt(v.Assign, p) - } else { - w.lookupStmt(v.Assign, p) - } - if inRange(v.Init, p) { - return w.lookupStmt(v.Init, p) - } else { - w.lookupStmt(v.Init, p) - } - var vs string - if as, ok := v.Assign.(*ast.AssignStmt); ok { - if len(as.Lhs) == 1 { - vs = w.nodeString(as.Lhs[0]) - } - } - if inRange(v.Body, p) { - for _, s := range v.Body.List { - if inRange(s, p) { - switch cs := s.(type) { - case *ast.CaseClause: - for _, r := range cs.List { - if inRange(r, p) { - return w.lookupExprInfo(r, p) - } else if vs != "" { - typ, err := w.varValueType(r, 0) - if err == nil { - w.localvar[vs] = &ExprType{T: typ, X: r} - } - } - } - for _, body := range cs.Body { - if inRange(body, p) { - return w.lookupStmt(body, p) - } else { - w.lookupStmt(body, p) - } - } - default: - return w.lookupStmt(cs, p) - } - } - } - } - case *ast.CommClause: - if inRange(v.Comm, p) { - return w.lookupStmt(v.Comm, p) - } - for _, body := range v.Body { - if inRange(body, p) { - return w.lookupStmt(body, p) - } - } - case *ast.SelectStmt: - if inRange(v.Body, p) { - return w.lookupStmt(v.Body, p) - } - case *ast.ForStmt: - if inRange(v.Init, p) { - return w.lookupStmt(v.Init, p) - } else { - w.lookupStmt(v.Init, p) - } - if inRange(v.Cond, p) { - return w.lookupExprInfo(v.Cond, p) - } else if inRange(v.Body, p) { - return w.lookupStmt(v.Body, p) - } else if inRange(v.Post, p) { - return w.lookupStmt(v.Post, p) - } - case *ast.RangeStmt: - if inRange(v.X, p) { - return w.lookupExprInfo(v.X, p) - } else if inRange(v.Key, p) { - return &TypeInfo{Kind: KindBuiltin, Name: w.nodeString(v.Key), Type: "int"}, nil - } else if inRange(v.Value, p) { - typ, err := w.lookupExprInfo(v.X, p) - if typ != nil { - typ.Name = w.nodeString(v.Value) - return typ, err - } - } else { - typ, err := w.varValueType(v.X, 0) - //check is type - if t := w.isType(typ); t != nil { - typ = t.T - } - if err == nil { - var kt, vt string - if strings.HasPrefix(typ, "[]") { - kt = "int" - vt = typ[2:] - } else if strings.HasPrefix(typ, "map[") { - node, err := parser.ParseExpr(typ + "{}") - if err == nil { - if cl, ok := node.(*ast.CompositeLit); ok { - if m, ok := cl.Type.(*ast.MapType); ok { - kt = w.nodeString(w.namelessType(m.Key)) - vt = w.nodeString(w.namelessType(m.Value)) - } - } - } - } - if inRange(v.Key, p) { - return &TypeInfo{Kind: KindVar, X: v.Key, Name: w.nodeString(v.Key), T: v.X, Type: kt}, nil - } else if inRange(v.Value, p) { - return &TypeInfo{Kind: KindVar, X: v.Value, Name: w.nodeString(v.Value), T: v.X, Type: vt}, nil - } - if key, ok := v.Key.(*ast.Ident); ok { - w.localvar[key.Name] = &ExprType{T: kt, X: v.Key} - } - if value, ok := v.Value.(*ast.Ident); ok { - w.localvar[value.Name] = &ExprType{T: vt, X: v.Value} - } - } - } - if inRange(v.Body, p) { - return w.lookupStmt(v.Body, p) - } - } - return nil, nil //fmt.Errorf("not lookup stmt %v %T", vi, vi) -} - -func (w *Walker) lookupVar(vs *ast.ValueSpec, p token.Pos, local bool) (*TypeInfo, error) { - if inRange(vs.Type, p) { - return w.lookupExprInfo(vs.Type, p) - } - for _, v := range vs.Values { - if inRange(v, p) { - return w.lookupExprInfo(v, p) - } - } - if vs.Type != nil { - typ := w.nodeString(vs.Type) - for _, ident := range vs.Names { - if local { - w.localvar[ident.Name] = &ExprType{T: typ, X: ident} - } - if inRange(ident, p) { - return &TypeInfo{Kind: KindVar, X: ident, Name: ident.Name, T: vs.Type, Type: typ}, nil - } - } - } else if len(vs.Names) == len(vs.Values) { - for n, ident := range vs.Names { - typ := "" - if !local { - if t, ok := w.curPackage.vars[ident.Name]; ok { - typ = t.T - } - } else { - typ, err := w.varValueType(vs.Values[n], n) - if err != nil { - if apiVerbose { - log.Printf("unknown type of variable2 %q, type %T, error = %v, pos=%s", - ident.Name, vs.Values[n], err, w.fset.Position(vs.Pos())) - } - typ = "unknown-type" - } - w.localvar[ident.Name] = &ExprType{T: typ, X: ident} - } - if inRange(ident, p) { - return &TypeInfo{Kind: KindVar, X: ident, Name: ident.Name, T: ident, Type: typ}, nil - } - } - } else if len(vs.Values) == 1 { - for n, ident := range vs.Names { - typ := "" - if !local { - if t, ok := w.curPackage.vars[ident.Name]; ok { - typ = t.T - } - } else { - typ, err := w.varValueType(vs.Values[0], n) - if err != nil { - if apiVerbose { - log.Printf("unknown type of variable3 %q, type %T, error = %v, pos=%s", - ident.Name, vs.Values[0], err, w.fset.Position(vs.Pos())) - } - typ = "unknown-type" - } - w.localvar[ident.Name] = &ExprType{T: typ, X: ident} - } - if inRange(ident, p) { - return &TypeInfo{Kind: KindVar, X: ident, Name: ident.Name, T: ident, Type: typ}, nil - } - } - } - return nil, fmt.Errorf("not lookup var local:%v value:%v type:s%T", local, w.nodeString(vs), vs) -} - -func (w *Walker) lookupConst(vs *ast.ValueSpec, p token.Pos, local bool) (*TypeInfo, error) { - if inRange(vs.Type, p) { - return w.lookupExprInfo(vs.Type, p) - } - for _, ident := range vs.Names { - typ := "" - if !local { - if t, ok := w.curPackage.consts[ident.Name]; ok { - typ = t.T - } - } else { - litType := "" - if vs.Type != nil { - litType = w.nodeString(vs.Type) - } else { - litType = w.lastConstType - if vs.Values != nil { - if len(vs.Values) != 1 { - if apiVerbose { - log.Printf("const %q, values: %#v", ident.Name, vs.Values) - } - return nil, nil - } - var err error - litType, err = w.constValueType(vs.Values[0]) - if err != nil { - if apiVerbose { - log.Printf("unknown kind in const %q (%T): %v", ident.Name, vs.Values[0], err) - } - litType = "unknown-type" - } - } - } - w.lastConstType = litType - typ = litType - w.localvar[ident.Name] = &ExprType{T: typ, X: ident} - } - if inRange(ident, p) { - return &TypeInfo{Kind: KindConst, X: ident, Name: ident.Name, T: ident, Type: typ}, nil - } - } - return nil, nil -} - -func (w *Walker) lookupType(ts *ast.TypeSpec, p token.Pos, local bool) (*TypeInfo, error) { - switch t := ts.Type.(type) { - case *ast.StructType: - if inRange(t.Fields, p) { - for _, fd := range t.Fields.List { - if inRange(fd.Type, p) { - return w.lookupExprInfo(fd.Type, p) - } - for _, ident := range fd.Names { - if inRange(ident, p) { - return &TypeInfo{Kind: KindField, X: ident, Name: ts.Name.Name + "." + ident.Name, T: fd.Type, Type: w.nodeString(w.namelessType(fd.Type))}, nil - } - } - } - } - return &TypeInfo{Kind: KindStruct, X: ts.Name, Name: ts.Name.Name, T: ts.Type, Type: "struct"}, nil - case *ast.InterfaceType: - if inRange(t.Methods, p) { - for _, fd := range t.Methods.List { - for _, ident := range fd.Names { - if inRange(ident, p) { - return &TypeInfo{Kind: KindMethod, X: ident, Name: ts.Name.Name + "." + ident.Name, T: ident, Type: w.nodeString(w.namelessType(fd.Type))}, nil - } - } - if inRange(fd.Type, p) { - return w.lookupExprInfo(fd.Type, p) - } - } - } - return &TypeInfo{Kind: KindInterface, X: ts.Name, Name: ts.Name.Name, T: ts.Type, Type: "interface"}, nil - default: - return &TypeInfo{Kind: KindType, X: ts.Name, Name: ts.Name.Name, T: ts.Type, Type: w.nodeString(w.namelessType(ts.Type))}, nil - } - return nil, nil -} - -func (w *Walker) lookupDecl(di ast.Decl, p token.Pos, local bool) (*TypeInfo, error) { - switch d := di.(type) { - case *ast.GenDecl: - switch d.Tok { - case token.IMPORT: - for _, sp := range d.Specs { - is := sp.(*ast.ImportSpec) - fpath, err := strconv.Unquote(is.Path.Value) - if err != nil { - return nil, err - } - name := path.Base(fpath) - if is.Name != nil { - name = is.Name.Name - } - if inRange(sp, p) { - return &TypeInfo{Kind: KindImport, X: is.Name, Name: name, T: is.Name, Type: fpath}, nil - } - } - case token.CONST: - for _, sp := range d.Specs { - if inRange(sp, p) { - return w.lookupConst(sp.(*ast.ValueSpec), p, local) - } else { - w.lookupConst(sp.(*ast.ValueSpec), p, local) - } - } - return nil, nil - case token.TYPE: - for _, sp := range d.Specs { - if inRange(sp, p) { - return w.lookupType(sp.(*ast.TypeSpec), p, local) - } else { - w.lookupType(sp.(*ast.TypeSpec), p, local) - } - } - case token.VAR: - for _, sp := range d.Specs { - if inRange(sp, p) { - return w.lookupVar(sp.(*ast.ValueSpec), p, local) - } else { - w.lookupVar(sp.(*ast.ValueSpec), p, local) - } - } - return nil, nil - default: - return nil, fmt.Errorf("unknown token type %d %T in GenDecl", d.Tok, d) - } - case *ast.FuncDecl: - if d.Type.Params != nil { - for _, fd := range d.Type.Params.List { - if inRange(fd, p) { - return w.lookupExprInfo(fd.Type, p) - } - for _, ident := range fd.Names { - if inRange(ident, p) { - info, err := w.lookupExprInfo(fd.Type, p) - if err == nil { - return &TypeInfo{Kind: KindParam, X: ident, Name: ident.Name, T: info.T, Type: info.Type}, nil - } - } - typ, err := w.varValueType(fd.Type, 0) - if err == nil { - w.localvar[ident.Name] = &ExprType{T: typ, X: ident} - } else if apiVerbose { - log.Println(err) - } - } - } - } - if d.Type.Results != nil { - for _, fd := range d.Type.Results.List { - if inRange(fd, p) { - return w.lookupExprInfo(fd.Type, p) - } - for _, ident := range fd.Names { - typ, err := w.varValueType(fd.Type, 0) - if err == nil { - w.localvar[ident.Name] = &ExprType{T: typ, X: ident} - } - } - } - } - if d.Recv != nil { - for _, fd := range d.Recv.List { - if inRange(fd, p) { - return w.lookupExprInfo(fd.Type, p) - } - for _, ident := range fd.Names { - w.localvar[ident.Name] = &ExprType{T: w.nodeString(fd.Type), X: ident} - } - } - } - if inRange(d.Body, p) { - return w.lookupStmt(d.Body, p) - } - var fname = d.Name.Name - kind := KindFunc - if d.Recv != nil { - recvTypeName, imp := baseTypeName(d.Recv.List[0].Type) - if imp { - return nil, nil - } - fname = recvTypeName + "." + d.Name.Name - kind = KindMethod - } - return &TypeInfo{Kind: kind, X: d.Name, Name: fname, T: d.Type, Type: w.nodeString(w.namelessType(d.Type))}, nil - default: - return nil, fmt.Errorf("unhandled %T, %#v\n", di, di) - } - return nil, fmt.Errorf("not lookupDecl %v %T", w.nodeString(di), di) -} - -func (w *Walker) lookupExprInfo(vi ast.Expr, p token.Pos) (*TypeInfo, error) { - _, info, err := w.lookupExpr(vi, p) - return info, err -} - -// lookupExpr , return name,info,error -func (w *Walker) lookupExpr(vi ast.Expr, p token.Pos) (string, *TypeInfo, error) { - if apiVerbose { - log.Printf("lookup expr %v %T", w.nodeString(vi), vi) - } - switch v := vi.(type) { - case *ast.BasicLit: - litType, ok := varType[v.Kind] - if !ok { - return "", nil, fmt.Errorf("unknown basic literal kind %#v", v) - } - name := v.Value - if len(name) >= 128 { - name = name[:128] + "..." - } - return litType, &TypeInfo{Kind: KindBuiltin, X: v, Name: name, T: v, Type: litType}, nil - case *ast.StarExpr: - s, info, err := w.lookupExpr(v.X, p) - if err != nil { - return "", nil, err - } - return "*" + s, &TypeInfo{Kind: info.Kind, X: v, Name: "*" + info.Name, T: info.T, Type: "*" + info.Type}, err - case *ast.InterfaceType: - return "interface{}", &TypeInfo{Kind: KindInterface, X: v, Name: w.nodeString(v), T: v, Type: "interface{}"}, nil - case *ast.Ellipsis: - s, info, err := w.lookupExpr(v.Elt, p) - if err != nil { - return "", nil, err - } - return "[]" + s, &TypeInfo{Kind: KindArray, X: v.Elt, Name: "..." + s, T: info.T, Type: "[]" + info.Type}, nil - case *ast.KeyValueExpr: - if inRange(v.Key, p) { - return w.lookupExpr(v.Key, p) - } else if inRange(v.Value, p) { - return w.lookupExpr(v.Value, p) - } - case *ast.CompositeLit: - typ, err := w.varValueType(v.Type, 0) - if err == nil { - typ = strings.TrimLeft(typ, "*") - if strings.HasPrefix(typ, "[]") { - typ = strings.TrimLeft(typ[2:], "*") - } - pos := strings.Index(typ, ".") - var pt *Package = w.curPackage - var pkgdot string - if pos != -1 { - pkg := typ[:pos] - typ = typ[pos+1:] - pt = w.findPackage(pkg) - if pt != nil { - pkgdot = pkg + "." - } - } - if pt != nil { - if ss, ok := pt.structs[typ]; ok { - for _, elt := range v.Elts { - if inRange(elt, p) { - if cl, ok := elt.(*ast.CompositeLit); ok { - for _, elt := range cl.Elts { - if inRange(elt, p) { - if kv, ok := elt.(*ast.KeyValueExpr); ok { - if inRange(kv.Key, p) { - n, t := w.findStructField(ss, w.nodeString(kv.Key)) - if n != nil { - return pkgdot + typ + "." + w.nodeString(kv.Key), &TypeInfo{Kind: KindField, X: kv.Key, Name: pkgdot + typ + "." + w.nodeString(kv.Key), T: n, Type: w.nodeString(w.namelessType(t))}, nil - } - } else if inRange(kv.Value, p) { - return w.lookupExpr(kv.Value, p) - } - } - } - } - } - if kv, ok := elt.(*ast.KeyValueExpr); ok { - if inRange(kv.Key, p) { - n, t := w.findStructField(ss, w.nodeString(kv.Key)) - if n != nil { - return typ + "." + w.nodeString(kv.Key), &TypeInfo{Kind: KindField, X: kv.Key, Name: typ + "." + w.nodeString(kv.Key), T: n, Type: w.nodeString(w.namelessType(t))}, nil - } - } else if inRange(kv.Value, p) { - return w.lookupExpr(kv.Value, p) - } - } - } - } - } - } - } - for _, elt := range v.Elts { - if inRange(elt, p) { - return w.lookupExpr(elt, p) - } - } - return w.lookupExpr(v.Type, p) - case *ast.UnaryExpr: - s, info, err := w.lookupExpr(v.X, p) - return v.Op.String() + s, info, err - case *ast.TypeAssertExpr: - if inRange(v.X, p) { - return w.lookupExpr(v.X, p) - } - return w.lookupExpr(v.Type, p) - case *ast.BinaryExpr: - if inRange(v.X, p) { - return w.lookupExpr(v.X, p) - } else if inRange(v.Y, p) { - return w.lookupExpr(v.Y, p) - } - return "", nil, nil - case *ast.CallExpr: - for _, arg := range v.Args { - if inRange(arg, p) { - return w.lookupExpr(arg, p) - } - } - switch ft := v.Fun.(type) { - case *ast.Ident: - if typ, ok := w.localvar[ft.Name]; ok { - return ft.Name, &TypeInfo{Kind: KindVar, X: ft, Name: ft.Name, T: typ.X, Type: typ.T}, nil - } - if typ, ok := w.curPackage.vars[ft.Name]; ok { - return ft.Name, &TypeInfo{Kind: KindVar, X: v, Name: ft.Name, T: typ.X, Type: typ.T}, nil - } - if typ, ok := w.curPackage.functions[ft.Name]; ok { - return ft.Name, &TypeInfo{Kind: KindFunc, X: ft, Name: ft.Name, T: typ.ft, Type: typ.sig}, nil - } - if typ, ok := w.curPackage.interfaces[ft.Name]; ok { - return ft.Name, &TypeInfo{Kind: KindInterface, X: ft, Name: ft.Name, T: typ, Type: w.nodeString(w.namelessType(typ))}, nil - } - if typ, ok := w.curPackage.interfaces[ft.Name]; ok { - return ft.Name, &TypeInfo{Kind: KindInterface, X: ft, Name: ft.Name, T: typ, Type: w.nodeString(w.namelessType(typ))}, nil - } - if typ, ok := w.curPackage.structs[ft.Name]; ok { - return ft.Name, &TypeInfo{Kind: KindStruct, X: ft, Name: ft.Name, T: typ, Type: w.nodeString(w.namelessType(typ))}, nil - } - if typ, ok := w.curPackage.types[ft.Name]; ok { - return ft.Name, &TypeInfo{Kind: KindType, X: ft, Name: ft.Name, T: typ, Type: w.nodeString(w.namelessType(typ))}, nil - } - if isBuiltinType(ft.Name) { - return ft.Name, &TypeInfo{Kind: KindBuiltin, X: ft, Name: ft.Name}, nil - } - return "", nil, fmt.Errorf("lookup unknown ident %v", v) - case *ast.FuncLit: - if inRange(ft.Body, p) { - info, err := w.lookupStmt(ft.Body, p) - if err == nil { - return "", info, nil - } - return "", nil, err - } - return w.lookupExpr(ft.Type, p) - case *ast.ParenExpr: - return w.lookupExpr(ft.X, p) - case *ast.SelectorExpr: - switch st := ft.X.(type) { - case *ast.Ident: - if inRange(st, p) { - return w.lookupExpr(st, p) - } - s, info, err := w.lookupExpr(st, p) - if err != nil { - return "", nil, err - } - typ := info.Type - if typ == "" { - typ = s - } - fname := typ + "." + ft.Sel.Name - typ = strings.TrimLeft(typ, "*") - if fn, ok := w.curPackage.functions[fname]; ok { - return fname, &TypeInfo{Kind: KindMethod, X: st, Name: fname, T: fn.ft, Type: w.nodeString(w.namelessType(fn.ft))}, nil - } - info, e := w.lookupFunction(typ, ft.Sel.Name) - if e != nil { - return "", nil, e - } - return fname, info, nil - case *ast.SelectorExpr: - if inRange(st.X, p) { - return w.lookupExpr(st.X, p) - } - if inRange(st, p) { - return w.lookupExpr(st, p) - } - typ, err := w.varValueType(st, 0) - if err != nil { - return "", nil, err - } - /* - typ = strings.TrimLeft(typ, "*") - if t := w.curPackage.findType(typ); t != nil { - if ss, ok := t.(*ast.StructType); ok { - for _, fi := range ss.Fields.List { - for _, n := range fi.Names { - if n.Name == st.Sel.Name { - //return fname, &TypeInfo{Kind: KindField, X: n, Name: fname, T: fi.Type, Type: w.nodeString(w.namelessType(fi.Type))}, nil - typ = w.nodeString(w.namelessType(fi.Type)) - } - } - } - } - } - */ - info, e := w.lookupFunction(typ, ft.Sel.Name) - if e != nil { - return "", nil, e - } - return typ + "." + st.Sel.Name, info, nil - case *ast.CallExpr: - if inRange(st, p) { - return w.lookupExpr(st, p) - } - if info, err := w.lookupExprInfo(st, p); err == nil { - if fn, ok := info.X.(*ast.FuncType); ok { - if fn.Results.NumFields() == 1 { - info, err := w.lookupFunction(w.nodeString(fn.Results.List[0].Type), ft.Sel.Name) - if err == nil { - return info.Name, info, err - } - return "", nil, err - } - } - } - //w.lookupFunction(w.nodeString(info.X)) - typ, err := w.varValueType(st, 0) - if err != nil { - return "", nil, err - } - info, e := w.lookupFunction(typ, ft.Sel.Name) - if e != nil { - return "", nil, e - } - return typ + "." + ft.Sel.Name, info, nil - case *ast.TypeAssertExpr: - if inRange(st.X, p) { - return w.lookupExpr(st.X, p) - } - typ := w.nodeString(w.namelessType(st.Type)) - info, e := w.lookupFunction(typ, ft.Sel.Name) - if e != nil { - return "", nil, e - } - return typ + "." + ft.Sel.Name, info, nil - default: - return "", nil, fmt.Errorf("not find select %v %T", v, st) - } - } - return "", nil, fmt.Errorf("not find call %v %T", w.nodeString(v), v.Fun) - case *ast.SelectorExpr: - switch st := v.X.(type) { - case *ast.Ident: - if inRange(st, p) { - return w.lookupExpr(st, p) - } - info, err := w.lookupSelector(st.Name, v.Sel.Name) - if err != nil { - return "", nil, err - } - return st.Name + "." + v.Sel.Name, info, nil - // case *ast.CallExpr: - // typ, err := w.varValueType(v.X, index) - // if err == nil { - // if strings.HasPrefix(typ, "*") { - // typ = typ[1:] - // } - // t := w.curPackage.findType(typ) - // if st, ok := t.(*ast.StructType); ok { - // for _, fi := range st.Fields.List { - // for _, n := range fi.Names { - // if n.Name == v.Sel.Name { - // return w.varValueType(fi.Type, index) - // } - // } - // } - // } - // } - case *ast.SelectorExpr: - if inRange(st.X, p) { - return w.lookupExpr(st.X, p) - } - - if inRange(st, p) { - return w.lookupExpr(st, p) - } - - typ, err := w.varValueType(st, 0) - if err == nil { - info, err := w.lookupSelector(typ, v.Sel.Name) - if err != nil { - return "", nil, err - } - return typ + v.Sel.Name, info, nil - } - // case *ast.IndexExpr: - // typ, err := w.varValueType(st.X, 0) - // log.Println(typ, err) - // if err == nil { - // if strings.HasPrefix(typ, "[]") { - // return w.varSelectorType(typ[2:], v.Sel.Name) - // } - // } - } - return "", nil, fmt.Errorf("unknown lookup selector expr: %T %s.%s", v.X, w.nodeString(v.X), v.Sel) - - // s, info, err := w.lookupExpr(v.X, p) - // if err != nil { - // return "", "", err - // } - // if strings.HasPrefix(s, "*") { - // s = s[1:] - // } - // if inRange(v.X, p) { - // return s, info, err - // } - // t := w.curPackage.findType(s) - // fname := s + "." + v.Sel.Name - // if st, ok := t.(*ast.StructType); ok { - // for _, fi := range st.Fields.List { - // for _, n := range fi.Names { - // if n.Name == v.Sel.Name { - // return fname, fmt.Sprintf("var,%s,%s,%s", fname, w.nodeString(w.namelessType(fi.Type)), w.fset.Position(n.Pos())), nil - // } - // } - // } - // } - // log.Println(">>", s) - // info, e := w.lookupSelector(s, v.Sel.Name) - // return fname, info, e - case *ast.Ident: - if typ, ok := w.localvar[v.Name]; ok { - return typ.T, &TypeInfo{Kind: KindVar, X: v, Name: v.Name, T: typ.X, Type: typ.T}, nil - } - if typ, ok := w.curPackage.interfaces[v.Name]; ok { - return v.Name, &TypeInfo{Kind: KindInterface, X: v, Name: v.Name, T: typ, Type: "interface"}, nil - } - if typ, ok := w.curPackage.structs[v.Name]; ok { - return v.Name, &TypeInfo{Kind: KindStruct, X: v, Name: v.Name, T: typ, Type: "struct"}, nil - } - if typ, ok := w.curPackage.types[v.Name]; ok { - return v.Name, &TypeInfo{Kind: KindType, X: v, Name: v.Name, T: typ, Type: v.Name}, nil - } - if typ, ok := w.curPackage.vars[v.Name]; ok { - return v.Name, &TypeInfo{Kind: KindVar, X: v, Name: v.Name, T: typ.X, Type: typ.T}, nil - } - if typ, ok := w.curPackage.consts[v.Name]; ok { - return v.Name, &TypeInfo{Kind: KindConst, X: v, Name: v.Name, T: typ.X, Type: typ.T}, nil - } - if typ, ok := w.curPackage.functions[v.Name]; ok { - return v.Name, &TypeInfo{Kind: KindFunc, X: typ.ft, Name: v.Name, T: typ.ft, Type: typ.sig}, nil - } - if p := w.findPackage(v.Name); p != nil { - return v.Name, &TypeInfo{Kind: KindImport, X: v, Name: v.Name, Type: p.name}, nil - } - if isBuiltinType(v.Name) { - return v.Name, &TypeInfo{Kind: KindBuiltin, Name: v.Name}, nil - } - return "", nil, fmt.Errorf("lookup unknown ident %v", v) - //return v.Name, &TypeInfo{Kind: KindVar, X: v, Name: v.Name, T: v, Type: v.Name}, nil - case *ast.IndexExpr: - if inRange(v.Index, p) { - return w.lookupExpr(v.Index, p) - } - return w.lookupExpr(v.X, p) - case *ast.ParenExpr: - return w.lookupExpr(v.X, p) - case *ast.FuncLit: - if inRange(v.Type, p) { - return w.lookupExpr(v.Type, p) - } else { - w.lookupExpr(v.Type, p) - } - typ, err := w.varValueType(v.Type, 0) - if err != nil { - return "", nil, err - } - info, e := w.lookupStmt(v.Body, p) - if e != nil { - return "", nil, err - } - return typ, info, nil - case *ast.FuncType: - if v.Params != nil { - for _, fd := range v.Params.List { - if inRange(fd, p) { - return w.lookupExpr(fd.Type, p) - } - for _, ident := range fd.Names { - typ, err := w.varValueType(fd.Type, 0) - if err == nil { - w.localvar[ident.Name] = &ExprType{T: typ, X: ident} - } - } - } - } - if v.Results != nil { - for _, fd := range v.Results.List { - if inRange(fd, p) { - return w.lookupExpr(fd.Type, p) - } - for _, ident := range fd.Names { - typ, err := w.varValueType(fd.Type, 0) - if err == nil { - w.localvar[ident.Name] = &ExprType{T: typ, X: ident} - } - } - } - } - return "", nil, nil - case *ast.ArrayType: - s, info, err := w.lookupExpr(v.Elt, p) - if err != nil { - return "", nil, err - } - return "[]" + s, &TypeInfo{Kind: KindArray, Name: "[]" + info.Name, Type: "[]" + info.Type, T: info.T}, nil - case *ast.SliceExpr: - if inRange(v.High, p) { - return w.lookupExpr(v.High, p) - } else if inRange(v.Low, p) { - return w.lookupExpr(v.Low, p) - } - return w.lookupExpr(v.X, p) - case *ast.MapType: - if inRange(v.Key, p) { - return w.lookupExpr(v.Key, p) - } else if inRange(v.Value, p) { - return w.lookupExpr(v.Value, p) - } - typ, err := w.varValueType(v, 0) - if err != nil { - return "", nil, err - } - return typ, &TypeInfo{Kind: KindMap, X: v, Name: w.nodeString(v), T: v, Type: typ}, nil - case *ast.ChanType: - if inRange(v.Value, p) { - return w.lookupExpr(v.Value, p) - } - typ, err := w.varValueType(v, 0) - if err != nil { - return "", nil, err - } - return typ, &TypeInfo{Kind: KindChan, X: v, Name: w.nodeString(v), T: v, Type: typ}, nil - default: - return "", nil, fmt.Errorf("not lookupExpr %v %T", w.nodeString(v), v) - } - return "", nil, fmt.Errorf("not lookupExpr %v %T", w.nodeString(vi), vi) -} - -func (w *Walker) walkFile(file *ast.File) { - // Not entering a scope here; file boundaries aren't interesting. - for _, di := range file.Decls { - switch d := di.(type) { - case *ast.GenDecl: - switch d.Tok { - case token.IMPORT: - for _, sp := range d.Specs { - is := sp.(*ast.ImportSpec) - fpath, err := strconv.Unquote(is.Path.Value) - if err != nil { - log.Fatal(err) - } - //name := path.Base(fpath) - name := fpath - if i := strings.LastIndexAny(name, ".-/\\"); i > 0 { - name = name[i+1:] - } - if is.Name != nil { - name = is.Name.Name - } - w.selectorFullPkg[name] = fpath - } - case token.CONST: - for _, sp := range d.Specs { - w.walkConst(sp.(*ast.ValueSpec)) - } - case token.TYPE: - for _, sp := range d.Specs { - w.walkTypeSpec(sp.(*ast.TypeSpec)) - } - case token.VAR: - for _, sp := range d.Specs { - w.walkVar(sp.(*ast.ValueSpec)) - } - default: - log.Fatalf("unknown token type %d in GenDecl", d.Tok) - } - case *ast.FuncDecl: - // Ignore. Handled in subsequent pass, by go/doc. - default: - log.Printf("unhandled %T, %#v\n", di, di) - printer.Fprint(os.Stderr, w.fset, di) - os.Stderr.Write([]byte("\n")) - } - } -} - -var constType = map[token.Token]string{ - token.INT: "ideal-int", - token.FLOAT: "ideal-float", - token.STRING: "ideal-string", - token.CHAR: "ideal-char", - token.IMAG: "ideal-imag", -} - -var varType = map[token.Token]string{ - token.INT: "int", - token.FLOAT: "float64", - token.STRING: "string", - token.CHAR: "rune", - token.IMAG: "complex128", -} - -var builtinTypes = []string{ - "bool", "byte", "complex64", "complex128", "error", "float32", "float64", - "int", "int8", "int16", "int32", "int64", "rune", "string", - "uint", "uint8", "uint16", "uint32", "uint64", "uintptr", -} - -func isBuiltinType(typ string) bool { - for _, v := range builtinTypes { - if v == typ { - return true - } - } - return false -} - -func constTypePriority(typ string) int { - switch typ { - case "complex128": - return 100 - case "ideal-imag": - return 99 - case "complex64": - return 98 - case "float64": - return 97 - case "ideal-float": - return 96 - case "float32": - return 95 - case "int64": - return 94 - case "int", "uint", "uintptr": - return 93 - case "ideal-int": - return 92 - case "int16", "uint16", "int8", "uint8", "byte": - return 91 - case "ideal-char": - return 90 - } - return 101 -} - -func (w *Walker) constRealType(typ string) string { - pos := strings.Index(typ, ".") - if pos >= 0 { - pkg := typ[:pos] - if pkg == "C" { - return "int" - } - typ = typ[pos+1:] - if p := w.findPackage(pkg); p != nil { - ret := p.findType(typ) - if ret != nil { - return w.nodeString(w.namelessType(ret)) - } - } - } else { - ret := w.curPackage.findType(typ) - if ret != nil { - return w.nodeString(w.namelessType(ret)) - } - } - return typ -} - -func (w *Walker) constValueType(vi interface{}) (string, error) { - switch v := vi.(type) { - case *ast.BasicLit: - litType, ok := constType[v.Kind] - if !ok { - return "", fmt.Errorf("unknown basic literal kind %#v", v) - } - return litType, nil - case *ast.UnaryExpr: - return w.constValueType(v.X) - case *ast.SelectorExpr: - lhs := w.nodeString(v.X) - rhs := w.nodeString(v.Sel) - //if CGO - if lhs == "C" { - return lhs + "." + rhs, nil - } - if p := w.findPackage(lhs); p != nil { - if ret, ok := p.consts[rhs]; ok { - return w.pkgRetType(p.name, ret.T), nil - } - } - return "", fmt.Errorf("unknown constant reference to %s.%s", lhs, rhs) - case *ast.Ident: - if v.Name == "iota" { - return "ideal-int", nil // hack. - } - if v.Name == "false" || v.Name == "true" { - return "bool", nil - } - if t, ok := w.curPackage.consts[v.Name]; ok { - return t.T, nil - } - return constDepPrefix + v.Name, nil - case *ast.BinaryExpr: - //== > < ! != >= <= - if v.Op == token.EQL || v.Op == token.LSS || v.Op == token.GTR || v.Op == token.NOT || - v.Op == token.NEQ || v.Op == token.LEQ || v.Op == token.GEQ { - return "bool", nil - } - left, err := w.constValueType(v.X) - if err != nil { - return "", err - } - if v.Op == token.SHL || v.Op == token.SHR { - return left, err - } - right, err := w.constValueType(v.Y) - if err != nil { - return "", err - } - //const left != right , one or two is ideal- - if left != right { - if strings.HasPrefix(left, constDepPrefix) && strings.HasPrefix(right, constDepPrefix) { - // Just pick one. - // e.g. text/scanner GoTokens const-dependency:ScanIdents, const-dependency:ScanFloats - return left, nil - } - lp := constTypePriority(w.constRealType(left)) - rp := constTypePriority(w.constRealType(right)) - if lp >= rp { - return left, nil - } else { - return right, nil - } - return "", fmt.Errorf("in BinaryExpr, unhandled type mismatch; left=%q, right=%q", left, right) - } - return left, nil - case *ast.CallExpr: - // Not a call, but a type conversion. - typ := w.nodeString(v.Fun) - switch typ { - case "complex": - return "complex128", nil - case "real", "imag": - return "float64", nil - } - return typ, nil - case *ast.ParenExpr: - return w.constValueType(v.X) - } - return "", fmt.Errorf("unknown const value type %T", vi) -} - -func (w *Walker) pkgRetType(pkg, ret string) string { - pkg = pkg[strings.LastIndex(pkg, "/")+1:] - if strings.HasPrefix(ret, "[]") { - return "[]" + w.pkgRetType(pkg, ret[2:]) - } - if strings.HasPrefix(ret, "*") { - return "*" + w.pkgRetType(pkg, ret[1:]) - } - if ast.IsExported(ret) { - return pkg + "." + ret - } - return ret -} - -func (w *Walker) findStructFieldType(st ast.Expr, name string) ast.Expr { - _, expr := w.findStructField(st, name) - return expr -} - -func (w *Walker) findStructFieldFunction(st ast.Expr, name string) (*TypeInfo, error) { - if s, ok := st.(*ast.StructType); ok { - for _, fi := range s.Fields.List { - typ := fi.Type - if fi.Names == nil { - switch v := typ.(type) { - case *ast.Ident: - if t := w.curPackage.findType(v.Name); t != nil { - return w.lookupFunction(v.Name, name) - } - case *ast.SelectorExpr: - pt := w.nodeString(typ) - pos := strings.Index(pt, ".") - if pos != -1 { - if p := w.findPackage(pt[:pos]); p != nil { - if t := p.findType(pt[pos+1:]); t != nil { - return w.lookupFunction(pt, name) - } - } - } - case *ast.StarExpr: - return w.findStructFieldFunction(v.X, name) - default: - if apiVerbose { - log.Printf("unable to handle embedded %T", typ) - } - } - } - } - } - return nil, nil -} - -func (w *Walker) findStructField(st ast.Expr, name string) (*ast.Ident, ast.Expr) { - if s, ok := st.(*ast.StructType); ok { - for _, fi := range s.Fields.List { - typ := fi.Type - for _, n := range fi.Names { - if n.Name == name { - return n, fi.Type - } - } - if fi.Names == nil { - switch v := typ.(type) { - case *ast.Ident: - if t := w.curPackage.findType(v.Name); t != nil { - if v.Name == name { - return v, v - } - id, expr := w.findStructField(t, name) - if id != nil { - return id, expr - } - } - case *ast.StarExpr: - switch vv := v.X.(type) { - case *ast.Ident: - if t := w.curPackage.findType(vv.Name); t != nil { - if vv.Name == name { - return vv, v.X - } - id, expr := w.findStructField(t, name) - if id != nil { - return id, expr - } - } - case *ast.SelectorExpr: - pt := w.nodeString(typ) - pos := strings.Index(pt, ".") - if pos != -1 { - if p := w.findPackage(pt[:pos]); p != nil { - if t := p.findType(pt[pos+1:]); t != nil { - return w.findStructField(t, name) - } - } - } - default: - if apiVerbose { - log.Printf("unable to handle embedded starexpr before %T", typ) - } - } - case *ast.SelectorExpr: - pt := w.nodeString(typ) - pos := strings.Index(pt, ".") - if pos != -1 { - if p := w.findPackage(pt[:pos]); p != nil { - if t := p.findType(pt[pos+1:]); t != nil { - return w.findStructField(t, name) - } - } - } - default: - if apiVerbose { - log.Printf("unable to handle embedded %T", typ) - } - } - } - } - } - return nil, nil -} - -func (w *Walker) lookupFunction(name, sel string) (*TypeInfo, error) { - name = strings.TrimLeft(name, "*") - if p := w.findPackage(name); p != nil { - fn := p.findCallFunc(sel) - if fn != nil { - return &TypeInfo{Kind: KindFunc, X: fn, Name: name + "." + sel, T: fn, Type: w.nodeString(w.namelessType(fn))}, nil - } - } - pos := strings.Index(name, ".") - if pos != -1 { - pkg := name[:pos] - typ := name[pos+1:] - if p := w.findPackage(pkg); p != nil { - if ident, fn := p.findMethod(typ, sel); fn != nil { - return &TypeInfo{Kind: KindMethod, X: fn, Name: name + "." + sel, T: ident, Type: w.nodeString(w.namelessType(fn))}, nil - } - } - return nil, fmt.Errorf("not lookup pkg type function pkg: %s, %s. %s. %s", name, pkg, typ, sel) - } - - //find local var.func() - if ns, nt, n := w.resolveName(name); n >= 0 { - var vt string - if nt != nil { - vt = w.nodeString(w.namelessType(nt)) - } else if ns != nil { - typ, err := w.varValueType(ns, n) - if err == nil { - vt = typ - } - } else { - typ := w.curPackage.findSelectorType(name) - if typ != nil { - vt = w.nodeString(w.namelessType(typ)) - } - } - if strings.HasPrefix(vt, "*") { - vt = vt[1:] - } - if vt == "error" && sel == "Error" { - return &TypeInfo{Kind: KindBuiltin, Name: "error.Error", Type: "()string"}, nil - } - if fn, ok := w.curPackage.functions[vt+"."+sel]; ok { - return &TypeInfo{Kind: KindMethod, X: fn.ft, Name: name + "." + sel, T: fn.ft, Type: w.nodeString(w.namelessType(fn))}, nil - } - } - if typ, ok := w.curPackage.structs[name]; ok { - if fn, ok := w.curPackage.functions[name+"."+sel]; ok { - return &TypeInfo{Kind: KindMethod, X: fn.ft, Name: name + "." + sel, T: fn.ft, Type: w.nodeString(w.namelessType(fn.ft))}, nil - } - if info, err := w.findStructFieldFunction(typ, sel); err == nil { - return info, nil - } - // struct field is type function - if ft := w.findStructFieldType(typ, sel); ft != nil { - typ, err := w.varValueType(ft, 0) - if err != nil { - typ = w.nodeString(ft) - } - return &TypeInfo{Kind: KindField, X: ft, Name: name + "." + sel, T: ft, Type: typ}, nil - } - } - - if ident, fn := w.curPackage.findMethod(name, sel); ident != nil && fn != nil { - return &TypeInfo{Kind: KindMethod, X: fn, Name: name + "." + sel, T: ident, Type: w.nodeString(w.namelessType(fn))}, nil - } - - if p := w.findPackage(name); p != nil { - fn := p.findCallFunc(sel) - if fn != nil { - return &TypeInfo{Kind: KindFunc, X: fn, Name: name + "." + sel, T: fn, Type: w.nodeString(w.namelessType(fn))}, nil - } - return nil, fmt.Errorf("not find pkg func0 %v.%v", p.name, sel) - } - return nil, fmt.Errorf("not lookup func %v.%v", name, sel) -} - -func (w *Walker) varFunctionType(name, sel string, index int) (string, error) { - name = strings.TrimLeft(name, "*") - pos := strings.Index(name, ".") - if pos != -1 { - pkg := name[:pos] - typ := name[pos+1:] - - if p := w.findPackage(pkg); p != nil { - _, fn := p.findMethod(typ, sel) - if fn != nil { - ret := funcRetType(fn, index) - if ret != nil { - return w.pkgRetType(p.name, w.nodeString(w.namelessType(ret))), nil - } - } - } - return "", fmt.Errorf("unknown pkg type function pkg: %s.%s.%s", pkg, typ, sel) - } - //find local var - if v, ok := w.localvar[name]; ok { - vt := v.T - if strings.HasPrefix(vt, "*") { - vt = vt[1:] - } - if vt == "error" && sel == "Error" { - return "string", nil - } - typ, err := w.varFunctionType(vt, sel, 0) - if err == nil { - return typ, nil - } - } - //find global var.func() - if ns, nt, n := w.resolveName(name); n >= 0 { - var vt string - if nt != nil { - vt = w.nodeString(w.namelessType(nt)) - } else if ns != nil { - typ, err := w.varValueType(ns, n) - if err == nil { - vt = typ - } - } else { - typ := w.curPackage.findSelectorType(name) - if typ != nil { - vt = w.nodeString(w.namelessType(typ)) - } - } - if strings.HasPrefix(vt, "*") { - vt = vt[1:] - } - if vt == "error" && sel == "Error" { - return "string", nil - } - if fn, ok := w.curPackage.functions[vt+"."+sel]; ok { - return w.nodeString(w.namelessType(funcRetType(fn.ft, index))), nil - } - } - if typ, ok := w.curPackage.structs[name]; ok { - if ft := w.findStructFieldType(typ, sel); ft != nil { - return w.varValueType(ft, index) - } - } - //find pkg.func() - if p := w.findPackage(name); p != nil { - typ := p.findCallType(sel, index) - if typ != nil { - return w.pkgRetType(p.name, w.nodeString(w.namelessType(typ))), nil - } - //log.Println("->", p.functions) - return "", fmt.Errorf("not find pkg func1 %v . %v", p.name, sel) - } - return "", fmt.Errorf("not find func %v.%v", name, sel) -} - -func (w *Walker) lookupSelector(name string, sel string) (*TypeInfo, error) { - name = strings.TrimLeft(name, "*") - pos := strings.Index(name, ".") - if pos != -1 { - pkg := name[:pos] - typ := name[pos+1:] - if p := w.findPackage(pkg); p != nil { - t := p.findType(typ) - if t != nil { - typ := w.findStructFieldType(t, sel) - if typ != nil { - return &TypeInfo{Kind: KindField, X: typ, Name: name + "." + sel, T: typ, Type: w.pkgRetType(p.name, w.nodeString(w.namelessType(typ)))}, nil - } - } - } - return nil, fmt.Errorf("lookup unknown pkg type selector pkg: %s.%s %s", pkg, typ, sel) - } - - if lv, ok := w.localvar[name]; ok { - return w.lookupSelector(lv.T, sel) - } - - vs, vt, n := w.resolveName(name) - if n >= 0 { - var typ string - if vt != nil { - typ = w.nodeString(w.namelessType(vt)) - } else { - typ, _ = w.varValueType(vs, n) - } - if strings.HasPrefix(typ, "*") { - typ = typ[1:] - } - //typ is type, find real type - for k, v := range w.curPackage.types { - if k == typ { - typ = w.nodeString(w.namelessType(v)) - } - } - pos := strings.Index(typ, ".") - if pos == -1 { - t := w.curPackage.findType(typ) - if t != nil { - typ := w.findStructFieldType(t, sel) - if typ != nil { - return &TypeInfo{Kind: KindField, X: typ, Name: name + "." + sel, T: typ, Type: w.nodeString(w.namelessType(typ))}, nil - } - } - } else { - name := typ[:pos] - typ = typ[pos+1:] - if p := w.findPackage(name); p != nil { - t := p.findType(typ) - if t != nil { - typ := w.findStructFieldType(t, sel) - if typ != nil { - return &TypeInfo{Kind: KindField, X: typ, Name: name + "." + sel, T: typ, Type: w.nodeString(w.namelessType(typ))}, nil - } - } - } - } - } - if p := w.findPackage(name); p != nil { - typ := p.findSelectorType(sel) - if typ != nil { - return &TypeInfo{Kind: KindType, X: typ, Name: name + "." + sel, T: typ, Type: w.pkgRetType(p.name, w.nodeString(w.namelessType(typ)))}, nil - } - } - t := w.curPackage.findType(name) - if t != nil { - typ := w.findStructFieldType(t, sel) - if typ != nil { - return &TypeInfo{Kind: KindField, X: typ, Name: name + "." + sel, T: typ, Type: w.nodeString(w.namelessType(typ))}, nil - } - } - if t, ok := w.curPackage.types[name]; ok { - return w.lookupSelector(w.nodeString(t), sel) - } - return nil, fmt.Errorf("unknown selector expr ident: %s.%s", name, sel) -} - -func (w *Walker) varSelectorType(name string, sel string) (string, error) { - name = strings.TrimLeft(name, "*") - pos := strings.Index(name, ".") - if pos != -1 { - pkg := name[:pos] - typ := name[pos+1:] - if p := w.findPackage(pkg); p != nil { - t := p.findType(typ) - if t != nil { - typ := w.findStructFieldType(t, sel) - if typ != nil { - return w.pkgRetType(pkg, w.nodeString(w.namelessType(typ))), nil - } - } - } - return "", fmt.Errorf("unknown pkg type selector pkg: %s.%s.%s", pkg, typ, sel) - } - //check local - if lv, ok := w.localvar[name]; ok { - return w.varSelectorType(lv.T, sel) - } - //check struct - if t := w.curPackage.findType(name); t != nil { - typ := w.findStructFieldType(t, sel) - if typ != nil { - return w.nodeString(w.namelessType(typ)), nil - } - } - //check var - vs, vt, n := w.resolveName(name) - if n >= 0 { - var typ string - if vt != nil { - typ = w.nodeString(w.namelessType(vt)) - } else { - typ, _ = w.varValueType(vs, n) - } - if strings.HasPrefix(typ, "*") { - typ = typ[1:] - } - //typ is type, find real type - for k, v := range w.curPackage.types { - if k == typ { - typ = w.nodeString(w.namelessType(v)) - } - } - pos := strings.Index(typ, ".") - if pos == -1 { - t := w.curPackage.findType(typ) - if t != nil { - typ := w.findStructFieldType(t, sel) - if typ != nil { - return w.nodeString(w.namelessType(typ)), nil - } - } - } else { - name := typ[:pos] - typ = typ[pos+1:] - if p := w.findPackage(name); p != nil { - t := p.findType(typ) - if t != nil { - typ := w.findStructFieldType(t, sel) - if typ != nil { - return w.nodeString(w.namelessType(typ)), nil - } - } - } - } - } - - if p := w.findPackage(name); p != nil { - typ := p.findSelectorType(sel) - if typ != nil { - return w.pkgRetType(p.name, w.nodeString(w.namelessType(typ))), nil - } - } - return "", fmt.Errorf("unknown var selector expr ident: %s.%s", name, sel) -} - -func (w *Walker) varValueType(vi ast.Expr, index int) (string, error) { - if vi == nil { - return "", nil - } - switch v := vi.(type) { - case *ast.BasicLit: - litType, ok := varType[v.Kind] - if !ok { - return "", fmt.Errorf("unknown basic literal kind %#v", v) - } - return litType, nil - case *ast.CompositeLit: - return w.nodeString(v.Type), nil - case *ast.FuncLit: - return w.nodeString(w.namelessType(v.Type)), nil - case *ast.InterfaceType: - return w.nodeString(v), nil - case *ast.Ellipsis: - typ, err := w.varValueType(v.Elt, index) - if err != nil { - return "", err - } - return "[]" + typ, nil - case *ast.StarExpr: - typ, err := w.varValueType(v.X, index) - if err != nil { - return "", err - } - return "*" + typ, err - case *ast.UnaryExpr: - if v.Op == token.AND { - typ, err := w.varValueType(v.X, index) - return "*" + typ, err - } - return "", fmt.Errorf("unknown unary expr: %#v", v) - case *ast.SelectorExpr: - switch st := v.X.(type) { - case *ast.Ident: - return w.varSelectorType(st.Name, v.Sel.Name) - case *ast.CallExpr: - typ, err := w.varValueType(v.X, index) - if err == nil { - if strings.HasPrefix(typ, "*") { - typ = typ[1:] - } - t := w.curPackage.findType(typ) - if st, ok := t.(*ast.StructType); ok { - for _, fi := range st.Fields.List { - for _, n := range fi.Names { - if n.Name == v.Sel.Name { - return w.varValueType(fi.Type, index) - } - } - } - } - } - case *ast.SelectorExpr: - typ, err := w.varValueType(v.X, index) - if err == nil { - return w.varSelectorType(typ, v.Sel.Name) - } - case *ast.IndexExpr: - typ, err := w.varValueType(st.X, index) - if err == nil { - if strings.HasPrefix(typ, "[]") { - return w.varSelectorType(typ[2:], v.Sel.Name) - } - } - case *ast.CompositeLit: - typ, err := w.varValueType(st.Type, 0) - if err == nil { - //log.Println(typ, v.Sel.Name) - t, err := w.varSelectorType(typ, v.Sel.Name) - if err == nil { - return t, nil - } - } - } - return "", fmt.Errorf("var unknown selector expr: %T %s.%s", v.X, w.nodeString(v.X), v.Sel) - case *ast.Ident: - if v.Name == "true" || v.Name == "false" { - return "bool", nil - } - if isBuiltinType(v.Name) { - return v.Name, nil - } - if lv, ok := w.localvar[v.Name]; ok { - return lv.T, nil - } - vt := w.curPackage.findType(v.Name) - if vt != nil { - if _, ok := vt.(*ast.StructType); ok { - return v.Name, nil - } - return w.nodeString(vt), nil - } - vs, _, n := w.resolveName(v.Name) - if n >= 0 { - return w.varValueType(vs, n) - } - return "", fmt.Errorf("unresolved identifier: %q", v.Name) - case *ast.BinaryExpr: - //== > < ! != >= <= - if v.Op == token.EQL || v.Op == token.LSS || v.Op == token.GTR || v.Op == token.NOT || - v.Op == token.NEQ || v.Op == token.LEQ || v.Op == token.GEQ { - return "bool", nil - } - left, err := w.varValueType(v.X, index) - if err != nil { - return "", err - } - right, err := w.varValueType(v.Y, index) - if err != nil { - return "", err - } - if left != right { - return "", fmt.Errorf("in BinaryExpr, unhandled type mismatch; left=%q, right=%q", left, right) - } - return left, nil - case *ast.ParenExpr: - return w.varValueType(v.X, index) - case *ast.CallExpr: - switch ft := v.Fun.(type) { - case *ast.ArrayType: - return w.nodeString(v.Fun), nil - case *ast.Ident: - switch ft.Name { - case "make": - return w.nodeString(w.namelessType(v.Args[0])), nil - case "new": - return "*" + w.nodeString(w.namelessType(v.Args[0])), nil - case "append": - return w.varValueType(v.Args[0], 0) - case "recover": - return "interface{}", nil - case "len", "cap", "copy": - return "int", nil - case "complex": - return "complex128", nil - case "real": - return "float64", nil - case "imag": - return "float64", nil - } - if isBuiltinType(ft.Name) { - return ft.Name, nil - } - typ := w.curPackage.findCallType(ft.Name, index) - if typ != nil { - return w.nodeString(w.namelessType(typ)), nil - } - //if local var type - if fn, ok := w.localvar[ft.Name]; ok { - typ := fn.T - if strings.HasPrefix(typ, "func(") { - expr, err := parser.ParseExpr(typ + "{}") - if err == nil { - if fl, ok := expr.(*ast.FuncLit); ok { - retType := funcRetType(fl.Type, index) - if retType != nil { - return w.nodeString(w.namelessType(retType)), nil - } - } - } - } - } - //if var is func() type - vs, _, n := w.resolveName(ft.Name) - if n >= 0 { - if vs != nil { - typ, err := w.varValueType(vs, n) - if err == nil { - if strings.HasPrefix(typ, "func(") { - expr, err := parser.ParseExpr(typ + "{}") - if err == nil { - if fl, ok := expr.(*ast.FuncLit); ok { - retType := funcRetType(fl.Type, index) - if retType != nil { - return w.nodeString(w.namelessType(retType)), nil - } - } - } - } - } - } - } - return "", fmt.Errorf("unknown funcion %s %s", w.curPackageName, ft.Name) - case *ast.SelectorExpr: - typ, err := w.varValueType(ft.X, index) - if err == nil { - if strings.HasPrefix(typ, "*") { - typ = typ[1:] - } - retType := w.curPackage.findCallType(typ+"."+ft.Sel.Name, index) - if retType != nil { - return w.nodeString(w.namelessType(retType)), nil - } - } - switch st := ft.X.(type) { - case *ast.Ident: - return w.varFunctionType(st.Name, ft.Sel.Name, index) - case *ast.CallExpr: - typ, err := w.varValueType(st, 0) - if err != nil { - return "", err - } - return w.varFunctionType(typ, ft.Sel.Name, index) - case *ast.SelectorExpr: - typ, err := w.varValueType(st, index) - if err == nil { - return w.varFunctionType(typ, ft.Sel.Name, index) - } - case *ast.IndexExpr: - typ, err := w.varValueType(st.X, index) - if err == nil { - if strings.HasPrefix(typ, "[]") { - return w.varFunctionType(typ[2:], ft.Sel.Name, index) - } - } - case *ast.TypeAssertExpr: - typ := w.nodeString(w.namelessType(st.Type)) - typ = strings.TrimLeft(typ, "*") - return w.varFunctionType(typ, ft.Sel.Name, index) - } - return "", fmt.Errorf("unknown var function selector %v %T", w.nodeString(ft.X), ft.X) - case *ast.FuncLit: - retType := funcRetType(ft.Type, index) - if retType != nil { - return w.nodeString(w.namelessType(retType)), nil - } - case *ast.CallExpr: - typ, err := w.varValueType(v.Fun, 0) - if err == nil && strings.HasPrefix(typ, "func(") { - expr, err := parser.ParseExpr(typ + "{}") - if err == nil { - if fl, ok := expr.(*ast.FuncLit); ok { - retType := funcRetType(fl.Type, index) - if retType != nil { - return w.nodeString(w.namelessType(retType)), nil - } - } - } - } - } - return "", fmt.Errorf("not a known function %T %v", v.Fun, w.nodeString(v.Fun)) - case *ast.MapType: - return fmt.Sprintf("map[%s](%s)", w.nodeString(w.namelessType(v.Key)), w.nodeString(w.namelessType(v.Value))), nil - case *ast.ArrayType: - return fmt.Sprintf("[]%s", w.nodeString(w.namelessType(v.Elt))), nil - case *ast.FuncType: - return w.nodeString(w.namelessType(v)), nil - case *ast.IndexExpr: - typ, err := w.varValueType(v.X, index) - typ = strings.TrimLeft(typ, "*") - if err == nil { - if index == 0 { - return typ, nil - } else if index == 1 { - return "bool", nil - } - if strings.HasPrefix(typ, "[]") { - return typ[2:], nil - } else if strings.HasPrefix(typ, "map[") { - node, err := parser.ParseExpr(typ + "{}") - if err == nil { - if cl, ok := node.(*ast.CompositeLit); ok { - if m, ok := cl.Type.(*ast.MapType); ok { - return w.nodeString(w.namelessType(m.Value)), nil - } - } - } - } - } - return "", fmt.Errorf("unknown index %v %v %v %v", typ, v.X, index, err) - case *ast.SliceExpr: - return w.varValueType(v.X, index) - case *ast.ChanType: - typ, err := w.varValueType(v.Value, index) - if err == nil { - if v.Dir == ast.RECV { - return "<-chan " + typ, nil - } else if v.Dir == ast.SEND { - return "chan<- " + typ, nil - } - return "chan " + typ, nil - } - case *ast.TypeAssertExpr: - if index == 1 { - return "bool", nil - } - return w.nodeString(w.namelessType(v.Type)), nil - default: - return "", fmt.Errorf("unknown value type %v %T", w.nodeString(vi), vi) - } - //panic("unreachable") - return "", fmt.Errorf("unreachable value type %v %T", vi, vi) -} - -// resolveName finds a top-level node named name and returns the node -// v and its type t, if known. -func (w *Walker) resolveName(name string) (v ast.Expr, t interface{}, n int) { - for _, file := range w.curPackage.apkg.Files { - for _, di := range file.Decls { - switch d := di.(type) { - case *ast.GenDecl: - switch d.Tok { - case token.VAR: - for _, sp := range d.Specs { - vs := sp.(*ast.ValueSpec) - for i, vname := range vs.Names { - if vname.Name == name { - if len(vs.Values) == 1 { - return vs.Values[0], vs.Type, i - } - return nil, vs.Type, i - } - } - } - } - } - } - } - return nil, nil, -1 -} - -// constDepPrefix is a magic prefix that is used by constValueType -// and walkConst to signal that a type isn't known yet. These are -// resolved at the end of walking of a package's files. -const constDepPrefix = "const-dependency:" - -func (w *Walker) walkConst(vs *ast.ValueSpec) { - for _, ident := range vs.Names { - if !w.isExtract(ident.Name) { - continue - } - litType := "" - if vs.Type != nil { - litType = w.nodeString(vs.Type) - } else { - litType = w.lastConstType - if vs.Values != nil { - if len(vs.Values) != 1 { - log.Fatalf("const %q, values: %#v", ident.Name, vs.Values) - } - var err error - litType, err = w.constValueType(vs.Values[0]) - if err != nil { - if apiVerbose { - log.Printf("unknown kind in const %q (%T): %v", ident.Name, vs.Values[0], err) - } - litType = "unknown-type" - } - } - } - if strings.HasPrefix(litType, constDepPrefix) { - dep := litType[len(constDepPrefix):] - w.constDep[ident.Name] = &ExprType{T: dep, X: ident} - continue - } - if litType == "" { - if apiVerbose { - log.Printf("unknown kind in const %q", ident.Name) - } - continue - } - w.lastConstType = litType - - w.curPackage.consts[ident.Name] = &ExprType{T: litType, X: ident} - - if isExtract(ident.Name) { - w.emitFeature(fmt.Sprintf("const %s %s", ident, litType), ident.Pos()) - } - } -} - -func (w *Walker) resolveConstantDeps() { - var findConstType func(string) string - findConstType = func(ident string) string { - if dep, ok := w.constDep[ident]; ok { - return findConstType(dep.T) - } - if t, ok := w.curPackage.consts[ident]; ok { - return t.T - } - return "" - } - for ident, info := range w.constDep { - if !isExtract(ident) { - continue - } - t := findConstType(ident) - if t == "" { - if apiVerbose { - log.Printf("failed to resolve constant %q", ident) - } - continue - } - w.curPackage.consts[ident] = &ExprType{T: t, X: info.X} - w.emitFeature(fmt.Sprintf("const %s %s", ident, t), info.X.Pos()) - } -} - -func (w *Walker) walkVar(vs *ast.ValueSpec) { - if vs.Type != nil { - typ := w.nodeString(vs.Type) - for _, ident := range vs.Names { - w.curPackage.vars[ident.Name] = &ExprType{T: typ, X: ident} - if isExtract(ident.Name) { - w.emitFeature(fmt.Sprintf("var %s %s", ident, typ), ident.Pos()) - } - } - } else if len(vs.Names) == len(vs.Values) { - for n, ident := range vs.Names { - if !w.isExtract(ident.Name) { - continue - } - typ, err := w.varValueType(vs.Values[n], n) - if err != nil { - if apiVerbose { - log.Printf("unknown type of variable0 %q, type %T, error = %v, pos=%s", - ident.Name, vs.Values[n], err, w.fset.Position(vs.Pos())) - } - typ = "unknown-type" - } - w.curPackage.vars[ident.Name] = &ExprType{T: typ, X: ident} - if isExtract(ident.Name) { - w.emitFeature(fmt.Sprintf("var %s %s", ident, typ), ident.Pos()) - } - } - } else if len(vs.Values) == 1 { - for n, ident := range vs.Names { - if !w.isExtract(ident.Name) { - continue - } - typ, err := w.varValueType(vs.Values[0], n) - if err != nil { - if apiVerbose { - log.Printf("unknown type of variable1 %q, type %T, error = %v, pos=%s", - ident.Name, vs.Values[0], err, w.fset.Position(vs.Pos())) - } - typ = "unknown-type" - } - w.curPackage.vars[ident.Name] = &ExprType{T: typ, X: ident} - if isExtract(ident.Name) { - w.emitFeature(fmt.Sprintf("var %s %s", ident, typ), ident.Pos()) - } - } - } -} - -func (w *Walker) nodeString(node interface{}) string { - if node == nil { - return "" - } - var b bytes.Buffer - printer.Fprint(&b, w.fset, node) - return b.String() -} - -func (w *Walker) nodeDebug(node interface{}) string { - if node == nil { - return "" - } - var b bytes.Buffer - ast.Fprint(&b, w.fset, node, nil) - return b.String() -} - -func (w *Walker) noteInterface(name string, it *ast.InterfaceType) { - w.interfaces[pkgSymbol{w.curPackageName, name}] = it -} - -func (w *Walker) walkTypeSpec(ts *ast.TypeSpec) { - name := ts.Name.Name - if !isExtract(name) { - return - } - switch t := ts.Type.(type) { - case *ast.StructType: - w.walkStructType(name, t) - case *ast.InterfaceType: - w.walkInterfaceType(name, t) - default: - w.emitFeature(fmt.Sprintf("type %s %s", name, w.nodeString(ts.Type)), t.Pos()-token.Pos(len(name)+1)) - } -} - -func (w *Walker) walkStructType(name string, t *ast.StructType) { - typeStruct := fmt.Sprintf("type %s struct", name) - w.emitFeature(typeStruct, t.Pos()-token.Pos(len(name)+1)) - pop := w.pushScope(typeStruct) - defer pop() - for _, f := range t.Fields.List { - typ := f.Type - for _, name := range f.Names { - if isExtract(name.Name) { - w.emitFeature(fmt.Sprintf("%s %s", name, w.nodeString(w.namelessType(typ))), name.Pos()) - } - } - if f.Names == nil { - switch v := typ.(type) { - case *ast.Ident: - if isExtract(v.Name) { - w.emitFeature(fmt.Sprintf("embedded %s", v.Name), v.Pos()) - } - case *ast.StarExpr: - switch vv := v.X.(type) { - case *ast.Ident: - if isExtract(vv.Name) { - w.emitFeature(fmt.Sprintf("embedded *%s", vv.Name), vv.Pos()) - } - case *ast.SelectorExpr: - w.emitFeature(fmt.Sprintf("embedded %s", w.nodeString(typ)), v.Pos()) - default: - log.Fatalf("unable to handle embedded starexpr before %T", typ) - } - case *ast.SelectorExpr: - w.emitFeature(fmt.Sprintf("embedded %s", w.nodeString(typ)), v.Pos()) - default: - if apiVerbose { - log.Printf("unable to handle embedded %T", typ) - } - } - } - } -} - -// typeMethod is a method of an interface. -type typeMethod struct { - name string // "Read" - sig string // "([]byte) (int, error)", from funcSigString - ft *ast.FuncType - pos token.Pos - recv ast.Expr -} - -// interfaceMethods returns the expanded list of exported methods for an interface. -// The boolean complete reports whether the list contains all methods (that is, the -// interface has no unexported methods). -// pkg is the complete package name ("net/http") -// iname is the interface name. -func (w *Walker) interfaceMethods(pkg, iname string) (methods []typeMethod, complete bool) { - t, ok := w.interfaces[pkgSymbol{pkg, iname}] - if !ok { - if apiVerbose { - log.Printf("failed to find interface %s.%s", pkg, iname) - } - return - } - - complete = true - for _, f := range t.Methods.List { - typ := f.Type - switch tv := typ.(type) { - case *ast.FuncType: - for _, mname := range f.Names { - if isExtract(mname.Name) { - ft := typ.(*ast.FuncType) - methods = append(methods, typeMethod{ - name: mname.Name, - sig: w.funcSigString(ft), - ft: ft, - pos: f.Pos(), - }) - } else { - complete = false - } - } - case *ast.Ident: - embedded := typ.(*ast.Ident).Name - if embedded == "error" { - methods = append(methods, typeMethod{ - name: "Error", - sig: "() string", - ft: &ast.FuncType{ - Params: nil, - Results: &ast.FieldList{ - List: []*ast.Field{ - &ast.Field{ - Type: &ast.Ident{ - Name: "string", - }, - }, - }, - }, - }, - pos: f.Pos(), - }) - continue - } - if !isExtract(embedded) { - log.Fatalf("unexported embedded interface %q in exported interface %s.%s; confused", - embedded, pkg, iname) - } - m, c := w.interfaceMethods(pkg, embedded) - methods = append(methods, m...) - complete = complete && c - case *ast.SelectorExpr: - lhs := w.nodeString(tv.X) - rhs := w.nodeString(tv.Sel) - fpkg, ok := w.selectorFullPkg[lhs] - if !ok { - log.Fatalf("can't resolve selector %q in interface %s.%s", lhs, pkg, iname) - } - m, c := w.interfaceMethods(fpkg, rhs) - methods = append(methods, m...) - complete = complete && c - default: - log.Fatalf("unknown type %T in interface field", typ) - } - } - return -} - -func (w *Walker) walkInterfaceType(name string, t *ast.InterfaceType) { - methNames := []string{} - pop := w.pushScope("type " + name + " interface") - methods, complete := w.interfaceMethods(w.curPackageName, name) - w.packageMap[w.curPackageName].interfaceMethods[name] = methods - for _, m := range methods { - methNames = append(methNames, m.name) - w.emitFeature(fmt.Sprintf("%s%s", m.name, m.sig), m.pos) - } - if !complete { - // The method set has unexported methods, so all the - // implementations are provided by the same package, - // so the method set can be extended. Instead of recording - // the full set of names (below), record only that there were - // unexported methods. (If the interface shrinks, we will notice - // because a method signature emitted during the last loop, - // will disappear.) - w.emitFeature("unexported methods", 0) - } - pop() - - if !complete { - return - } - - sort.Strings(methNames) - if len(methNames) == 0 { - w.emitFeature(fmt.Sprintf("type %s interface {}", name), t.Pos()-token.Pos(len(name)+1)) - } else { - w.emitFeature(fmt.Sprintf("type %s interface { %s }", name, strings.Join(methNames, ", ")), t.Pos()-token.Pos(len(name)+1)) - } -} - -func baseTypeName(x ast.Expr) (name string, imported bool) { - switch t := x.(type) { - case *ast.Ident: - return t.Name, false - case *ast.SelectorExpr: - if _, ok := t.X.(*ast.Ident); ok { - // only possible for qualified type names; - // assume type is imported - return t.Sel.Name, true - } - case *ast.StarExpr: - return baseTypeName(t.X) - } - return -} - -func (w *Walker) peekFuncDecl(f *ast.FuncDecl) { - var fname = f.Name.Name - var recv ast.Expr - if f.Recv != nil { - recvTypeName, imp := baseTypeName(f.Recv.List[0].Type) - if imp { - return - } - fname = recvTypeName + "." + f.Name.Name - recv = f.Recv.List[0].Type - } - // Record return type for later use. - //if f.Type.Results != nil && len(f.Type.Results.List) >= 1 { - // record all function - w.curPackage.functions[fname] = typeMethod{ - name: fname, - sig: w.funcSigString(f.Type), - ft: f.Type, - pos: f.Pos(), - recv: recv, - } - //} -} - -func (w *Walker) walkFuncDecl(f *ast.FuncDecl) { - if !w.isExtract(f.Name.Name) { - return - } - if f.Recv != nil { - // Method. - recvType := w.nodeString(f.Recv.List[0].Type) - keep := isExtract(recvType) || - (strings.HasPrefix(recvType, "*") && - isExtract(recvType[1:])) - if !keep { - return - } - w.emitFeature(fmt.Sprintf("method (%s) %s%s", recvType, f.Name.Name, w.funcSigString(f.Type)), f.Name.Pos()) - return - } - // Else, a function - w.emitFeature(fmt.Sprintf("func %s%s", f.Name.Name, w.funcSigString(f.Type)), f.Name.Pos()) -} - -func (w *Walker) funcSigString(ft *ast.FuncType) string { - var b bytes.Buffer - writeField := func(b *bytes.Buffer, f *ast.Field) { - if n := len(f.Names); n > 1 { - for i := 0; i < n; i++ { - if i > 0 { - b.WriteString(", ") - } - b.WriteString(w.nodeString(w.namelessType(f.Type))) - } - } else { - b.WriteString(w.nodeString(w.namelessType(f.Type))) - } - } - b.WriteByte('(') - if ft.Params != nil { - for i, f := range ft.Params.List { - if i > 0 { - b.WriteString(", ") - } - writeField(&b, f) - } - } - b.WriteByte(')') - if ft.Results != nil { - nr := 0 - for _, f := range ft.Results.List { - if n := len(f.Names); n > 1 { - nr += n - } else { - nr++ - } - } - if nr > 0 { - b.WriteByte(' ') - if nr > 1 { - b.WriteByte('(') - } - for i, f := range ft.Results.List { - if i > 0 { - b.WriteString(", ") - } - writeField(&b, f) - } - if nr > 1 { - b.WriteByte(')') - } - } - } - return b.String() -} - -// namelessType returns a type node that lacks any variable names. -func (w *Walker) namelessType(t interface{}) interface{} { - ft, ok := t.(*ast.FuncType) - if !ok { - return t - } - return &ast.FuncType{ - Params: w.namelessFieldList(ft.Params), - Results: w.namelessFieldList(ft.Results), - } -} - -// namelessFieldList returns a deep clone of fl, with the cloned fields -// lacking names. -func (w *Walker) namelessFieldList(fl *ast.FieldList) *ast.FieldList { - fl2 := &ast.FieldList{} - if fl != nil { - for _, f := range fl.List { - n := len(f.Names) - if n >= 1 { - for i := 0; i < n; i++ { - fl2.List = append(fl2.List, w.namelessField(f)) - } - } else { - fl2.List = append(fl2.List, w.namelessField(f)) - } - } - } - return fl2 -} - -// namelessField clones f, but not preserving the names of fields. -// (comments and tags are also ignored) -func (w *Walker) namelessField(f *ast.Field) *ast.Field { - return &ast.Field{ - Type: f.Type, - } -} - -func (w *Walker) emitFeature(feature string, pos token.Pos) { - if !w.wantedPkg[w.curPackage.name] { - return - } - more := strings.Index(feature, "\n") - if more != -1 { - if len(feature) <= 1024 { - feature = strings.Replace(feature, "\n", " ", 1) - feature = strings.Replace(feature, "\n", ";", -1) - feature = strings.Replace(feature, "\t", " ", -1) - } else { - feature = feature[:more] + " ...more" - if apiVerbose { - log.Printf("feature contains newlines: %v, %s", feature, w.fset.Position(pos)) - } - } - } - f := strings.Join(w.scope, w.sep) + w.sep + feature - - if _, dup := w.curPackage.features[f]; dup { - return - } - w.curPackage.features[f] = pos -} - -func strListContains(l []string, s string) bool { - for _, v := range l { - if v == s { - return true - } - } - return false -} - -const goosList = "darwin freebsd linux netbsd openbsd plan9 windows " -const goarchList = "386 amd64 arm " - -// goodOSArchFile returns false if the name contains a $GOOS or $GOARCH -// suffix which does not match the current system. -// The recognized name formats are: -// -// name_$(GOOS).* -// name_$(GOARCH).* -// name_$(GOOS)_$(GOARCH).* -// name_$(GOOS)_test.* -// name_$(GOARCH)_test.* -// name_$(GOOS)_$(GOARCH)_test.* -// -func isOSArchFile(ctxt *build.Context, name string) bool { - if dot := strings.Index(name, "."); dot != -1 { - name = name[:dot] - } - l := strings.Split(name, "_") - if n := len(l); n > 0 && l[n-1] == "test" { - l = l[:n-1] - } - n := len(l) - if n >= 2 && knownOS[l[n-2]] && knownArch[l[n-1]] { - return l[n-2] == ctxt.GOOS && l[n-1] == ctxt.GOARCH - } - if n >= 1 && knownOS[l[n-1]] { - return l[n-1] == ctxt.GOOS - } - if n >= 1 && knownArch[l[n-1]] { - return l[n-1] == ctxt.GOARCH - } - return false -} - -var knownOS = make(map[string]bool) -var knownArch = make(map[string]bool) - -func init() { - for _, v := range strings.Fields(goosList) { - knownOS[v] = true - } - for _, v := range strings.Fields(goarchList) { - knownArch[v] = true - } -} diff --git a/vendor/github.com/visualfc/gotools/godiff/godiff.go b/vendor/github.com/visualfc/gotools/godiff/godiff.go deleted file mode 100644 index f4169aa..0000000 --- a/vendor/github.com/visualfc/gotools/godiff/godiff.go +++ /dev/null @@ -1,64 +0,0 @@ -// Copyright 2011-2015 visualfc . All rights reserved. -// Use of this source code is governed by a BSD-style -// license that can be found in the LICENSE file. - -package godiff - -import ( - "io/ioutil" - "os" - "os/exec" - - "github.com/pmezard/go-difflib/difflib" -) - -func UnifiedDiffLines(a []string, b []string) (string, error) { - diff := difflib.UnifiedDiff{ - A: a, - B: b, - FromFile: "Original", - ToFile: "Current", - Context: 3, - Eol: "\n", - } - return difflib.GetUnifiedDiffString(diff) -} - -func UnifiedDiffString(a string, b string) (string, error) { - diff := difflib.UnifiedDiff{ - A: difflib.SplitLines(a), - B: difflib.SplitLines(b), - FromFile: "Original", - ToFile: "Current", - Context: 3, - Eol: "\n", - } - return difflib.GetUnifiedDiffString(diff) -} - -func UnifiedDiffBytesByCmd(b1, b2 []byte) (data []byte, err error) { - f1, err := ioutil.TempFile("", "godiff") - if err != nil { - return - } - defer os.Remove(f1.Name()) - defer f1.Close() - - f2, err := ioutil.TempFile("", "godiff") - if err != nil { - return - } - defer os.Remove(f2.Name()) - defer f2.Close() - - f1.Write(b1) - f2.Write(b2) - - data, err = exec.Command("diff", "-u", f1.Name(), f2.Name()).CombinedOutput() - if len(data) > 0 { - // diff exits with a non-zero status when the files don't match. - // Ignore that failure as long as we get output. - err = nil - } - return -} diff --git a/vendor/github.com/visualfc/gotools/gofmt/gofmt.go b/vendor/github.com/visualfc/gotools/gofmt/gofmt.go deleted file mode 100644 index af10755..0000000 --- a/vendor/github.com/visualfc/gotools/gofmt/gofmt.go +++ /dev/null @@ -1,198 +0,0 @@ -// Copyright 2013 The Go Authors. All rights reserved. -// Use of this source code is governed by a BSD-style -// license that can be found in the LICENSE file. - -package gofmt - -import ( - "bytes" - "fmt" - "go/scanner" - "go/token" - "io" - "io/ioutil" - "os" - "path/filepath" - "runtime" - "strings" - "sync" - - "github.com/visualfc/gotools/command" - "github.com/visualfc/gotools/godiff" - "golang.org/x/tools/imports" -) - -var Command = &command.Command{ - Run: runGofmt, - UsageLine: "gofmt [flags] [path ...]", - Short: "gofmt formats Go source.", - Long: `gofmt formats Go source`, -} - -var ( - gofmtList bool - gofmtWrite bool - gofmtDiff bool - gofmtAllErrors bool - gofmtFixImports bool - gofmtSortImports bool - gofmtUseGodiffLib bool - - // layout control - gofmtComments bool - gofmtTabWidth int - gofmtTabIndent bool -) - -//func init -func init() { - Command.Flag.BoolVar(&gofmtList, "l", false, "list files whose formatting differs from goimport's") - Command.Flag.BoolVar(&gofmtWrite, "w", false, "write result to (source) file instead of stdout") - Command.Flag.BoolVar(&gofmtDiff, "d", false, "display diffs instead of rewriting files") - Command.Flag.BoolVar(&gofmtAllErrors, "e", false, "report all errors (not just the first 10 on different lines)") - Command.Flag.BoolVar(&gofmtFixImports, "fiximports", false, "updates Go import lines, adding missing ones and removing unreferenced ones") - Command.Flag.BoolVar(&gofmtSortImports, "sortimports", false, "sort Go import lines use goimports style") - Command.Flag.BoolVar(&gofmtUseGodiffLib, "godiff", true, "diff use godiff library") - - // layout control - Command.Flag.BoolVar(&gofmtComments, "comments", true, "print comments") - Command.Flag.IntVar(&gofmtTabWidth, "tabwidth", 8, "tab width") - Command.Flag.BoolVar(&gofmtTabIndent, "tabs", true, "indent with tabs") -} - -var ( - fileSet = token.NewFileSet() // per process FileSet - exitCode = 0 - - initModesOnce sync.Once // guards calling initModes - //parserMode parser.Mode - //printerMode printer.Mode - options *imports.Options -) - -func report(err error) { - scanner.PrintError(os.Stderr, err) - exitCode = 2 -} - -func runGofmt(cmd *command.Command, args []string) error { - runtime.GOMAXPROCS(runtime.NumCPU()) - - if gofmtTabWidth < 0 { - fmt.Fprintf(os.Stderr, "negative tabwidth %d\n", gofmtTabWidth) - exitCode = 2 - os.Exit(exitCode) - return os.ErrInvalid - } - - if gofmtFixImports { - gofmtSortImports = true - } - - options = &imports.Options{ - FormatOnly: !gofmtFixImports, - TabWidth: gofmtTabWidth, - TabIndent: gofmtTabIndent, - Comments: gofmtComments, - AllErrors: gofmtAllErrors, - Fragment: true, - } - - if len(args) == 0 { - if err := processFile("", os.Stdin, os.Stdout, true); err != nil { - report(err) - } - } else { - for _, path := range args { - switch dir, err := os.Stat(path); { - case err != nil: - report(err) - case dir.IsDir(): - walkDir(path) - default: - if err := processFile(path, nil, os.Stdout, false); err != nil { - report(err) - } - } - } - } - os.Exit(exitCode) - return nil -} - -func isGoFile(f os.FileInfo) bool { - // ignore non-Go files - name := f.Name() - return !f.IsDir() && !strings.HasPrefix(name, ".") && strings.HasSuffix(name, ".go") -} - -func processFile(filename string, in io.Reader, out io.Writer, stdin bool) error { - if in == nil { - f, err := os.Open(filename) - if err != nil { - return err - } - defer f.Close() - in = f - } - - src, err := ioutil.ReadAll(in) - if err != nil { - return err - } - - res, err := imports.Process(filename, src, options) - if err != nil { - return err - } - - if !bytes.Equal(src, res) { - // formatting has changed - if gofmtList { - fmt.Fprintln(out, filename) - } - if gofmtWrite { - err = ioutil.WriteFile(filename, res, 0) - if err != nil { - return err - } - } - if gofmtDiff { - if gofmtUseGodiffLib { - data, err := godiff.UnifiedDiffString(string(src), string(res)) - if err != nil { - return fmt.Errorf("computing diff: %s", err) - } - fmt.Printf("diff %s gofmt/%s\n", filename, filename) - out.Write([]byte(data)) - } else { - data, err := godiff.UnifiedDiffBytesByCmd(src, res) - if err != nil { - return fmt.Errorf("computing diff: %s", err) - } - fmt.Printf("diff %s gofmt/%s\n", filename, filename) - out.Write(data) - } - } - } - - if !gofmtList && !gofmtWrite && !gofmtDiff { - _, err = out.Write(res) - } - - return err -} - -func visitFile(path string, f os.FileInfo, err error) error { - if err == nil && isGoFile(f) { - err = processFile(path, nil, os.Stdout, false) - } - if err != nil { - report(err) - } - return nil -} - -func walkDir(path string) { - filepath.Walk(path, visitFile) -} diff --git a/vendor/github.com/visualfc/gotools/gopresent/gopresent.go b/vendor/github.com/visualfc/gotools/gopresent/gopresent.go deleted file mode 100644 index e0242a2..0000000 --- a/vendor/github.com/visualfc/gotools/gopresent/gopresent.go +++ /dev/null @@ -1,383 +0,0 @@ -// Copyright 2013 The Go Authors. All rights reserved. -// Use of this source code is governed by a BSD-style -// license that can be found in the LICENSE file. - -//modify 2013-2014 visualfc - -package gopresent - -import ( - "fmt" - "html/template" - "io" - "os" - "path/filepath" - - "github.com/visualfc/gotools/command" - "golang.org/x/tools/present" -) - -var Command = &command.Command{ - Run: runPresent, - UsageLine: "gopresent", - Short: "golang present util", - Long: `golang present util`, -} - -var presentVerifyOnly bool -var presentInput string -var presentStdout bool -var presentOutput string - -func init() { - Command.Flag.BoolVar(&presentVerifyOnly, "v", false, "verify present only") - Command.Flag.BoolVar(&presentStdout, "stdout", false, "output use std output") - Command.Flag.StringVar(&presentInput, "i", "", "input golang present file") - Command.Flag.StringVar(&presentOutput, "o", "", "output html file name") -} - -func runPresent(cmd *command.Command, args []string) error { - if presentInput == "" || !isDoc(presentInput) { - cmd.Usage() - return os.ErrInvalid - } - - if presentVerifyOnly { - err := VerifyDoc(presentInput) - if err != nil { - fmt.Fprintf(os.Stderr, "present:%s", err) - command.SetExitStatus(3) - command.Exit() - } - return nil - } - w := os.Stdout - if !presentStdout { - if presentOutput == "" { - presentOutput = presentInput + ".html" - } - ext := filepath.Ext(presentOutput) - if ext != ".htm" && ext != ".html" { - presentOutput += ".html" - } - var err error - w, err = os.Create(presentOutput) - if err != nil { - fmt.Fprintf(os.Stderr, "present:%s", err) - command.SetExitStatus(3) - command.Exit() - } - } - err := RenderDoc(w, presentInput) - if err != nil { - fmt.Fprintf(os.Stderr, "present:%s", err) - command.SetExitStatus(3) - command.Exit() - } - return nil -} - -var extensions = map[string]string{ - ".slide": "slides.tmpl", - ".article": "article.tmpl", -} - -var extensions_tmpl = map[string]string{ - ".slide": slides_tmpl, - ".article": article_tmpl, -} - -func isDoc(path string) bool { - _, ok := extensions[filepath.Ext(path)] - return ok -} - -func VerifyDoc(docFile string) error { - doc, err := parse(docFile, 0) - if err != nil { - return err - } - dir := filepath.Dir(docFile) - return verify_doc(dir, doc) -} - -// renderDoc reads the present file, builds its template representation, -// and executes the template, sending output to w. -func renderDoc(w io.Writer, base, docFile string) error { - // Read the input and build the doc structure. - doc, err := parse(docFile, 0) - if err != nil { - return err - } - - // Find which template should be executed. - ext := filepath.Ext(docFile) - contentTmpl, ok := extensions[ext] - if !ok { - return fmt.Errorf("no template for extension %v", ext) - } - - // Locate the template file. - actionTmpl := filepath.Join(base, "templates/action.tmpl") - contentTmpl = filepath.Join(base, "templates", contentTmpl) - - // Read and parse the input. - tmpl := present.Template() - tmpl = tmpl.Funcs(template.FuncMap{"playable": playable}) - if _, err := tmpl.ParseFiles(actionTmpl, contentTmpl); err != nil { - return err - } - // Execute the template. - return doc.Render(w, tmpl) -} - -func RenderDoc(w io.Writer, docFile string) error { - // Read the input and build the doc structure. - doc, err := parse(docFile, 0) - if err != nil { - return err - } - - // Find which template should be executed. - ext := filepath.Ext(docFile) - contentTmpl, ok := extensions_tmpl[ext] - if !ok { - return fmt.Errorf("no template for extension %v", ext) - } - - // Locate the template file. - actionTmpl := action_tmpl //filepath.Join(base, "templates/action.tmpl") - // Read and parse the input. - tmpl := present.Template() - tmpl = tmpl.Funcs(template.FuncMap{"playable": playable}) - if tmpl, err = tmpl.New("action").Parse(actionTmpl); err != nil { - return err - } - if tmpl, err = tmpl.New("content").Parse(contentTmpl); err != nil { - return err - } - - // Execute the template. - return doc.Render(w, tmpl) -} - -func parse(name string, mode present.ParseMode) (*present.Doc, error) { - f, err := os.Open(name) - if err != nil { - return nil, err - } - defer f.Close() - return present.Parse(f, name, 0) -} - -func playable(c present.Code) bool { - return present.PlayEnabled && c.Play -} - -func isSkipURL(url string) bool { - if filepath.HasPrefix(url, "http://") { - return true - } - if filepath.HasPrefix(url, "https://") { - return true - } - return false -} - -func verify_path(root string, url string) error { - if isSkipURL(url) { - return nil - } - path := url - if !filepath.IsAbs(url) { - path = filepath.Join(root, path) - } - _, err := os.Stat(path) - if err != nil { - return err - } - return nil -} - -func verify_doc(root string, doc *present.Doc) error { - for _, section := range doc.Sections { - for _, elem := range section.Elem { - switch i := elem.(type) { - case present.Image: - if err := verify_path(root, i.URL); err != nil { - return fmt.Errorf("! .image %s not exist", i.URL) - } - } - } - } - return nil -} - -var action_tmpl = ` -{/* -This is the action template. -It determines how the formatting actions are rendered. -*/} - -{{define "section"}} - {{.FormattedNumber}} {{.Title}} - {{range .Elem}}{{elem $.Template .}}{{end}} -{{end}} - -{{define "list"}} -
    - {{range .Bullet}} -
  • {{style .}}
  • - {{end}} -
-{{end}} - -{{define "text"}} - {{if .Pre}} -
{{range .Lines}}{{.}}{{end}}
- {{else}} -

- {{range $i, $l := .Lines}}{{if $i}}{{template "newline"}} - {{end}}{{style $l}}{{end}} -

- {{end}} -{{end}} - -{{define "code"}} -
{{.Text}}
-{{end}} - -{{define "image"}} -
- -
-{{end}} - -{{define "iframe"}} - -{{end}} - -{{define "link"}}{{end}} - -{{define "html"}}{{.HTML}}{{end}} -` - -var article_tmpl = ` -{/* This is the article template. It defines how articles are formatted. */} - -{{define "root"}} - - - - {{.Title}} - - - - - -
-
-
{{.Title}} - {{with .Subtitle}}{{.}}{{end}} -
-
-
-
-
- {{with .Sections}} -
- {{template "TOC" .}} -
- {{end}} - - {{range .Sections}} - {{elem $.Template .}} - {{end}}{{/* of Section block */}} - -

Authors

- {{range .Authors}} -
- {{range .Elem}}{{elem $.Template .}}{{end}} -
- {{end}} -
-
- - - -{{end}} - -{{define "TOC"}} -
    - {{range .}} -
  • {{.Title}}
  • - {{with .Sections}}{{template "TOC" .}}{{end}} - {{end}} -
-{{end}} - -{{define "newline"}} -{{/* No automatic line break. Paragraphs are free-form. */}} -{{end}} -` - -var slides_tmpl = ` -{/* This is the slide template. It defines how presentations are formatted. */} - -{{define "root"}} - - - - {{.Title}} - - - - - - -
- -
-

{{.Title}}

- {{with .Subtitle}}

{{.}}

{{end}} - {{if not .Time.IsZero}}

{{.Time.Format "2 January 2006"}}

{{end}} - {{range .Authors}} -
- {{range .TextElem}}{{elem $.Template .}}{{end}} -
- {{end}} -
- - {{range $i, $s := .Sections}} - -
- {{if $s.Elem}} -

{{$s.Title}}

- {{range $s.Elem}}{{elem $.Template .}}{{end}} - {{else}} -

{{$s.Title}}

- {{end}} -
- - {{end}}{{/* of Slide block */}} - -
-

Thank you

- {{range .Authors}} -
- {{range .Elem}}{{elem $.Template .}}{{end}} -
- {{end}} -
- - - {{if .PlayEnabled}} - - {{end}} - -{{end}} - -{{define "newline"}} -
-{{end}} -` diff --git a/vendor/github.com/visualfc/gotools/gotest/gotest.go b/vendor/github.com/visualfc/gotools/gotest/gotest.go deleted file mode 100644 index 5098686..0000000 --- a/vendor/github.com/visualfc/gotools/gotest/gotest.go +++ /dev/null @@ -1,99 +0,0 @@ -// Copyright 2011-2015 visualfc . All rights reserved. -// Use of this source code is governed by a BSD-style -// license that can be found in the LICENSE file. - -package gotest - -import ( - "fmt" - "go/build" - "os" - "os/exec" - "strings" - - "github.com/visualfc/gotools/command" -) - -var Command = &command.Command{ - Run: runGotest, - UsageLine: "gotest -f filename [build/test flags]", - Short: "go test go filename", - Long: `go test go filename`, - CustomFlags: true, -} - -var testFileName string -var testFileArgs string - -//func init() { -// Command.Flag.StringVar(&testFileName, "f", "", "test go filename") -//} - -func runGotest(cmd *command.Command, args []string) error { - index := -1 - for n, arg := range args { - if arg == "-f" { - index = n - break - } - } - if index >= 0 && index < len(args) { - testFileName = args[index+1] - var r []string - r = append(r, args[0:index]...) - r = append(r, args[index+2:]...) - args = r - } - - if testFileName == "" { - cmd.Usage() - return os.ErrInvalid - } - if !strings.HasSuffix(testFileName, "_test.go") { - fmt.Println("The test filename must xxx_test.go") - return os.ErrInvalid - } - - pkg, err := build.ImportDir(".", 0) - if err != nil { - fmt.Println("import dir error", err) - return err - } - - var testFiles []string - - for _, file := range pkg.XTestGoFiles { - if file == testFileName { - testFiles = append(testFiles, file) - break - } - } - for _, file := range pkg.TestGoFiles { - if file == testFileName { - testFiles = append(testFiles, pkg.GoFiles...) - testFiles = append(testFiles, file) - break - } - } - - gobin, err := exec.LookPath("go") - if err != nil { - fmt.Println("error look go", err) - return err - } - - var testArgs []string - testArgs = append(testArgs, "test") - if len(args) > 0 { - testArgs = append(testArgs, args...) - } - testArgs = append(testArgs, testFiles...) - - command := exec.Command(gobin, testArgs...) - command.Dir = pkg.Dir - command.Stdin = os.Stdin - command.Stdout = os.Stdout - command.Stderr = os.Stderr - - return command.Run() -} diff --git a/vendor/github.com/visualfc/gotools/jsonfmt/jsonfmt.go b/vendor/github.com/visualfc/gotools/jsonfmt/jsonfmt.go deleted file mode 100644 index f9657ef..0000000 --- a/vendor/github.com/visualfc/gotools/jsonfmt/jsonfmt.go +++ /dev/null @@ -1,206 +0,0 @@ -// Copyright 2011-2015 visualfc . All rights reserved. -// Use of this source code is governed by a BSD-style -// license that can be found in the LICENSE file. - -package jsonfmt - -import ( - "bytes" - "encoding/json" - "fmt" - "io" - "io/ioutil" - "os" - "os/exec" - "path/filepath" - "strings" - - "github.com/visualfc/gotools/command" -) - -var Command = &command.Command{ - Run: runJsonFmt, - UsageLine: "jsonfmt", - Short: "json format util", - Long: `json format util.`, -} - -var ( - jsonFmtList bool - jsonFmtCompact bool - jsonFmtWrite bool - jsonFmtDiff bool - jsonTabWidth int - jsonTabIndent bool -) - -func init() { - Command.Flag.BoolVar(&jsonFmtList, "l", false, "list files whose formatting differs") - Command.Flag.BoolVar(&jsonFmtCompact, "c", false, "compact json") - Command.Flag.BoolVar(&jsonFmtWrite, "w", false, "write result to (source) file instead of stdout") - Command.Flag.BoolVar(&jsonFmtDiff, "d", false, "display diffs instead of rewriting files") - Command.Flag.IntVar(&jsonTabWidth, "tabwidth", 4, "tab width") - Command.Flag.BoolVar(&jsonTabIndent, "tabs", false, "indent with tabs") -} - -func runJsonFmt(cmd *command.Command, args []string) error { - opt := &JsonFmtOption{} - opt.List = jsonFmtList - opt.Compact = jsonFmtCompact - opt.IndentTab = jsonTabIndent - opt.TabWidth = jsonTabWidth - opt.Write = jsonFmtWrite - opt.Diff = jsonFmtDiff - - if len(args) == 0 { - if err := processJsonFile("", os.Stdin, os.Stdout, true, opt); err != nil { - reportJsonError(err) - } - } else { - for _, path := range args { - switch dir, err := os.Stat(path); { - case err != nil: - reportJsonError(err) - case dir.IsDir(): - filepath.Walk(path, func(path string, f os.FileInfo, err error) error { - if err == nil && isJsonFile(f) { - err = processJsonFile(path, nil, os.Stdout, false, opt) - } - if err != nil { - reportJsonError(err) - } - return nil - }) - default: - if err := processJsonFile(path, nil, os.Stdout, false, opt); err != nil { - reportJsonError(err) - } - } - } - } - return nil -} - -type JsonFmtOption struct { - List bool - Compact bool - Format bool - Write bool - Diff bool - IndentTab bool - TabWidth int -} - -func isJsonFile(f os.FileInfo) bool { - // ignore non-Go files - name := f.Name() - return !f.IsDir() && !strings.HasPrefix(name, ".") && strings.HasSuffix(name, ".json") -} - -func reportJsonError(err error) { - fmt.Fprintf(os.Stderr, "%s\n", err) - os.Exit(2) -} - -func processJson(filename string, src []byte, opt *JsonFmtOption) ([]byte, error) { - if opt.Compact { - var out bytes.Buffer - err := json.Compact(&out, src) - if err != nil { - return nil, err - } - return out.Bytes(), nil - } else { - var out bytes.Buffer - var err error - if opt.IndentTab { - err = json.Indent(&out, src, "", "\t") - } else { - var indent string - for i := 0; i < opt.TabWidth; i++ { - indent += " " - } - err = json.Indent(&out, src, "", indent) - } - if err != nil { - return nil, err - } - return out.Bytes(), nil - } - return src, nil -} - -func processJsonFile(filename string, in io.Reader, out io.Writer, stdin bool, opt *JsonFmtOption) error { - if in == nil { - f, err := os.Open(filename) - if err != nil { - return err - } - defer f.Close() - in = f - } - - src, err := ioutil.ReadAll(in) - if err != nil { - return err - } - - res, err := processJson(filename, src, opt) - if err != nil { - return err - } - - if !bytes.Equal(src, res) { - // formatting has changed - if opt.List { - fmt.Fprintln(out, filename) - } - if opt.Write { - err = ioutil.WriteFile(filename, res, 0) - if err != nil { - return err - } - } - if opt.Diff { - data, err := diffJson(src, res) - if err != nil { - return fmt.Errorf("computing diff: %s", err) - } - fmt.Printf("diff %s json/%s\n", filename, filename) - out.Write(data) - } - } - - if !opt.List && !opt.Write && !opt.Diff { - _, err = out.Write(res) - } - - return err -} - -func diffJson(b1, b2 []byte) (data []byte, err error) { - f1, err := ioutil.TempFile("", "json") - if err != nil { - return - } - defer os.Remove(f1.Name()) - defer f1.Close() - - f2, err := ioutil.TempFile("", "json") - if err != nil { - return - } - defer os.Remove(f2.Name()) - defer f2.Close() - - f1.Write(b1) - f2.Write(b2) - - data, err = exec.Command("diff", "-u", f1.Name(), f2.Name()).CombinedOutput() - if len(data) > 0 { - // diff exits with a non-zero status when the files don't match. - // Ignore that failure as long as we get output. - err = nil - } - return -} diff --git a/vendor/github.com/visualfc/gotools/main.go b/vendor/github.com/visualfc/gotools/main.go deleted file mode 100644 index eb0d28c..0000000 --- a/vendor/github.com/visualfc/gotools/main.go +++ /dev/null @@ -1,47 +0,0 @@ -// Copyright 2011-2017 visualfc . All rights reserved. -// Use of this source code is governed by a BSD-style -// license that can be found in the LICENSE file. - -package main - -import ( - "github.com/visualfc/gotools/astview" - "github.com/visualfc/gotools/command" - "github.com/visualfc/gotools/docview" - "github.com/visualfc/gotools/finddecl" - "github.com/visualfc/gotools/finddoc" - "github.com/visualfc/gotools/goapi" - "github.com/visualfc/gotools/gofmt" - "github.com/visualfc/gotools/gopresent" - "github.com/visualfc/gotools/gotest" - "github.com/visualfc/gotools/jsonfmt" - "github.com/visualfc/gotools/oracle" - "github.com/visualfc/gotools/pkgs" - "github.com/visualfc/gotools/runcmd" - "github.com/visualfc/gotools/terminal" - "github.com/visualfc/gotools/types" -) - -func init() { - command.Register(types.Command) - command.Register(jsonfmt.Command) - command.Register(finddoc.Command) - command.Register(runcmd.Command) - command.Register(docview.Command) - command.Register(astview.Command) - command.Register(gopresent.Command) - command.Register(goapi.Command) - command.Register(pkgs.Command) - command.Register(oracle.Command) - command.Register(gofmt.Command) - command.Register(gotest.Command) - command.Register(finddecl.Command) - command.Register(terminal.Command) -} - -func main() { - command.AppName = "gotools" - command.AppVersion = "1.9" - command.AppInfo = "Go tools for liteide." - command.Main() -} diff --git a/vendor/github.com/visualfc/gotools/oracle/oracle.go b/vendor/github.com/visualfc/gotools/oracle/oracle.go deleted file mode 100644 index adb237e..0000000 --- a/vendor/github.com/visualfc/gotools/oracle/oracle.go +++ /dev/null @@ -1,103 +0,0 @@ -// Copyright 2011-2015 visualfc . All rights reserved. -// Use of this source code is governed by a BSD-style -// license that can be found in the LICENSE file. - -package oracle - -import ( - "fmt" - "go/build" - "os" - "runtime" - - "github.com/visualfc/gotools/command" - "github.com/visualfc/gotools/oracle/oracle" -) - -//The mode argument determines the query to perform: - -// callees show possible targets of selected function call -// callers show possible callers of selected function -// callgraph show complete callgraph of program -// callstack show path from callgraph root to selected function -// describe describe selected syntax: definition, methods, etc -// freevars show free variables of selection -// implements show 'implements' relation for selected type -// peers show send/receive corresponding to selected channel op -// referrers show all refs to entity denoted by selected identifier -// what show basic information about the selected syntax node - -var Command = &command.Command{ - Run: runOracle, - UsageLine: "oracle", - Short: "golang oracle util", - Long: `golang oracle util.`, -} - -var ( - oraclePos string - oracleReflect bool -) - -func init() { - Command.Flag.StringVar(&oraclePos, "pos", "", "filename:#offset") - Command.Flag.BoolVar(&oracleReflect, "reflect", false, "Analyze reflection soundly (slow).") -} - -func runOracle(cmd *command.Command, args []string) error { - if len(args) < 2 { - cmd.Usage() - return os.ErrInvalid - } - if os.Getenv("GOMAXPROCS") == "" { - n := runtime.NumCPU() - if n < 4 { - n = 4 - } - runtime.GOMAXPROCS(n) - } - mode := args[0] - args = args[1:] - // if args[0] == "." { - // pkgPath, err := os.Getwd() - // if err != nil { - // log.Fatalln(err) - // } - // pkg, err := build.Default.ImportDir(pkgPath, 0) - // if err != nil { - // log.Fatalln(err) - // } - // args = pkg.GoFiles - // //log.Println(pkg.ImportPath) - // if pkg.ImportPath != "." && pkg.ImportPath != "" { - // args = []string{pkg.ImportPath} - // } - // } - query := oracle.Query{ - Mode: mode, - Pos: oraclePos, - Build: &build.Default, - Scope: args, - PTALog: nil, - Reflection: oracleReflect, - } - - if err := oracle.Run(&query); err != nil { - fmt.Fprintf(os.Stderr, "oracle: %s.\n", err) - return err - } - - if mode == "referrers" { - ref := query.Serial().Referrers - if ref != nil { - fmt.Fprintln(os.Stdout, ref.Desc) - fmt.Fprintln(os.Stdout, ref.ObjPos) - for _, v := range ref.Refs { - fmt.Fprintln(os.Stdout, v) - } - } - } else { - query.WriteTo(os.Stdout) - } - return nil -} diff --git a/vendor/github.com/visualfc/gotools/oracle/oracle/TODO b/vendor/github.com/visualfc/gotools/oracle/oracle/TODO deleted file mode 100644 index 8fbf5e8..0000000 --- a/vendor/github.com/visualfc/gotools/oracle/oracle/TODO +++ /dev/null @@ -1,83 +0,0 @@ - - -ORACLE TODO -=========== - -General -======= - -Save unsaved editor buffers into an archive and provide that to the -tools, which should act as if they were saved. - -Include complete pos/end information Serial output. - But beware that sometimes a single token (e.g. +) is more helpful - than the pos/end of the containing expression (e.g. x \n + \n y). - -Specific queries -================ - -callers, callees - - Use a type-based (e.g. RTA) callgraph when a callers/callees query is - outside the analysis scope. - -implements - - Make it require that the selection is a type, and show only the - implements relation as it applies to that type. - -definition, referrers - - definition: Make it work with qualified identifiers (SelectorExpr) too. - - references: Make it work on things that are implicit idents, like - import specs, perhaps? - -what - - Report def/ref info if available. - Editors could use it to highlight all idents of the same local var. - - More tests. - -pointsto - - When invoked on a function Ident, we get an error. - - When invoked on a named return parameter, we get an error. - -describe - - When invoked on a var, we want to see the type and its methods. - - Split "show type" and "describe syntax" into separate commands? - -peers - - Permit querying from a makechan, for...range, or reflective op. - - Report aliasing reflect.{Send,Recv,Close} and close() operations. - -New queries - -"updaters": show all statements that may update the selected lvalue - (local, global, field, etc). - -"creators": show all places where an object of type T is created - (&T{}, var t T, new(T), new(struct{array [3]T}), etc. - (Useful for datatypes whose zero value is not safe) - - -Editor-specific -=============== - -Add support for "what" to .el; clean up. - -Emacs: use JSON to get the raw information from the oracle. Don't - open an editor buffer for simpler queries, just jump to the result - and/or display it in the modeline. - -Emacs: go-root-and-paths depends on the current buffer, so be sure to - call it from within the source file, not the *go-oracle* buffer: - the user may have switched workspaces and the oracle should run in - the new one. diff --git a/vendor/github.com/visualfc/gotools/oracle/oracle/callees.go b/vendor/github.com/visualfc/gotools/oracle/oracle/callees.go deleted file mode 100644 index a2fdd7e..0000000 --- a/vendor/github.com/visualfc/gotools/oracle/oracle/callees.go +++ /dev/null @@ -1,260 +0,0 @@ -// Copyright 2013 The Go Authors. All rights reserved. -// Use of this source code is governed by a BSD-style -// license that can be found in the LICENSE file. - -// +build go1.5 - -package oracle - -import ( - "fmt" - "go/ast" - "go/token" - "go/types" - "sort" - - "github.com/visualfc/gotools/oracle/oracle/serial" - "golang.org/x/tools/go/loader" - "golang.org/x/tools/go/pointer" - "golang.org/x/tools/go/ssa" - "golang.org/x/tools/go/ssa/ssautil" -) - -// Callees reports the possible callees of the function call site -// identified by the specified source location. -func callees(q *Query) error { - lconf := loader.Config{Build: q.Build} - - if err := setPTAScope(&lconf, q.Scope); err != nil { - return err - } - - // Load/parse/type-check the program. - lprog, err := lconf.Load() - if err != nil { - return err - } - q.Fset = lprog.Fset - - qpos, err := parseQueryPos(lprog, q.Pos, true) // needs exact pos - if err != nil { - return err - } - - // Determine the enclosing call for the specified position. - var e *ast.CallExpr - for _, n := range qpos.path { - if e, _ = n.(*ast.CallExpr); e != nil { - break - } - } - if e == nil { - return fmt.Errorf("there is no function call here") - } - // TODO(adonovan): issue an error if the call is "too far - // away" from the current selection, as this most likely is - // not what the user intended. - - // Reject type conversions. - if qpos.info.Types[e.Fun].IsType() { - return fmt.Errorf("this is a type conversion, not a function call") - } - - // Deal with obviously static calls before constructing SSA form. - // Some static calls may yet require SSA construction, - // e.g. f := func(){}; f(). - switch funexpr := unparen(e.Fun).(type) { - case *ast.Ident: - switch obj := qpos.info.Uses[funexpr].(type) { - case *types.Builtin: - // Reject calls to built-ins. - return fmt.Errorf("this is a call to the built-in '%s' operator", obj.Name()) - case *types.Func: - // This is a static function call - q.result = &calleesTypesResult{ - site: e, - callee: obj, - } - return nil - } - case *ast.SelectorExpr: - sel := qpos.info.Selections[funexpr] - if sel == nil { - // qualified identifier. - // May refer to top level function variable - // or to top level function. - callee := qpos.info.Uses[funexpr.Sel] - if obj, ok := callee.(*types.Func); ok { - q.result = &calleesTypesResult{ - site: e, - callee: obj, - } - return nil - } - } else if sel.Kind() == types.MethodVal { - // Inspect the receiver type of the selected method. - // If it is concrete, the call is statically dispatched. - // (Due to implicit field selections, it is not enough to look - // at sel.Recv(), the type of the actual receiver expression.) - method := sel.Obj().(*types.Func) - recvtype := method.Type().(*types.Signature).Recv().Type() - if !types.IsInterface(recvtype) { - // static method call - q.result = &calleesTypesResult{ - site: e, - callee: method, - } - return nil - } - } - } - - prog := ssautil.CreateProgram(lprog, ssa.GlobalDebug) - - ptaConfig, err := setupPTA(prog, lprog, q.PTALog, q.Reflection) - if err != nil { - return err - } - - pkg := prog.Package(qpos.info.Pkg) - if pkg == nil { - return fmt.Errorf("no SSA package") - } - - // Defer SSA construction till after errors are reported. - prog.Build() - - // Ascertain calling function and call site. - callerFn := ssa.EnclosingFunction(pkg, qpos.path) - if callerFn == nil { - return fmt.Errorf("no SSA function built for this location (dead code?)") - } - - // Find the call site. - site, err := findCallSite(callerFn, e) - if err != nil { - return err - } - - funcs, err := findCallees(ptaConfig, site) - if err != nil { - return err - } - - q.result = &calleesSSAResult{ - site: site, - funcs: funcs, - } - return nil -} - -func findCallSite(fn *ssa.Function, call *ast.CallExpr) (ssa.CallInstruction, error) { - instr, _ := fn.ValueForExpr(call) - callInstr, _ := instr.(ssa.CallInstruction) - if instr == nil { - return nil, fmt.Errorf("this call site is unreachable in this analysis") - } - return callInstr, nil -} - -func findCallees(conf *pointer.Config, site ssa.CallInstruction) ([]*ssa.Function, error) { - // Avoid running the pointer analysis for static calls. - if callee := site.Common().StaticCallee(); callee != nil { - switch callee.String() { - case "runtime.SetFinalizer", "(reflect.Value).Call": - // The PTA treats calls to these intrinsics as dynamic. - // TODO(adonovan): avoid reliance on PTA internals. - - default: - return []*ssa.Function{callee}, nil // singleton - } - } - - // Dynamic call: use pointer analysis. - conf.BuildCallGraph = true - cg := ptrAnalysis(conf).CallGraph - cg.DeleteSyntheticNodes() - - // Find all call edges from the site. - n := cg.Nodes[site.Parent()] - if n == nil { - return nil, fmt.Errorf("this call site is unreachable in this analysis") - } - calleesMap := make(map[*ssa.Function]bool) - for _, edge := range n.Out { - if edge.Site == site { - calleesMap[edge.Callee.Func] = true - } - } - - // De-duplicate and sort. - funcs := make([]*ssa.Function, 0, len(calleesMap)) - for f := range calleesMap { - funcs = append(funcs, f) - } - sort.Sort(byFuncPos(funcs)) - return funcs, nil -} - -type calleesSSAResult struct { - site ssa.CallInstruction - funcs []*ssa.Function -} - -type calleesTypesResult struct { - site *ast.CallExpr - callee *types.Func -} - -func (r *calleesSSAResult) display(printf printfFunc) { - if len(r.funcs) == 0 { - // dynamic call on a provably nil func/interface - printf(r.site, "%s on nil value", r.site.Common().Description()) - } else { - printf(r.site, "this %s dispatches to:", r.site.Common().Description()) - for _, callee := range r.funcs { - printf(callee, "\t%s", callee) - } - } -} - -func (r *calleesSSAResult) toSerial(res *serial.Result, fset *token.FileSet) { - j := &serial.Callees{ - Pos: fset.Position(r.site.Pos()).String(), - Desc: r.site.Common().Description(), - } - for _, callee := range r.funcs { - j.Callees = append(j.Callees, &serial.CalleesItem{ - Name: callee.String(), - Pos: fset.Position(callee.Pos()).String(), - }) - } - res.Callees = j -} - -func (r *calleesTypesResult) display(printf printfFunc) { - printf(r.site, "this static function call dispatches to:") - printf(r.callee, "\t%s", r.callee.FullName()) -} - -func (r *calleesTypesResult) toSerial(res *serial.Result, fset *token.FileSet) { - j := &serial.Callees{ - Pos: fset.Position(r.site.Pos()).String(), - Desc: "static function call", - } - j.Callees = []*serial.CalleesItem{ - &serial.CalleesItem{ - Name: r.callee.FullName(), - Pos: fset.Position(r.callee.Pos()).String(), - }, - } - res.Callees = j -} - -// NB: byFuncPos is not deterministic across packages since it depends on load order. -// Use lessPos if the tests need it. -type byFuncPos []*ssa.Function - -func (a byFuncPos) Len() int { return len(a) } -func (a byFuncPos) Less(i, j int) bool { return a[i].Pos() < a[j].Pos() } -func (a byFuncPos) Swap(i, j int) { a[i], a[j] = a[j], a[i] } diff --git a/vendor/github.com/visualfc/gotools/oracle/oracle/callers.go b/vendor/github.com/visualfc/gotools/oracle/oracle/callers.go deleted file mode 100644 index 8807360..0000000 --- a/vendor/github.com/visualfc/gotools/oracle/oracle/callers.go +++ /dev/null @@ -1,115 +0,0 @@ -// Copyright 2013 The Go Authors. All rights reserved. -// Use of this source code is governed by a BSD-style -// license that can be found in the LICENSE file. - -package oracle - -import ( - "fmt" - "go/token" - - "github.com/visualfc/gotools/oracle/oracle/serial" - "golang.org/x/tools/go/callgraph" - "golang.org/x/tools/go/loader" - "golang.org/x/tools/go/ssa" - "golang.org/x/tools/go/ssa/ssautil" -) - -// Callers reports the possible callers of the function -// immediately enclosing the specified source location. -// -func callers(q *Query) error { - lconf := loader.Config{Build: q.Build} - - if err := setPTAScope(&lconf, q.Scope); err != nil { - return err - } - - // Load/parse/type-check the program. - lprog, err := lconf.Load() - if err != nil { - return err - } - q.Fset = lprog.Fset - - qpos, err := parseQueryPos(lprog, q.Pos, false) - if err != nil { - return err - } - - prog := ssautil.CreateProgram(lprog, 0) - - ptaConfig, err := setupPTA(prog, lprog, q.PTALog, q.Reflection) - if err != nil { - return err - } - - pkg := prog.Package(qpos.info.Pkg) - if pkg == nil { - return fmt.Errorf("no SSA package") - } - if !ssa.HasEnclosingFunction(pkg, qpos.path) { - return fmt.Errorf("this position is not inside a function") - } - - // Defer SSA construction till after errors are reported. - prog.Build() - - target := ssa.EnclosingFunction(pkg, qpos.path) - if target == nil { - return fmt.Errorf("no SSA function built for this location (dead code?)") - } - - // TODO(adonovan): opt: if function is never address-taken, skip - // the pointer analysis. Just look for direct calls. This can - // be done in a single pass over the SSA. - - // Run the pointer analysis, recording each - // call found to originate from target. - ptaConfig.BuildCallGraph = true - cg := ptrAnalysis(ptaConfig).CallGraph - cg.DeleteSyntheticNodes() - edges := cg.CreateNode(target).In - // TODO(adonovan): sort + dedup calls to ensure test determinism. - - q.result = &callersResult{ - target: target, - callgraph: cg, - edges: edges, - } - return nil -} - -type callersResult struct { - target *ssa.Function - callgraph *callgraph.Graph - edges []*callgraph.Edge -} - -func (r *callersResult) display(printf printfFunc) { - root := r.callgraph.Root - if r.edges == nil { - printf(r.target, "%s is not reachable in this program.", r.target) - } else { - printf(r.target, "%s is called from these %d sites:", r.target, len(r.edges)) - for _, edge := range r.edges { - if edge.Caller == root { - printf(r.target, "the root of the call graph") - } else { - printf(edge, "\t%s from %s", edge.Description(), edge.Caller.Func) - } - } - } -} - -func (r *callersResult) toSerial(res *serial.Result, fset *token.FileSet) { - var callers []serial.Caller - for _, edge := range r.edges { - callers = append(callers, serial.Caller{ - Caller: edge.Caller.Func.String(), - Pos: fset.Position(edge.Pos()).String(), - Desc: edge.Description(), - }) - } - res.Callers = callers -} diff --git a/vendor/github.com/visualfc/gotools/oracle/oracle/callstack.go b/vendor/github.com/visualfc/gotools/oracle/oracle/callstack.go deleted file mode 100644 index afebdf7..0000000 --- a/vendor/github.com/visualfc/gotools/oracle/oracle/callstack.go +++ /dev/null @@ -1,126 +0,0 @@ -// Copyright 2013 The Go Authors. All rights reserved. -// Use of this source code is governed by a BSD-style -// license that can be found in the LICENSE file. - -package oracle - -import ( - "fmt" - "go/token" - - "github.com/visualfc/gotools/oracle/oracle/serial" - "golang.org/x/tools/go/callgraph" - "golang.org/x/tools/go/loader" - "golang.org/x/tools/go/ssa" - "golang.org/x/tools/go/ssa/ssautil" -) - -// Callstack displays an arbitrary path from a root of the callgraph -// to the function at the current position. -// -// The information may be misleading in a context-insensitive -// analysis. e.g. the call path X->Y->Z might be infeasible if Y never -// calls Z when it is called from X. TODO(adonovan): think about UI. -// -// TODO(adonovan): permit user to specify a starting point other than -// the analysis root. -// -func callstack(q *Query) error { - fset := token.NewFileSet() - lconf := loader.Config{Fset: fset, Build: q.Build} - - if err := setPTAScope(&lconf, q.Scope); err != nil { - return err - } - - // Load/parse/type-check the program. - lprog, err := lconf.Load() - if err != nil { - return err - } - - qpos, err := parseQueryPos(lprog, q.Pos, false) - if err != nil { - return err - } - - prog := ssautil.CreateProgram(lprog, 0) - - ptaConfig, err := setupPTA(prog, lprog, q.PTALog, q.Reflection) - if err != nil { - return err - } - - pkg := prog.Package(qpos.info.Pkg) - if pkg == nil { - return fmt.Errorf("no SSA package") - } - - if !ssa.HasEnclosingFunction(pkg, qpos.path) { - return fmt.Errorf("this position is not inside a function") - } - - // Defer SSA construction till after errors are reported. - prog.Build() - - target := ssa.EnclosingFunction(pkg, qpos.path) - if target == nil { - return fmt.Errorf("no SSA function built for this location (dead code?)") - } - - // Run the pointer analysis and build the complete call graph. - ptaConfig.BuildCallGraph = true - cg := ptrAnalysis(ptaConfig).CallGraph - cg.DeleteSyntheticNodes() - - // Search for an arbitrary path from a root to the target function. - isEnd := func(n *callgraph.Node) bool { return n.Func == target } - callpath := callgraph.PathSearch(cg.Root, isEnd) - if callpath != nil { - callpath = callpath[1:] // remove synthetic edge from - } - - q.Fset = fset - q.result = &callstackResult{ - qpos: qpos, - target: target, - callpath: callpath, - } - return nil -} - -type callstackResult struct { - qpos *queryPos - target *ssa.Function - callpath []*callgraph.Edge -} - -func (r *callstackResult) display(printf printfFunc) { - if r.callpath != nil { - printf(r.qpos, "Found a call path from root to %s", r.target) - printf(r.target, "%s", r.target) - for i := len(r.callpath) - 1; i >= 0; i-- { - edge := r.callpath[i] - printf(edge, "%s from %s", edge.Description(), edge.Caller.Func) - } - } else { - printf(r.target, "%s is unreachable in this analysis scope", r.target) - } -} - -func (r *callstackResult) toSerial(res *serial.Result, fset *token.FileSet) { - var callers []serial.Caller - for i := len(r.callpath) - 1; i >= 0; i-- { // (innermost first) - edge := r.callpath[i] - callers = append(callers, serial.Caller{ - Pos: fset.Position(edge.Pos()).String(), - Caller: edge.Caller.Func.String(), - Desc: edge.Description(), - }) - } - res.Callstack = &serial.CallStack{ - Pos: fset.Position(r.target.Pos()).String(), - Target: r.target.String(), - Callers: callers, - } -} diff --git a/vendor/github.com/visualfc/gotools/oracle/oracle/definition.go b/vendor/github.com/visualfc/gotools/oracle/oracle/definition.go deleted file mode 100644 index 2a0cbec..0000000 --- a/vendor/github.com/visualfc/gotools/oracle/oracle/definition.go +++ /dev/null @@ -1,78 +0,0 @@ -// Copyright 2013 The Go Authors. All rights reserved. -// Use of this source code is governed by a BSD-style -// license that can be found in the LICENSE file. - -// +build go1.5 - -package oracle - -import ( - "fmt" - "go/ast" - "go/token" - "go/types" - - "github.com/visualfc/gotools/oracle/oracle/serial" - "golang.org/x/tools/go/loader" -) - -// definition reports the location of the definition of an identifier. -// -// TODO(adonovan): opt: for intra-file references, the parser's -// resolution might be enough; we should start with that. -// -func definition(q *Query) error { - lconf := loader.Config{Build: q.Build} - allowErrors(&lconf) - - if _, err := importQueryPackage(q.Pos, &lconf); err != nil { - return err - } - - // Load/parse/type-check the program. - lprog, err := lconf.Load() - if err != nil { - return err - } - q.Fset = lprog.Fset - - qpos, err := parseQueryPos(lprog, q.Pos, false) - if err != nil { - return err - } - - id, _ := qpos.path[0].(*ast.Ident) - if id == nil { - return fmt.Errorf("no identifier here") - } - - obj := qpos.info.ObjectOf(id) - if obj == nil { - // Happens for y in "switch y := x.(type)", - // and the package declaration, - // but I think that's all. - return fmt.Errorf("no object for identifier") - } - - q.result = &definitionResult{qpos, obj} - return nil -} - -type definitionResult struct { - qpos *queryPos - obj types.Object // object it denotes -} - -func (r *definitionResult) display(printf printfFunc) { - printf(r.obj, "defined here as %s", r.qpos.objectString(r.obj)) -} - -func (r *definitionResult) toSerial(res *serial.Result, fset *token.FileSet) { - definition := &serial.Definition{ - Desc: r.obj.String(), - } - if pos := r.obj.Pos(); pos != token.NoPos { // Package objects have no Pos() - definition.ObjPos = fset.Position(pos).String() - } - res.Definition = definition -} diff --git a/vendor/github.com/visualfc/gotools/oracle/oracle/describe.go b/vendor/github.com/visualfc/gotools/oracle/oracle/describe.go deleted file mode 100644 index d445b52..0000000 --- a/vendor/github.com/visualfc/gotools/oracle/oracle/describe.go +++ /dev/null @@ -1,775 +0,0 @@ -// Copyright 2013 The Go Authors. All rights reserved. -// Use of this source code is governed by a BSD-style -// license that can be found in the LICENSE file. - -// +build go1.6 - -package oracle - -import ( - "bytes" - "fmt" - "go/ast" - exact "go/constant" - "go/token" - "go/types" - "log" - "os" - "strings" - - "github.com/visualfc/gotools/oracle/oracle/serial" - "golang.org/x/tools/go/ast/astutil" - "golang.org/x/tools/go/loader" - "golang.org/x/tools/go/types/typeutil" -) - -// describe describes the syntax node denoted by the query position, -// including: -// - its syntactic category -// - the definition of its referent (for identifiers) [now redundant] -// - its type and method set (for an expression or type expression) -// -func describe(q *Query) error { - lconf := loader.Config{Build: q.Build} - allowErrors(&lconf) - - if _, err := importQueryPackage(q.Pos, &lconf); err != nil { - return err - } - - // Load/parse/type-check the program. - lprog, err := lconf.Load() - if err != nil { - return err - } - q.Fset = lprog.Fset - - qpos, err := parseQueryPos(lprog, q.Pos, true) // (need exact pos) - if err != nil { - return err - } - - if false { // debugging - fprintf(os.Stderr, lprog.Fset, qpos.path[0], "you selected: %s %s", - astutil.NodeDescription(qpos.path[0]), pathToString(qpos.path)) - } - - path, action := findInterestingNode(qpos.info, qpos.path) - switch action { - case actionExpr: - q.result, err = describeValue(qpos, path) - - case actionType: - q.result, err = describeType(qpos, path) - - case actionPackage: - q.result, err = describePackage(qpos, path) - - case actionStmt: - q.result, err = describeStmt(qpos, path) - - case actionUnknown: - q.result = &describeUnknownResult{path[0]} - - default: - panic(action) // unreachable - } - return err -} - -type describeUnknownResult struct { - node ast.Node -} - -func (r *describeUnknownResult) display(printf printfFunc) { - // Nothing much to say about misc syntax. - printf(r.node, "%s", astutil.NodeDescription(r.node)) -} - -func (r *describeUnknownResult) toSerial(res *serial.Result, fset *token.FileSet) { - res.Describe = &serial.Describe{ - Desc: astutil.NodeDescription(r.node), - Pos: fset.Position(r.node.Pos()).String(), - } -} - -type action int - -const ( - actionUnknown action = iota // None of the below - actionExpr // FuncDecl, true Expr or Ident(types.{Const,Var}) - actionType // type Expr or Ident(types.TypeName). - actionStmt // Stmt or Ident(types.Label) - actionPackage // Ident(types.Package) or ImportSpec -) - -// findInterestingNode classifies the syntax node denoted by path as one of: -// - an expression, part of an expression or a reference to a constant -// or variable; -// - a type, part of a type, or a reference to a named type; -// - a statement, part of a statement, or a label referring to a statement; -// - part of a package declaration or import spec. -// - none of the above. -// and returns the most "interesting" associated node, which may be -// the same node, an ancestor or a descendent. -// -func findInterestingNode(pkginfo *loader.PackageInfo, path []ast.Node) ([]ast.Node, action) { - // TODO(adonovan): integrate with go/types/stdlib_test.go and - // apply this to every AST node we can find to make sure it - // doesn't crash. - - // TODO(adonovan): audit for ParenExpr safety, esp. since we - // traverse up and down. - - // TODO(adonovan): if the users selects the "." in - // "fmt.Fprintf()", they'll get an ambiguous selection error; - // we won't even reach here. Can we do better? - - // TODO(adonovan): describing a field within 'type T struct {...}' - // describes the (anonymous) struct type and concludes "no methods". - // We should ascend to the enclosing type decl, if any. - - for len(path) > 0 { - switch n := path[0].(type) { - case *ast.GenDecl: - if len(n.Specs) == 1 { - // Descend to sole {Import,Type,Value}Spec child. - path = append([]ast.Node{n.Specs[0]}, path...) - continue - } - return path, actionUnknown // uninteresting - - case *ast.FuncDecl: - // Descend to function name. - path = append([]ast.Node{n.Name}, path...) - continue - - case *ast.ImportSpec: - return path, actionPackage - - case *ast.ValueSpec: - if len(n.Names) == 1 { - // Descend to sole Ident child. - path = append([]ast.Node{n.Names[0]}, path...) - continue - } - return path, actionUnknown // uninteresting - - case *ast.TypeSpec: - // Descend to type name. - path = append([]ast.Node{n.Name}, path...) - continue - - case ast.Stmt: - return path, actionStmt - - case *ast.ArrayType, - *ast.StructType, - *ast.FuncType, - *ast.InterfaceType, - *ast.MapType, - *ast.ChanType: - return path, actionType - - case *ast.Comment, *ast.CommentGroup, *ast.File, *ast.KeyValueExpr, *ast.CommClause: - return path, actionUnknown // uninteresting - - case *ast.Ellipsis: - // Continue to enclosing node. - // e.g. [...]T in ArrayType - // f(x...) in CallExpr - // f(x...T) in FuncType - - case *ast.Field: - // TODO(adonovan): this needs more thought, - // since fields can be so many things. - if len(n.Names) == 1 { - // Descend to sole Ident child. - path = append([]ast.Node{n.Names[0]}, path...) - continue - } - // Zero names (e.g. anon field in struct) - // or multiple field or param names: - // continue to enclosing field list. - - case *ast.FieldList: - // Continue to enclosing node: - // {Struct,Func,Interface}Type or FuncDecl. - - case *ast.BasicLit: - if _, ok := path[1].(*ast.ImportSpec); ok { - return path[1:], actionPackage - } - return path, actionExpr - - case *ast.SelectorExpr: - // TODO(adonovan): use Selections info directly. - if pkginfo.Uses[n.Sel] == nil { - // TODO(adonovan): is this reachable? - return path, actionUnknown - } - // Descend to .Sel child. - path = append([]ast.Node{n.Sel}, path...) - continue - - case *ast.Ident: - switch pkginfo.ObjectOf(n).(type) { - case *types.PkgName: - return path, actionPackage - - case *types.Const: - return path, actionExpr - - case *types.Label: - return path, actionStmt - - case *types.TypeName: - return path, actionType - - case *types.Var: - // For x in 'struct {x T}', return struct type, for now. - if _, ok := path[1].(*ast.Field); ok { - _ = path[2].(*ast.FieldList) // assertion - if _, ok := path[3].(*ast.StructType); ok { - return path[3:], actionType - } - } - return path, actionExpr - - case *types.Func: - return path, actionExpr - - case *types.Builtin: - // For reference to built-in function, return enclosing call. - path = path[1:] // ascend to enclosing function call - continue - - case *types.Nil: - return path, actionExpr - } - - // No object. - switch path[1].(type) { - case *ast.SelectorExpr: - // Return enclosing selector expression. - return path[1:], actionExpr - - case *ast.Field: - // TODO(adonovan): test this. - // e.g. all f in: - // struct { f, g int } - // interface { f() } - // func (f T) method(f, g int) (f, g bool) - // - // switch path[3].(type) { - // case *ast.FuncDecl: - // case *ast.StructType: - // case *ast.InterfaceType: - // } - // - // return path[1:], actionExpr - // - // Unclear what to do with these. - // Struct.Fields -- field - // Interface.Methods -- field - // FuncType.{Params.Results} -- actionExpr - // FuncDecl.Recv -- actionExpr - - case *ast.File: - // 'package foo' - return path, actionPackage - - case *ast.ImportSpec: - // TODO(adonovan): fix: why no package object? go/types bug? - return path[1:], actionPackage - - default: - // e.g. blank identifier - // or y in "switch y := x.(type)" - // or code in a _test.go file that's not part of the package. - log.Printf("unknown reference %s in %T\n", n, path[1]) - return path, actionUnknown - } - - case *ast.StarExpr: - if pkginfo.Types[n].IsType() { - return path, actionType - } - return path, actionExpr - - case ast.Expr: - // All Expr but {BasicLit,Ident,StarExpr} are - // "true" expressions that evaluate to a value. - return path, actionExpr - } - - // Ascend to parent. - path = path[1:] - } - - return nil, actionUnknown // unreachable -} - -func describeValue(qpos *queryPos, path []ast.Node) (*describeValueResult, error) { - var expr ast.Expr - var obj types.Object - switch n := path[0].(type) { - case *ast.ValueSpec: - // ambiguous ValueSpec containing multiple names - return nil, fmt.Errorf("multiple value specification") - case *ast.Ident: - obj = qpos.info.ObjectOf(n) - expr = n - case ast.Expr: - expr = n - default: - // TODO(adonovan): is this reachable? - return nil, fmt.Errorf("unexpected AST for expr: %T", n) - } - - typ := qpos.info.TypeOf(expr) - constVal := qpos.info.Types[expr].Value - - return &describeValueResult{ - qpos: qpos, - expr: expr, - typ: typ, - constVal: constVal, - obj: obj, - }, nil -} - -type describeValueResult struct { - qpos *queryPos - expr ast.Expr // query node - typ types.Type // type of expression - constVal exact.Value // value of expression, if constant - obj types.Object // var/func/const object, if expr was Ident -} - -func (r *describeValueResult) display(printf printfFunc) { - var prefix, suffix string - if r.constVal != nil { - suffix = fmt.Sprintf(" of constant value %s", r.constVal) - } - switch obj := r.obj.(type) { - case *types.Func: - if recv := obj.Type().(*types.Signature).Recv(); recv != nil { - if _, ok := recv.Type().Underlying().(*types.Interface); ok { - prefix = "interface method " - } else { - prefix = "method " - } - } - } - - // Describe the expression. - if r.obj != nil { - if r.obj.Pos() == r.expr.Pos() { - // defining ident - printf(r.expr, "definition of %s%s%s", prefix, r.qpos.objectString(r.obj), suffix) - } else { - // referring ident - printf(r.expr, "reference to %s%s%s", prefix, r.qpos.objectString(r.obj), suffix) - if def := r.obj.Pos(); def != token.NoPos { - printf(def, "defined here") - } - } - } else { - desc := astutil.NodeDescription(r.expr) - if suffix != "" { - // constant expression - printf(r.expr, "%s%s", desc, suffix) - } else { - // non-constant expression - printf(r.expr, "%s of type %s", desc, r.qpos.typeString(r.typ)) - } - } -} - -func (r *describeValueResult) toSerial(res *serial.Result, fset *token.FileSet) { - var value, objpos string - if r.constVal != nil { - value = r.constVal.String() - } - if r.obj != nil { - objpos = fset.Position(r.obj.Pos()).String() - } - - res.Describe = &serial.Describe{ - Desc: astutil.NodeDescription(r.expr), - Pos: fset.Position(r.expr.Pos()).String(), - Detail: "value", - Value: &serial.DescribeValue{ - Type: r.qpos.typeString(r.typ), - Value: value, - ObjPos: objpos, - }, - } -} - -// ---- TYPE ------------------------------------------------------------ - -func describeType(qpos *queryPos, path []ast.Node) (*describeTypeResult, error) { - var description string - var t types.Type - switch n := path[0].(type) { - case *ast.Ident: - t = qpos.info.TypeOf(n) - switch t := t.(type) { - case *types.Basic: - description = "reference to built-in " - - case *types.Named: - isDef := t.Obj().Pos() == n.Pos() // see caveats at isDef above - if isDef { - description = "definition of " - } else { - description = "reference to " - } - } - - case ast.Expr: - t = qpos.info.TypeOf(n) - - default: - // Unreachable? - return nil, fmt.Errorf("unexpected AST for type: %T", n) - } - - description = description + "type " + qpos.typeString(t) - - // Show sizes for structs and named types (it's fairly obvious for others). - switch t.(type) { - case *types.Named, *types.Struct: - szs := types.StdSizes{WordSize: 8, MaxAlign: 8} // assume amd64 - description = fmt.Sprintf("%s (size %d, align %d)", description, - szs.Sizeof(t), szs.Alignof(t)) - } - - return &describeTypeResult{ - qpos: qpos, - node: path[0], - description: description, - typ: t, - methods: accessibleMethods(t, qpos.info.Pkg), - }, nil -} - -type describeTypeResult struct { - qpos *queryPos - node ast.Node - description string - typ types.Type - methods []*types.Selection -} - -func (r *describeTypeResult) display(printf printfFunc) { - printf(r.node, "%s", r.description) - - // Show the underlying type for a reference to a named type. - if nt, ok := r.typ.(*types.Named); ok && r.node.Pos() != nt.Obj().Pos() { - printf(nt.Obj(), "defined as %s", r.qpos.typeString(nt.Underlying())) - } - - // Print the method set, if the type kind is capable of bearing methods. - switch r.typ.(type) { - case *types.Interface, *types.Struct, *types.Named: - if len(r.methods) > 0 { - printf(r.node, "Method set:") - for _, meth := range r.methods { - // TODO(adonovan): print these relative - // to the owning package, not the - // query package. - printf(meth.Obj(), "\t%s", r.qpos.selectionString(meth)) - } - } else { - printf(r.node, "No methods.") - } - } -} - -func (r *describeTypeResult) toSerial(res *serial.Result, fset *token.FileSet) { - var namePos, nameDef string - if nt, ok := r.typ.(*types.Named); ok { - namePos = fset.Position(nt.Obj().Pos()).String() - nameDef = nt.Underlying().String() - } - res.Describe = &serial.Describe{ - Desc: r.description, - Pos: fset.Position(r.node.Pos()).String(), - Detail: "type", - Type: &serial.DescribeType{ - Type: r.qpos.typeString(r.typ), - NamePos: namePos, - NameDef: nameDef, - Methods: methodsToSerial(r.qpos.info.Pkg, r.methods, fset), - }, - } -} - -// ---- PACKAGE ------------------------------------------------------------ - -func describePackage(qpos *queryPos, path []ast.Node) (*describePackageResult, error) { - var description string - var pkg *types.Package - switch n := path[0].(type) { - case *ast.ImportSpec: - var obj types.Object - if n.Name != nil { - obj = qpos.info.Defs[n.Name] - } else { - obj = qpos.info.Implicits[n] - } - pkgname, _ := obj.(*types.PkgName) - if pkgname == nil { - return nil, fmt.Errorf("can't import package %s", n.Path.Value) - } - pkg = pkgname.Imported() - description = fmt.Sprintf("import of package %q", pkg.Path()) - - case *ast.Ident: - if _, isDef := path[1].(*ast.File); isDef { - // e.g. package id - pkg = qpos.info.Pkg - description = fmt.Sprintf("definition of package %q", pkg.Path()) - } else { - // e.g. import id "..." - // or id.F() - pkg = qpos.info.ObjectOf(n).(*types.PkgName).Imported() - description = fmt.Sprintf("reference to package %q", pkg.Path()) - } - - default: - // Unreachable? - return nil, fmt.Errorf("unexpected AST for package: %T", n) - } - - var members []*describeMember - // NB: "unsafe" has no types.Package - if pkg != nil { - // Enumerate the accessible package members - // in lexicographic order. - for _, name := range pkg.Scope().Names() { - if pkg == qpos.info.Pkg || ast.IsExported(name) { - mem := pkg.Scope().Lookup(name) - var methods []*types.Selection - if mem, ok := mem.(*types.TypeName); ok { - methods = accessibleMethods(mem.Type(), qpos.info.Pkg) - } - members = append(members, &describeMember{ - mem, - methods, - }) - - } - } - } - - return &describePackageResult{qpos.fset, path[0], description, pkg, members}, nil -} - -type describePackageResult struct { - fset *token.FileSet - node ast.Node - description string - pkg *types.Package - members []*describeMember // in lexicographic name order -} - -type describeMember struct { - obj types.Object - methods []*types.Selection // in types.MethodSet order -} - -func (r *describePackageResult) display(printf printfFunc) { - printf(r.node, "%s", r.description) - - // Compute max width of name "column". - maxname := 0 - for _, mem := range r.members { - if l := len(mem.obj.Name()); l > maxname { - maxname = l - } - } - - for _, mem := range r.members { - printf(mem.obj, "\t%s", formatMember(mem.obj, maxname)) - for _, meth := range mem.methods { - printf(meth.Obj(), "\t\t%s", types.SelectionString(meth, types.RelativeTo(r.pkg))) - } - } -} - -func formatMember(obj types.Object, maxname int) string { - qualifier := types.RelativeTo(obj.Pkg()) - var buf bytes.Buffer - fmt.Fprintf(&buf, "%-5s %-*s", tokenOf(obj), maxname, obj.Name()) - switch obj := obj.(type) { - case *types.Const: - fmt.Fprintf(&buf, " %s = %s", types.TypeString(obj.Type(), qualifier), obj.Val().String()) - - case *types.Func: - fmt.Fprintf(&buf, " %s", types.TypeString(obj.Type(), qualifier)) - - case *types.TypeName: - // Abbreviate long aggregate type names. - var abbrev string - switch t := obj.Type().Underlying().(type) { - case *types.Interface: - if t.NumMethods() > 1 { - abbrev = "interface{...}" - } - case *types.Struct: - if t.NumFields() > 1 { - abbrev = "struct{...}" - } - } - if abbrev == "" { - fmt.Fprintf(&buf, " %s", types.TypeString(obj.Type().Underlying(), qualifier)) - } else { - fmt.Fprintf(&buf, " %s", abbrev) - } - - case *types.Var: - fmt.Fprintf(&buf, " %s", types.TypeString(obj.Type(), qualifier)) - } - return buf.String() -} - -func (r *describePackageResult) toSerial(res *serial.Result, fset *token.FileSet) { - var members []*serial.DescribeMember - for _, mem := range r.members { - typ := mem.obj.Type() - var val string - switch mem := mem.obj.(type) { - case *types.Const: - val = mem.Val().String() - case *types.TypeName: - typ = typ.Underlying() - } - members = append(members, &serial.DescribeMember{ - Name: mem.obj.Name(), - Type: typ.String(), - Value: val, - Pos: fset.Position(mem.obj.Pos()).String(), - Kind: tokenOf(mem.obj), - Methods: methodsToSerial(r.pkg, mem.methods, fset), - }) - } - res.Describe = &serial.Describe{ - Desc: r.description, - Pos: fset.Position(r.node.Pos()).String(), - Detail: "package", - Package: &serial.DescribePackage{ - Path: r.pkg.Path(), - Members: members, - }, - } -} - -func tokenOf(o types.Object) string { - switch o.(type) { - case *types.Func: - return "func" - case *types.Var: - return "var" - case *types.TypeName: - return "type" - case *types.Const: - return "const" - case *types.PkgName: - return "package" - case *types.Builtin: - return "builtin" // e.g. when describing package "unsafe" - case *types.Nil: - return "nil" - case *types.Label: - return "label" - } - panic(o) -} - -// ---- STATEMENT ------------------------------------------------------------ - -func describeStmt(qpos *queryPos, path []ast.Node) (*describeStmtResult, error) { - var description string - switch n := path[0].(type) { - case *ast.Ident: - if qpos.info.Defs[n] != nil { - description = "labelled statement" - } else { - description = "reference to labelled statement" - } - - default: - // Nothing much to say about statements. - description = astutil.NodeDescription(n) - } - return &describeStmtResult{qpos.fset, path[0], description}, nil -} - -type describeStmtResult struct { - fset *token.FileSet - node ast.Node - description string -} - -func (r *describeStmtResult) display(printf printfFunc) { - printf(r.node, "%s", r.description) -} - -func (r *describeStmtResult) toSerial(res *serial.Result, fset *token.FileSet) { - res.Describe = &serial.Describe{ - Desc: r.description, - Pos: fset.Position(r.node.Pos()).String(), - Detail: "unknown", - } -} - -// ------------------- Utilities ------------------- - -// pathToString returns a string containing the concrete types of the -// nodes in path. -func pathToString(path []ast.Node) string { - var buf bytes.Buffer - fmt.Fprint(&buf, "[") - for i, n := range path { - if i > 0 { - fmt.Fprint(&buf, " ") - } - fmt.Fprint(&buf, strings.TrimPrefix(fmt.Sprintf("%T", n), "*ast.")) - } - fmt.Fprint(&buf, "]") - return buf.String() -} - -func accessibleMethods(t types.Type, from *types.Package) []*types.Selection { - var methods []*types.Selection - for _, meth := range typeutil.IntuitiveMethodSet(t, nil) { - if isAccessibleFrom(meth.Obj(), from) { - methods = append(methods, meth) - } - } - return methods -} - -func isAccessibleFrom(obj types.Object, pkg *types.Package) bool { - return ast.IsExported(obj.Name()) || obj.Pkg() == pkg -} - -func methodsToSerial(this *types.Package, methods []*types.Selection, fset *token.FileSet) []serial.DescribeMethod { - qualifier := types.RelativeTo(this) - var jmethods []serial.DescribeMethod - for _, meth := range methods { - var ser serial.DescribeMethod - if meth != nil { // may contain nils when called by implements (on a method) - ser = serial.DescribeMethod{ - Name: types.SelectionString(meth, qualifier), - Pos: fset.Position(meth.Obj().Pos()).String(), - } - } - jmethods = append(jmethods, ser) - } - return jmethods -} diff --git a/vendor/github.com/visualfc/gotools/oracle/oracle/describe15.go b/vendor/github.com/visualfc/gotools/oracle/oracle/describe15.go deleted file mode 100644 index 5069e40..0000000 --- a/vendor/github.com/visualfc/gotools/oracle/oracle/describe15.go +++ /dev/null @@ -1,786 +0,0 @@ -// Copyright 2013 The Go Authors. All rights reserved. -// Use of this source code is governed by a BSD-style -// license that can be found in the LICENSE file. - -// +build go1.5,!go1.6 - -package oracle - -import ( - "bytes" - "fmt" - "go/ast" - exact "go/constant" - "go/token" - "go/types" - "log" - "os" - "strings" - - "github.com/visualfc/gotools/oracle/oracle/serial" - "golang.org/x/tools/go/ast/astutil" - "golang.org/x/tools/go/loader" - "golang.org/x/tools/go/types/typeutil" -) - -// describe describes the syntax node denoted by the query position, -// including: -// - its syntactic category -// - the definition of its referent (for identifiers) [now redundant] -// - its type and method set (for an expression or type expression) -// -func describe(q *Query) error { - lconf := loader.Config{Build: q.Build} - allowErrors(&lconf) - - if _, err := importQueryPackage(q.Pos, &lconf); err != nil { - return err - } - - // Load/parse/type-check the program. - lprog, err := lconf.Load() - if err != nil { - return err - } - q.Fset = lprog.Fset - - qpos, err := parseQueryPos(lprog, q.Pos, true) // (need exact pos) - if err != nil { - return err - } - - if false { // debugging - fprintf(os.Stderr, lprog.Fset, qpos.path[0], "you selected: %s %s", - astutil.NodeDescription(qpos.path[0]), pathToString(qpos.path)) - } - - path, action := findInterestingNode(qpos.info, qpos.path) - switch action { - case actionExpr: - q.result, err = describeValue(qpos, path) - - case actionType: - q.result, err = describeType(qpos, path) - - case actionPackage: - q.result, err = describePackage(qpos, path) - - case actionStmt: - q.result, err = describeStmt(qpos, path) - - case actionUnknown: - q.result = &describeUnknownResult{path[0]} - - default: - panic(action) // unreachable - } - return err -} - -type describeUnknownResult struct { - node ast.Node -} - -func (r *describeUnknownResult) display(printf printfFunc) { - // Nothing much to say about misc syntax. - printf(r.node, "%s", astutil.NodeDescription(r.node)) -} - -func (r *describeUnknownResult) toSerial(res *serial.Result, fset *token.FileSet) { - res.Describe = &serial.Describe{ - Desc: astutil.NodeDescription(r.node), - Pos: fset.Position(r.node.Pos()).String(), - } -} - -type action int - -const ( - actionUnknown action = iota // None of the below - actionExpr // FuncDecl, true Expr or Ident(types.{Const,Var}) - actionType // type Expr or Ident(types.TypeName). - actionStmt // Stmt or Ident(types.Label) - actionPackage // Ident(types.Package) or ImportSpec -) - -// findInterestingNode classifies the syntax node denoted by path as one of: -// - an expression, part of an expression or a reference to a constant -// or variable; -// - a type, part of a type, or a reference to a named type; -// - a statement, part of a statement, or a label referring to a statement; -// - part of a package declaration or import spec. -// - none of the above. -// and returns the most "interesting" associated node, which may be -// the same node, an ancestor or a descendent. -// -func findInterestingNode(pkginfo *loader.PackageInfo, path []ast.Node) ([]ast.Node, action) { - // TODO(adonovan): integrate with go/types/stdlib_test.go and - // apply this to every AST node we can find to make sure it - // doesn't crash. - - // TODO(adonovan): audit for ParenExpr safety, esp. since we - // traverse up and down. - - // TODO(adonovan): if the users selects the "." in - // "fmt.Fprintf()", they'll get an ambiguous selection error; - // we won't even reach here. Can we do better? - - // TODO(adonovan): describing a field within 'type T struct {...}' - // describes the (anonymous) struct type and concludes "no methods". - // We should ascend to the enclosing type decl, if any. - - for len(path) > 0 { - switch n := path[0].(type) { - case *ast.GenDecl: - if len(n.Specs) == 1 { - // Descend to sole {Import,Type,Value}Spec child. - path = append([]ast.Node{n.Specs[0]}, path...) - continue - } - return path, actionUnknown // uninteresting - - case *ast.FuncDecl: - // Descend to function name. - path = append([]ast.Node{n.Name}, path...) - continue - - case *ast.ImportSpec: - return path, actionPackage - - case *ast.ValueSpec: - if len(n.Names) == 1 { - // Descend to sole Ident child. - path = append([]ast.Node{n.Names[0]}, path...) - continue - } - return path, actionUnknown // uninteresting - - case *ast.TypeSpec: - // Descend to type name. - path = append([]ast.Node{n.Name}, path...) - continue - - case ast.Stmt: - return path, actionStmt - - case *ast.ArrayType, - *ast.StructType, - *ast.FuncType, - *ast.InterfaceType, - *ast.MapType, - *ast.ChanType: - return path, actionType - - case *ast.Comment, *ast.CommentGroup, *ast.File, *ast.KeyValueExpr, *ast.CommClause: - return path, actionUnknown // uninteresting - - case *ast.Ellipsis: - // Continue to enclosing node. - // e.g. [...]T in ArrayType - // f(x...) in CallExpr - // f(x...T) in FuncType - - case *ast.Field: - // TODO(adonovan): this needs more thought, - // since fields can be so many things. - if len(n.Names) == 1 { - // Descend to sole Ident child. - path = append([]ast.Node{n.Names[0]}, path...) - continue - } - // Zero names (e.g. anon field in struct) - // or multiple field or param names: - // continue to enclosing field list. - - case *ast.FieldList: - // Continue to enclosing node: - // {Struct,Func,Interface}Type or FuncDecl. - - case *ast.BasicLit: - if _, ok := path[1].(*ast.ImportSpec); ok { - return path[1:], actionPackage - } - return path, actionExpr - - case *ast.SelectorExpr: - // TODO(adonovan): use Selections info directly. - if pkginfo.Uses[n.Sel] == nil { - // TODO(adonovan): is this reachable? - return path, actionUnknown - } - // Descend to .Sel child. - path = append([]ast.Node{n.Sel}, path...) - continue - - case *ast.Ident: - switch pkginfo.ObjectOf(n).(type) { - case *types.PkgName: - return path, actionPackage - - case *types.Const: - return path, actionExpr - - case *types.Label: - return path, actionStmt - - case *types.TypeName: - return path, actionType - - case *types.Var: - // For x in 'struct {x T}', return struct type, for now. - if _, ok := path[1].(*ast.Field); ok { - _ = path[2].(*ast.FieldList) // assertion - if _, ok := path[3].(*ast.StructType); ok { - return path[3:], actionType - } - } - return path, actionExpr - - case *types.Func: - return path, actionExpr - - case *types.Builtin: - // For reference to built-in function, return enclosing call. - path = path[1:] // ascend to enclosing function call - continue - - case *types.Nil: - return path, actionExpr - } - - // No object. - switch path[1].(type) { - case *ast.SelectorExpr: - // Return enclosing selector expression. - return path[1:], actionExpr - - case *ast.Field: - // TODO(adonovan): test this. - // e.g. all f in: - // struct { f, g int } - // interface { f() } - // func (f T) method(f, g int) (f, g bool) - // - // switch path[3].(type) { - // case *ast.FuncDecl: - // case *ast.StructType: - // case *ast.InterfaceType: - // } - // - // return path[1:], actionExpr - // - // Unclear what to do with these. - // Struct.Fields -- field - // Interface.Methods -- field - // FuncType.{Params.Results} -- actionExpr - // FuncDecl.Recv -- actionExpr - - case *ast.File: - // 'package foo' - return path, actionPackage - - case *ast.ImportSpec: - // TODO(adonovan): fix: why no package object? go/types bug? - return path[1:], actionPackage - - default: - // e.g. blank identifier - // or y in "switch y := x.(type)" - // or code in a _test.go file that's not part of the package. - log.Printf("unknown reference %s in %T\n", n, path[1]) - return path, actionUnknown - } - - case *ast.StarExpr: - if pkginfo.Types[n].IsType() { - return path, actionType - } - return path, actionExpr - - case ast.Expr: - // All Expr but {BasicLit,Ident,StarExpr} are - // "true" expressions that evaluate to a value. - return path, actionExpr - } - - // Ascend to parent. - path = path[1:] - } - - return nil, actionUnknown // unreachable -} - -func describeValue(qpos *queryPos, path []ast.Node) (*describeValueResult, error) { - var expr ast.Expr - var obj types.Object - switch n := path[0].(type) { - case *ast.ValueSpec: - // ambiguous ValueSpec containing multiple names - return nil, fmt.Errorf("multiple value specification") - case *ast.Ident: - obj = qpos.info.ObjectOf(n) - expr = n - case ast.Expr: - expr = n - default: - // TODO(adonovan): is this reachable? - return nil, fmt.Errorf("unexpected AST for expr: %T", n) - } - - typ := qpos.info.TypeOf(expr) - constVal := qpos.info.Types[expr].Value - - return &describeValueResult{ - qpos: qpos, - expr: expr, - typ: typ, - constVal: constVal, - obj: obj, - }, nil -} - -type describeValueResult struct { - qpos *queryPos - expr ast.Expr // query node - typ types.Type // type of expression - constVal exact.Value // value of expression, if constant - obj types.Object // var/func/const object, if expr was Ident -} - -func (r *describeValueResult) display(printf printfFunc) { - var prefix, suffix string - if r.constVal != nil { - suffix = fmt.Sprintf(" of constant value %s", constValString(r.constVal)) - } - switch obj := r.obj.(type) { - case *types.Func: - if recv := obj.Type().(*types.Signature).Recv(); recv != nil { - if _, ok := recv.Type().Underlying().(*types.Interface); ok { - prefix = "interface method " - } else { - prefix = "method " - } - } - } - - // Describe the expression. - if r.obj != nil { - if r.obj.Pos() == r.expr.Pos() { - // defining ident - printf(r.expr, "definition of %s%s%s", prefix, r.qpos.objectString(r.obj), suffix) - } else { - // referring ident - printf(r.expr, "reference to %s%s%s", prefix, r.qpos.objectString(r.obj), suffix) - if def := r.obj.Pos(); def != token.NoPos { - printf(def, "defined here") - } - } - } else { - desc := astutil.NodeDescription(r.expr) - if suffix != "" { - // constant expression - printf(r.expr, "%s%s", desc, suffix) - } else { - // non-constant expression - printf(r.expr, "%s of type %s", desc, r.qpos.typeString(r.typ)) - } - } -} - -func (r *describeValueResult) toSerial(res *serial.Result, fset *token.FileSet) { - var value, objpos string - if r.constVal != nil { - value = r.constVal.String() - } - if r.obj != nil { - objpos = fset.Position(r.obj.Pos()).String() - } - - res.Describe = &serial.Describe{ - Desc: astutil.NodeDescription(r.expr), - Pos: fset.Position(r.expr.Pos()).String(), - Detail: "value", - Value: &serial.DescribeValue{ - Type: r.qpos.typeString(r.typ), - Value: value, - ObjPos: objpos, - }, - } -} - -// ---- TYPE ------------------------------------------------------------ - -func describeType(qpos *queryPos, path []ast.Node) (*describeTypeResult, error) { - var description string - var t types.Type - switch n := path[0].(type) { - case *ast.Ident: - t = qpos.info.TypeOf(n) - switch t := t.(type) { - case *types.Basic: - description = "reference to built-in " - - case *types.Named: - isDef := t.Obj().Pos() == n.Pos() // see caveats at isDef above - if isDef { - description = "definition of " - } else { - description = "reference to " - } - } - - case ast.Expr: - t = qpos.info.TypeOf(n) - - default: - // Unreachable? - return nil, fmt.Errorf("unexpected AST for type: %T", n) - } - - description = description + "type " + qpos.typeString(t) - - // Show sizes for structs and named types (it's fairly obvious for others). - switch t.(type) { - case *types.Named, *types.Struct: - szs := types.StdSizes{8, 8} // assume amd64 - description = fmt.Sprintf("%s (size %d, align %d)", description, - szs.Sizeof(t), szs.Alignof(t)) - } - - return &describeTypeResult{ - qpos: qpos, - node: path[0], - description: description, - typ: t, - methods: accessibleMethods(t, qpos.info.Pkg), - }, nil -} - -type describeTypeResult struct { - qpos *queryPos - node ast.Node - description string - typ types.Type - methods []*types.Selection -} - -func (r *describeTypeResult) display(printf printfFunc) { - printf(r.node, "%s", r.description) - - // Show the underlying type for a reference to a named type. - if nt, ok := r.typ.(*types.Named); ok && r.node.Pos() != nt.Obj().Pos() { - printf(nt.Obj(), "defined as %s", r.qpos.typeString(nt.Underlying())) - } - - // Print the method set, if the type kind is capable of bearing methods. - switch r.typ.(type) { - case *types.Interface, *types.Struct, *types.Named: - if len(r.methods) > 0 { - printf(r.node, "Method set:") - for _, meth := range r.methods { - // TODO(adonovan): print these relative - // to the owning package, not the - // query package. - printf(meth.Obj(), "\t%s", r.qpos.selectionString(meth)) - } - } else { - printf(r.node, "No methods.") - } - } -} - -func (r *describeTypeResult) toSerial(res *serial.Result, fset *token.FileSet) { - var namePos, nameDef string - if nt, ok := r.typ.(*types.Named); ok { - namePos = fset.Position(nt.Obj().Pos()).String() - nameDef = nt.Underlying().String() - } - res.Describe = &serial.Describe{ - Desc: r.description, - Pos: fset.Position(r.node.Pos()).String(), - Detail: "type", - Type: &serial.DescribeType{ - Type: r.qpos.typeString(r.typ), - NamePos: namePos, - NameDef: nameDef, - Methods: methodsToSerial(r.qpos.info.Pkg, r.methods, fset), - }, - } -} - -// ---- PACKAGE ------------------------------------------------------------ - -func describePackage(qpos *queryPos, path []ast.Node) (*describePackageResult, error) { - var description string - var pkg *types.Package - switch n := path[0].(type) { - case *ast.ImportSpec: - var obj types.Object - if n.Name != nil { - obj = qpos.info.Defs[n.Name] - } else { - obj = qpos.info.Implicits[n] - } - pkgname, _ := obj.(*types.PkgName) - if pkgname == nil { - return nil, fmt.Errorf("can't import package %s", n.Path.Value) - } - pkg = pkgname.Imported() - description = fmt.Sprintf("import of package %q", pkg.Path()) - - case *ast.Ident: - if _, isDef := path[1].(*ast.File); isDef { - // e.g. package id - pkg = qpos.info.Pkg - description = fmt.Sprintf("definition of package %q", pkg.Path()) - } else { - // e.g. import id "..." - // or id.F() - pkg = qpos.info.ObjectOf(n).(*types.PkgName).Imported() - description = fmt.Sprintf("reference to package %q", pkg.Path()) - } - - default: - // Unreachable? - return nil, fmt.Errorf("unexpected AST for package: %T", n) - } - - var members []*describeMember - // NB: "unsafe" has no types.Package - if pkg != nil { - // Enumerate the accessible package members - // in lexicographic order. - for _, name := range pkg.Scope().Names() { - if pkg == qpos.info.Pkg || ast.IsExported(name) { - mem := pkg.Scope().Lookup(name) - var methods []*types.Selection - if mem, ok := mem.(*types.TypeName); ok { - methods = accessibleMethods(mem.Type(), qpos.info.Pkg) - } - members = append(members, &describeMember{ - mem, - methods, - }) - - } - } - } - - return &describePackageResult{qpos.fset, path[0], description, pkg, members}, nil -} - -type describePackageResult struct { - fset *token.FileSet - node ast.Node - description string - pkg *types.Package - members []*describeMember // in lexicographic name order -} - -type describeMember struct { - obj types.Object - methods []*types.Selection // in types.MethodSet order -} - -func (r *describePackageResult) display(printf printfFunc) { - printf(r.node, "%s", r.description) - - // Compute max width of name "column". - maxname := 0 - for _, mem := range r.members { - if l := len(mem.obj.Name()); l > maxname { - maxname = l - } - } - - for _, mem := range r.members { - printf(mem.obj, "\t%s", formatMember(mem.obj, maxname)) - for _, meth := range mem.methods { - printf(meth.Obj(), "\t\t%s", types.SelectionString(meth, types.RelativeTo(r.pkg))) - } - } -} - -func formatMember(obj types.Object, maxname int) string { - qualifier := types.RelativeTo(obj.Pkg()) - var buf bytes.Buffer - fmt.Fprintf(&buf, "%-5s %-*s", tokenOf(obj), maxname, obj.Name()) - switch obj := obj.(type) { - case *types.Const: - fmt.Fprintf(&buf, " %s = %s", types.TypeString(obj.Type(), qualifier), constValString(obj.Val())) - - case *types.Func: - fmt.Fprintf(&buf, " %s", types.TypeString(obj.Type(), qualifier)) - - case *types.TypeName: - // Abbreviate long aggregate type names. - var abbrev string - switch t := obj.Type().Underlying().(type) { - case *types.Interface: - if t.NumMethods() > 1 { - abbrev = "interface{...}" - } - case *types.Struct: - if t.NumFields() > 1 { - abbrev = "struct{...}" - } - } - if abbrev == "" { - fmt.Fprintf(&buf, " %s", types.TypeString(obj.Type().Underlying(), qualifier)) - } else { - fmt.Fprintf(&buf, " %s", abbrev) - } - - case *types.Var: - fmt.Fprintf(&buf, " %s", types.TypeString(obj.Type(), qualifier)) - } - return buf.String() -} - -func (r *describePackageResult) toSerial(res *serial.Result, fset *token.FileSet) { - var members []*serial.DescribeMember - for _, mem := range r.members { - typ := mem.obj.Type() - var val string - switch mem := mem.obj.(type) { - case *types.Const: - val = constValString(mem.Val()) - case *types.TypeName: - typ = typ.Underlying() - } - members = append(members, &serial.DescribeMember{ - Name: mem.obj.Name(), - Type: typ.String(), - Value: val, - Pos: fset.Position(mem.obj.Pos()).String(), - Kind: tokenOf(mem.obj), - Methods: methodsToSerial(r.pkg, mem.methods, fset), - }) - } - res.Describe = &serial.Describe{ - Desc: r.description, - Pos: fset.Position(r.node.Pos()).String(), - Detail: "package", - Package: &serial.DescribePackage{ - Path: r.pkg.Path(), - Members: members, - }, - } -} - -func tokenOf(o types.Object) string { - switch o.(type) { - case *types.Func: - return "func" - case *types.Var: - return "var" - case *types.TypeName: - return "type" - case *types.Const: - return "const" - case *types.PkgName: - return "package" - case *types.Builtin: - return "builtin" // e.g. when describing package "unsafe" - case *types.Nil: - return "nil" - case *types.Label: - return "label" - } - panic(o) -} - -// ---- STATEMENT ------------------------------------------------------------ - -func describeStmt(qpos *queryPos, path []ast.Node) (*describeStmtResult, error) { - var description string - switch n := path[0].(type) { - case *ast.Ident: - if qpos.info.Defs[n] != nil { - description = "labelled statement" - } else { - description = "reference to labelled statement" - } - - default: - // Nothing much to say about statements. - description = astutil.NodeDescription(n) - } - return &describeStmtResult{qpos.fset, path[0], description}, nil -} - -type describeStmtResult struct { - fset *token.FileSet - node ast.Node - description string -} - -func (r *describeStmtResult) display(printf printfFunc) { - printf(r.node, "%s", r.description) -} - -func (r *describeStmtResult) toSerial(res *serial.Result, fset *token.FileSet) { - res.Describe = &serial.Describe{ - Desc: r.description, - Pos: fset.Position(r.node.Pos()).String(), - Detail: "unknown", - } -} - -// ------------------- Utilities ------------------- - -// pathToString returns a string containing the concrete types of the -// nodes in path. -func pathToString(path []ast.Node) string { - var buf bytes.Buffer - fmt.Fprint(&buf, "[") - for i, n := range path { - if i > 0 { - fmt.Fprint(&buf, " ") - } - fmt.Fprint(&buf, strings.TrimPrefix(fmt.Sprintf("%T", n), "*ast.")) - } - fmt.Fprint(&buf, "]") - return buf.String() -} - -func accessibleMethods(t types.Type, from *types.Package) []*types.Selection { - var methods []*types.Selection - for _, meth := range typeutil.IntuitiveMethodSet(t, nil) { - if isAccessibleFrom(meth.Obj(), from) { - methods = append(methods, meth) - } - } - return methods -} - -func isAccessibleFrom(obj types.Object, pkg *types.Package) bool { - return ast.IsExported(obj.Name()) || obj.Pkg() == pkg -} - -func methodsToSerial(this *types.Package, methods []*types.Selection, fset *token.FileSet) []serial.DescribeMethod { - qualifier := types.RelativeTo(this) - var jmethods []serial.DescribeMethod - for _, meth := range methods { - var ser serial.DescribeMethod - if meth != nil { // may contain nils when called by implements (on a method) - ser = serial.DescribeMethod{ - Name: types.SelectionString(meth, qualifier), - Pos: fset.Position(meth.Obj().Pos()).String(), - } - } - jmethods = append(jmethods, ser) - } - return jmethods -} - -// constValString emulates Go 1.6's go/constant.ExactString well enough -// to make the tests pass. This is just a stopgap until we throw away -// all the *15.go files. -func constValString(v exact.Value) string { - if v.Kind() == exact.Float { - f, _ := exact.Float64Val(v) - return fmt.Sprintf("%g", f) - } - return v.String() -} diff --git a/vendor/github.com/visualfc/gotools/oracle/oracle/freevars.go b/vendor/github.com/visualfc/gotools/oracle/oracle/freevars.go deleted file mode 100644 index 3d7f2bf..0000000 --- a/vendor/github.com/visualfc/gotools/oracle/oracle/freevars.go +++ /dev/null @@ -1,224 +0,0 @@ -// Copyright 2013 The Go Authors. All rights reserved. -// Use of this source code is governed by a BSD-style -// license that can be found in the LICENSE file. - -// +build go1.5 - -package oracle - -import ( - "bytes" - "go/ast" - "go/printer" - "go/token" - "go/types" - "sort" - - "github.com/visualfc/gotools/oracle/oracle/serial" - "golang.org/x/tools/go/loader" -) - -// freevars displays the lexical (not package-level) free variables of -// the selection. -// -// It treats A.B.C as a separate variable from A to reveal the parts -// of an aggregate type that are actually needed. -// This aids refactoring. -// -// TODO(adonovan): optionally display the free references to -// file/package scope objects, and to objects from other packages. -// Depending on where the resulting function abstraction will go, -// these might be interesting. Perhaps group the results into three -// bands. -// -func freevars(q *Query) error { - lconf := loader.Config{Build: q.Build} - allowErrors(&lconf) - - if _, err := importQueryPackage(q.Pos, &lconf); err != nil { - return err - } - - // Load/parse/type-check the program. - lprog, err := lconf.Load() - if err != nil { - return err - } - q.Fset = lprog.Fset - - qpos, err := parseQueryPos(lprog, q.Pos, false) - if err != nil { - return err - } - - file := qpos.path[len(qpos.path)-1] // the enclosing file - fileScope := qpos.info.Scopes[file] - pkgScope := fileScope.Parent() - - // The id and sel functions return non-nil if they denote an - // object o or selection o.x.y that is referenced by the - // selection but defined neither within the selection nor at - // file scope, i.e. it is in the lexical environment. - var id func(n *ast.Ident) types.Object - var sel func(n *ast.SelectorExpr) types.Object - - sel = func(n *ast.SelectorExpr) types.Object { - switch x := unparen(n.X).(type) { - case *ast.SelectorExpr: - return sel(x) - case *ast.Ident: - return id(x) - } - return nil - } - - id = func(n *ast.Ident) types.Object { - obj := qpos.info.Uses[n] - if obj == nil { - return nil // not a reference - } - if _, ok := obj.(*types.PkgName); ok { - return nil // imported package - } - if !(file.Pos() <= obj.Pos() && obj.Pos() <= file.End()) { - return nil // not defined in this file - } - scope := obj.Parent() - if scope == nil { - return nil // e.g. interface method, struct field - } - if scope == fileScope || scope == pkgScope { - return nil // defined at file or package scope - } - if qpos.start <= obj.Pos() && obj.Pos() <= qpos.end { - return nil // defined within selection => not free - } - return obj - } - - // Maps each reference that is free in the selection - // to the object it refers to. - // The map de-duplicates repeated references. - refsMap := make(map[string]freevarsRef) - - // Visit all the identifiers in the selected ASTs. - ast.Inspect(qpos.path[0], func(n ast.Node) bool { - if n == nil { - return true // popping DFS stack - } - - // Is this node contained within the selection? - // (freevars permits inexact selections, - // like two stmts in a block.) - if qpos.start <= n.Pos() && n.End() <= qpos.end { - var obj types.Object - var prune bool - switch n := n.(type) { - case *ast.Ident: - obj = id(n) - - case *ast.SelectorExpr: - obj = sel(n) - prune = true - } - - if obj != nil { - var kind string - switch obj.(type) { - case *types.Var: - kind = "var" - case *types.Func: - kind = "func" - case *types.TypeName: - kind = "type" - case *types.Const: - kind = "const" - case *types.Label: - kind = "label" - default: - panic(obj) - } - - typ := qpos.info.TypeOf(n.(ast.Expr)) - ref := freevarsRef{kind, printNode(lprog.Fset, n), typ, obj} - refsMap[ref.ref] = ref - - if prune { - return false // don't descend - } - } - } - - return true // descend - }) - - refs := make([]freevarsRef, 0, len(refsMap)) - for _, ref := range refsMap { - refs = append(refs, ref) - } - sort.Sort(byRef(refs)) - - q.result = &freevarsResult{ - qpos: qpos, - refs: refs, - } - return nil -} - -type freevarsResult struct { - qpos *queryPos - refs []freevarsRef -} - -type freevarsRef struct { - kind string - ref string - typ types.Type - obj types.Object -} - -func (r *freevarsResult) display(printf printfFunc) { - if len(r.refs) == 0 { - printf(r.qpos, "No free identifiers.") - } else { - printf(r.qpos, "Free identifiers:") - qualifier := types.RelativeTo(r.qpos.info.Pkg) - for _, ref := range r.refs { - // Avoid printing "type T T". - var typstr string - if ref.kind != "type" { - typstr = " " + types.TypeString(ref.typ, qualifier) - } - printf(ref.obj, "%s %s%s", ref.kind, ref.ref, typstr) - } - } -} - -func (r *freevarsResult) toSerial(res *serial.Result, fset *token.FileSet) { - var refs []*serial.FreeVar - for _, ref := range r.refs { - refs = append(refs, - &serial.FreeVar{ - Pos: fset.Position(ref.obj.Pos()).String(), - Kind: ref.kind, - Ref: ref.ref, - Type: ref.typ.String(), - }) - } - res.Freevars = refs -} - -// -------- utils -------- - -type byRef []freevarsRef - -func (p byRef) Len() int { return len(p) } -func (p byRef) Less(i, j int) bool { return p[i].ref < p[j].ref } -func (p byRef) Swap(i, j int) { p[i], p[j] = p[j], p[i] } - -// printNode returns the pretty-printed syntax of n. -func printNode(fset *token.FileSet, n ast.Node) string { - var buf bytes.Buffer - printer.Fprint(&buf, fset, n) - return buf.String() -} diff --git a/vendor/github.com/visualfc/gotools/oracle/oracle/implements.go b/vendor/github.com/visualfc/gotools/oracle/oracle/implements.go deleted file mode 100644 index aafa536..0000000 --- a/vendor/github.com/visualfc/gotools/oracle/oracle/implements.go +++ /dev/null @@ -1,354 +0,0 @@ -// Copyright 2013 The Go Authors. All rights reserved. -// Use of this source code is governed by a BSD-style -// license that can be found in the LICENSE file. - -// +build go1.5 - -package oracle - -import ( - "fmt" - "go/ast" - "go/token" - "go/types" - "reflect" - "sort" - "strings" - - "github.com/visualfc/gotools/oracle/oracle/serial" - "golang.org/x/tools/go/loader" - "golang.org/x/tools/go/types/typeutil" - "golang.org/x/tools/refactor/importgraph" -) - -// Implements displays the "implements" relation as it pertains to the -// selected type. -// If the selection is a method, 'implements' displays -// the corresponding methods of the types that would have been reported -// by an implements query on the receiver type. -// -func implements(q *Query) error { - lconf := loader.Config{Build: q.Build} - allowErrors(&lconf) - - qpkg, err := importQueryPackage(q.Pos, &lconf) - if err != nil { - return err - } - - // Set the packages to search. - if len(q.Scope) > 0 { - // Inspect all packages in the analysis scope, if specified. - if err := setPTAScope(&lconf, q.Scope); err != nil { - return err - } - } else { - // Otherwise inspect the forward and reverse - // transitive closure of the selected package. - // (In theory even this is incomplete.) - _, rev, _ := importgraph.Build(q.Build) - for path := range rev.Search(qpkg) { - lconf.ImportWithTests(path) - } - - // TODO(adonovan): for completeness, we should also - // type-check and inspect function bodies in all - // imported packages. This would be expensive, but we - // could optimize by skipping functions that do not - // contain type declarations. This would require - // changing the loader's TypeCheckFuncBodies hook to - // provide the []*ast.File. - } - - // Load/parse/type-check the program. - lprog, err := lconf.Load() - if err != nil { - return err - } - q.Fset = lprog.Fset - - qpos, err := parseQueryPos(lprog, q.Pos, false) - if err != nil { - return err - } - - // Find the selected type. - path, action := findInterestingNode(qpos.info, qpos.path) - - var method *types.Func - var T types.Type // selected type (receiver if method != nil) - - switch action { - case actionExpr: - // method? - if id, ok := path[0].(*ast.Ident); ok { - if obj, ok := qpos.info.ObjectOf(id).(*types.Func); ok { - recv := obj.Type().(*types.Signature).Recv() - if recv == nil { - return fmt.Errorf("this function is not a method") - } - method = obj - T = recv.Type() - } - } - case actionType: - T = qpos.info.TypeOf(path[0].(ast.Expr)) - } - if T == nil { - return fmt.Errorf("no type or method here") - } - - // Find all named types, even local types (which can have - // methods via promotion) and the built-in "error". - var allNamed []types.Type - for _, info := range lprog.AllPackages { - for _, obj := range info.Defs { - if obj, ok := obj.(*types.TypeName); ok { - allNamed = append(allNamed, obj.Type()) - } - } - } - allNamed = append(allNamed, types.Universe.Lookup("error").Type()) - - var msets typeutil.MethodSetCache - - // Test each named type. - var to, from, fromPtr []types.Type - for _, U := range allNamed { - if isInterface(T) { - if msets.MethodSet(T).Len() == 0 { - continue // empty interface - } - if isInterface(U) { - if msets.MethodSet(U).Len() == 0 { - continue // empty interface - } - - // T interface, U interface - if !types.Identical(T, U) { - if types.AssignableTo(U, T) { - to = append(to, U) - } - if types.AssignableTo(T, U) { - from = append(from, U) - } - } - } else { - // T interface, U concrete - if types.AssignableTo(U, T) { - to = append(to, U) - } else if pU := types.NewPointer(U); types.AssignableTo(pU, T) { - to = append(to, pU) - } - } - } else if isInterface(U) { - if msets.MethodSet(U).Len() == 0 { - continue // empty interface - } - - // T concrete, U interface - if types.AssignableTo(T, U) { - from = append(from, U) - } else if pT := types.NewPointer(T); types.AssignableTo(pT, U) { - fromPtr = append(fromPtr, U) - } - } - } - - var pos interface{} = qpos - if nt, ok := deref(T).(*types.Named); ok { - pos = nt.Obj() - } - - // Sort types (arbitrarily) to ensure test determinism. - sort.Sort(typesByString(to)) - sort.Sort(typesByString(from)) - sort.Sort(typesByString(fromPtr)) - - var toMethod, fromMethod, fromPtrMethod []*types.Selection // contain nils - if method != nil { - for _, t := range to { - toMethod = append(toMethod, - types.NewMethodSet(t).Lookup(method.Pkg(), method.Name())) - } - for _, t := range from { - fromMethod = append(fromMethod, - types.NewMethodSet(t).Lookup(method.Pkg(), method.Name())) - } - for _, t := range fromPtr { - fromPtrMethod = append(fromPtrMethod, - types.NewMethodSet(t).Lookup(method.Pkg(), method.Name())) - } - } - - q.result = &implementsResult{ - qpos, T, pos, to, from, fromPtr, method, toMethod, fromMethod, fromPtrMethod, - } - return nil -} - -type implementsResult struct { - qpos *queryPos - - t types.Type // queried type (not necessarily named) - pos interface{} // pos of t (*types.Name or *QueryPos) - to []types.Type // named or ptr-to-named types assignable to interface T - from []types.Type // named interfaces assignable from T - fromPtr []types.Type // named interfaces assignable only from *T - - // if a method was queried: - method *types.Func // queried method - toMethod []*types.Selection // method of type to[i], if any - fromMethod []*types.Selection // method of type from[i], if any - fromPtrMethod []*types.Selection // method of type fromPtrMethod[i], if any -} - -func (r *implementsResult) display(printf printfFunc) { - relation := "is implemented by" - - meth := func(sel *types.Selection) { - if sel != nil { - printf(sel.Obj(), "\t%s method (%s).%s", - relation, r.qpos.typeString(sel.Recv()), sel.Obj().Name()) - } - } - - if isInterface(r.t) { - if types.NewMethodSet(r.t).Len() == 0 { // TODO(adonovan): cache mset - printf(r.pos, "empty interface type %s", r.qpos.typeString(r.t)) - return - } - - if r.method == nil { - printf(r.pos, "interface type %s", r.qpos.typeString(r.t)) - } else { - printf(r.method, "abstract method %s", r.qpos.objectString(r.method)) - } - - // Show concrete types (or methods) first; use two passes. - for i, sub := range r.to { - if !isInterface(sub) { - if r.method == nil { - printf(deref(sub).(*types.Named).Obj(), "\t%s %s type %s", - relation, typeKind(sub), r.qpos.typeString(sub)) - } else { - meth(r.toMethod[i]) - } - } - } - for i, sub := range r.to { - if isInterface(sub) { - if r.method == nil { - printf(sub.(*types.Named).Obj(), "\t%s %s type %s", - relation, typeKind(sub), r.qpos.typeString(sub)) - } else { - meth(r.toMethod[i]) - } - } - } - - relation = "implements" - for i, super := range r.from { - if r.method == nil { - printf(super.(*types.Named).Obj(), "\t%s %s", - relation, r.qpos.typeString(super)) - } else { - meth(r.fromMethod[i]) - } - } - } else { - relation = "implements" - - if r.from != nil { - if r.method == nil { - printf(r.pos, "%s type %s", - typeKind(r.t), r.qpos.typeString(r.t)) - } else { - printf(r.method, "concrete method %s", - r.qpos.objectString(r.method)) - } - for i, super := range r.from { - if r.method == nil { - printf(super.(*types.Named).Obj(), "\t%s %s", - relation, r.qpos.typeString(super)) - } else { - meth(r.fromMethod[i]) - } - } - } - if r.fromPtr != nil { - if r.method == nil { - printf(r.pos, "pointer type *%s", r.qpos.typeString(r.t)) - } else { - // TODO(adonovan): de-dup (C).f and (*C).f implementing (I).f. - printf(r.method, "concrete method %s", - r.qpos.objectString(r.method)) - } - - for i, psuper := range r.fromPtr { - if r.method == nil { - printf(psuper.(*types.Named).Obj(), "\t%s %s", - relation, r.qpos.typeString(psuper)) - } else { - meth(r.fromPtrMethod[i]) - } - } - } else if r.from == nil { - printf(r.pos, "%s type %s implements only interface{}", - typeKind(r.t), r.qpos.typeString(r.t)) - } - } -} - -func (r *implementsResult) toSerial(res *serial.Result, fset *token.FileSet) { - res.Implements = &serial.Implements{ - T: makeImplementsType(r.t, fset), - AssignableTo: makeImplementsTypes(r.to, fset), - AssignableFrom: makeImplementsTypes(r.from, fset), - AssignableFromPtr: makeImplementsTypes(r.fromPtr, fset), - AssignableToMethod: methodsToSerial(r.qpos.info.Pkg, r.toMethod, fset), - AssignableFromMethod: methodsToSerial(r.qpos.info.Pkg, r.fromMethod, fset), - AssignableFromPtrMethod: methodsToSerial(r.qpos.info.Pkg, r.fromPtrMethod, fset), - } - if r.method != nil { - res.Implements.Method = &serial.DescribeMethod{ - Name: r.qpos.objectString(r.method), - Pos: fset.Position(r.method.Pos()).String(), - } - } -} - -func makeImplementsTypes(tt []types.Type, fset *token.FileSet) []serial.ImplementsType { - var r []serial.ImplementsType - for _, t := range tt { - r = append(r, makeImplementsType(t, fset)) - } - return r -} - -func makeImplementsType(T types.Type, fset *token.FileSet) serial.ImplementsType { - var pos token.Pos - if nt, ok := deref(T).(*types.Named); ok { // implementsResult.t may be non-named - pos = nt.Obj().Pos() - } - return serial.ImplementsType{ - Name: T.String(), - Pos: fset.Position(pos).String(), - Kind: typeKind(T), - } -} - -// typeKind returns a string describing the underlying kind of type, -// e.g. "slice", "array", "struct". -func typeKind(T types.Type) string { - s := reflect.TypeOf(T.Underlying()).String() - return strings.ToLower(strings.TrimPrefix(s, "*types.")) -} - -func isInterface(T types.Type) bool { return types.IsInterface(T) } - -type typesByString []types.Type - -func (p typesByString) Len() int { return len(p) } -func (p typesByString) Less(i, j int) bool { return p[i].String() < p[j].String() } -func (p typesByString) Swap(i, j int) { p[i], p[j] = p[j], p[i] } diff --git a/vendor/github.com/visualfc/gotools/oracle/oracle/oracle.go b/vendor/github.com/visualfc/gotools/oracle/oracle/oracle.go deleted file mode 100644 index cffaa2d..0000000 --- a/vendor/github.com/visualfc/gotools/oracle/oracle/oracle.go +++ /dev/null @@ -1,381 +0,0 @@ -// Copyright 2014 The Go Authors. All rights reserved. -// Use of this source code is governed by a BSD-style -// license that can be found in the LICENSE file. - -// +build go1.5 - -// Package oracle contains the implementation of the oracle tool whose -// command-line is provided by golang.org/x/tools/cmd/oracle. -// -// http://golang.org/s/oracle-design -// http://golang.org/s/oracle-user-manual -// -package oracle - -// This file defines oracle.Query, the entry point for the oracle tool. -// The actual executable is defined in cmd/oracle. - -// TODO(adonovan): new queries -// - show all statements that may update the selected lvalue -// (local, global, field, etc). -// - show all places where an object of type T is created -// (&T{}, var t T, new(T), new(struct{array [3]T}), etc. - -import ( - "fmt" - "go/ast" - "go/build" - "go/parser" - "go/token" - "go/types" - "io" - "path/filepath" - - "github.com/visualfc/gotools/oracle/oracle/serial" - "golang.org/x/tools/go/ast/astutil" - "golang.org/x/tools/go/buildutil" - "golang.org/x/tools/go/loader" - "golang.org/x/tools/go/pointer" - "golang.org/x/tools/go/ssa" -) - -type printfFunc func(pos interface{}, format string, args ...interface{}) - -// queryResult is the interface of each query-specific result type. -type queryResult interface { - toSerial(res *serial.Result, fset *token.FileSet) - display(printf printfFunc) -} - -// A QueryPos represents the position provided as input to a query: -// a textual extent in the program's source code, the AST node it -// corresponds to, and the package to which it belongs. -// Instances are created by parseQueryPos. -type queryPos struct { - fset *token.FileSet - start, end token.Pos // source extent of query - path []ast.Node // AST path from query node to root of ast.File - exact bool // 2nd result of PathEnclosingInterval - info *loader.PackageInfo // type info for the queried package (nil for fastQueryPos) -} - -// TypeString prints type T relative to the query position. -func (qpos *queryPos) typeString(T types.Type) string { - return types.TypeString(T, types.RelativeTo(qpos.info.Pkg)) -} - -// ObjectString prints object obj relative to the query position. -func (qpos *queryPos) objectString(obj types.Object) string { - return types.ObjectString(obj, types.RelativeTo(qpos.info.Pkg)) -} - -// SelectionString prints selection sel relative to the query position. -func (qpos *queryPos) selectionString(sel *types.Selection) string { - return types.SelectionString(sel, types.RelativeTo(qpos.info.Pkg)) -} - -// A Query specifies a single oracle query. -type Query struct { - Mode string // query mode ("callers", etc) - Pos string // query position - Build *build.Context // package loading configuration - - // pointer analysis options - Scope []string // main packages in (*loader.Config).FromArgs syntax - PTALog io.Writer // (optional) pointer-analysis log file - Reflection bool // model reflection soundly (currently slow). - - // Populated during Run() - Fset *token.FileSet - result queryResult -} - -// Serial returns an instance of serial.Result, which implements the -// {xml,json}.Marshaler interfaces so that query results can be -// serialized as JSON or XML. -// -func (q *Query) Serial() *serial.Result { - resj := &serial.Result{Mode: q.Mode} - q.result.toSerial(resj, q.Fset) - return resj -} - -// WriteTo writes the oracle query result res to out in a compiler diagnostic format. -func (q *Query) WriteTo(out io.Writer) { - printf := func(pos interface{}, format string, args ...interface{}) { - fprintf(out, q.Fset, pos, format, args...) - } - q.result.display(printf) -} - -// Run runs an oracle query and populates its Fset and Result. -func Run(q *Query) error { - switch q.Mode { - case "callees": - return callees(q) - case "callers": - return callers(q) - case "callstack": - return callstack(q) - case "peers": - return peers(q) - case "pointsto": - return pointsto(q) - case "whicherrs": - return whicherrs(q) - case "definition": - return definition(q) - case "describe": - return describe(q) - case "freevars": - return freevars(q) - case "implements": - return implements(q) - case "referrers": - return referrers(q) - case "what": - return what(q) - default: - return fmt.Errorf("invalid mode: %q", q.Mode) - } -} - -func setPTAScope(lconf *loader.Config, scope []string) error { - pkgs := buildutil.ExpandPatterns(lconf.Build, scope) - if len(pkgs) == 0 { - return fmt.Errorf("no packages specified for pointer analysis scope") - } - // The value of each entry in pkgs is true, - // giving ImportWithTests (not Import) semantics. - lconf.ImportPkgs = pkgs - return nil -} - -//func setPTAScope(lconf *loader.Config, scope []string) error { -// if len(scope) == 0 { -// return fmt.Errorf("no packages specified for pointer analysis scope") -// } - -// // Determine initial packages for PTA. -// args, err := lconf.FromArgs(scope, true) -// if err != nil { -// return err -// } -// if len(args) > 0 { -// return fmt.Errorf("surplus arguments: %q", args) -// } -// return nil -//} - -// Create a pointer.Config whose scope is the initial packages of lprog -// and their dependencies. -func setupPTA(prog *ssa.Program, lprog *loader.Program, ptaLog io.Writer, reflection bool) (*pointer.Config, error) { - // TODO(adonovan): the body of this function is essentially - // duplicated in all go/pointer clients. Refactor. - - // For each initial package (specified on the command line), - // if it has a main function, analyze that, - // otherwise analyze its tests, if any. - var testPkgs, mains []*ssa.Package - for _, info := range lprog.InitialPackages() { - initialPkg := prog.Package(info.Pkg) - - // Add package to the pointer analysis scope. - if initialPkg.Func("main") != nil { - mains = append(mains, initialPkg) - } else { - testPkgs = append(testPkgs, initialPkg) - } - } - if testPkgs != nil { - for _, testPkg := range testPkgs { - if p := prog.CreateTestMainPackage(testPkg); p != nil { - mains = append(mains, p) - } - } - } - if mains == nil { - return nil, fmt.Errorf("analysis scope has no main and no tests") - } - return &pointer.Config{ - Log: ptaLog, - Reflection: reflection, - Mains: mains, - }, nil -} - -// importQueryPackage finds the package P containing the -// query position and tells conf to import it. -// It returns the package's path. -func importQueryPackage(pos string, conf *loader.Config) (string, error) { - fqpos, err := fastQueryPos(pos) - if err != nil { - return "", err // bad query - } - filename := fqpos.fset.File(fqpos.start).Name() - - // This will not work for ad-hoc packages - // such as $GOROOT/src/net/http/triv.go. - // TODO(adonovan): ensure we report a clear error. - _, importPath, err := guessImportPath(filename, conf.Build) - if err != nil { - return "", err // can't find GOPATH dir - } - if importPath == "" { - return "", fmt.Errorf("can't guess import path from %s", filename) - } - - // Check that it's possible to load the queried package. - // (e.g. oracle tests contain different 'package' decls in same dir.) - // Keep consistent with logic in loader/util.go! - cfg2 := *conf.Build - cfg2.CgoEnabled = false - bp, err := cfg2.Import(importPath, "", 0) - if err != nil { - return "", err // no files for package - } - - switch pkgContainsFile(bp, filename) { - case 'T': - conf.ImportWithTests(importPath) - case 'X': - conf.ImportWithTests(importPath) - importPath += "_test" // for TypeCheckFuncBodies - case 'G': - conf.Import(importPath) - default: - return "", fmt.Errorf("package %q doesn't contain file %s", - importPath, filename) - } - - conf.TypeCheckFuncBodies = func(p string) bool { return p == importPath } - - return importPath, nil -} - -// pkgContainsFile reports whether file was among the packages Go -// files, Test files, eXternal test files, or not found. -func pkgContainsFile(bp *build.Package, filename string) byte { - for i, files := range [][]string{bp.GoFiles, bp.TestGoFiles, bp.XTestGoFiles} { - for _, file := range files { - if sameFile(filepath.Join(bp.Dir, file), filename) { - return "GTX"[i] - } - } - } - return 0 // not found -} - -// ParseQueryPos parses the source query position pos and returns the -// AST node of the loaded program lprog that it identifies. -// If needExact, it must identify a single AST subtree; -// this is appropriate for queries that allow fairly arbitrary syntax, -// e.g. "describe". -// -func parseQueryPos(lprog *loader.Program, posFlag string, needExact bool) (*queryPos, error) { - filename, startOffset, endOffset, err := parsePosFlag(posFlag) - if err != nil { - return nil, err - } - start, end, err := findQueryPos(lprog.Fset, filename, startOffset, endOffset) - if err != nil { - return nil, err - } - info, path, exact := lprog.PathEnclosingInterval(start, end) - if path == nil { - return nil, fmt.Errorf("no syntax here") - } - if needExact && !exact { - return nil, fmt.Errorf("ambiguous selection within %s", astutil.NodeDescription(path[0])) - } - return &queryPos{lprog.Fset, start, end, path, exact, info}, nil -} - -// ---------- Utilities ---------- - -// allowErrors causes type errors to be silently ignored. -// (Not suitable if SSA construction follows.) -func allowErrors(lconf *loader.Config) { - ctxt := *lconf.Build // copy - ctxt.CgoEnabled = false - lconf.Build = &ctxt - lconf.AllowErrors = true - // AllErrors makes the parser always return an AST instead of - // bailing out after 10 errors and returning an empty ast.File. - lconf.ParserMode = parser.AllErrors - lconf.TypeChecker.Error = func(err error) {} -} - -// ptrAnalysis runs the pointer analysis and returns its result. -func ptrAnalysis(conf *pointer.Config) *pointer.Result { - result, err := pointer.Analyze(conf) - if err != nil { - panic(err) // pointer analysis internal error - } - return result -} - -func unparen(e ast.Expr) ast.Expr { return astutil.Unparen(e) } - -// deref returns a pointer's element type; otherwise it returns typ. -func deref(typ types.Type) types.Type { - if p, ok := typ.Underlying().(*types.Pointer); ok { - return p.Elem() - } - return typ -} - -// fprintf prints to w a message of the form "location: message\n" -// where location is derived from pos. -// -// pos must be one of: -// - a token.Pos, denoting a position -// - an ast.Node, denoting an interval -// - anything with a Pos() method: -// ssa.Member, ssa.Value, ssa.Instruction, types.Object, pointer.Label, etc. -// - a QueryPos, denoting the extent of the user's query. -// - nil, meaning no position at all. -// -// The output format is is compatible with the 'gnu' -// compilation-error-regexp in Emacs' compilation mode. -// TODO(adonovan): support other editors. -// -func fprintf(w io.Writer, fset *token.FileSet, pos interface{}, format string, args ...interface{}) { - var start, end token.Pos - switch pos := pos.(type) { - case ast.Node: - start = pos.Pos() - end = pos.End() - case token.Pos: - start = pos - end = start - case interface { - Pos() token.Pos - }: - start = pos.Pos() - end = start - case *queryPos: - start = pos.start - end = pos.end - case nil: - // no-op - default: - panic(fmt.Sprintf("invalid pos: %T", pos)) - } - - if sp := fset.Position(start); start == end { - // (prints "-: " for token.NoPos) - fmt.Fprintf(w, "%s: ", sp) - } else { - ep := fset.Position(end) - // The -1 below is a concession to Emacs's broken use of - // inclusive (not half-open) intervals. - // Other editors may not want it. - // TODO(adonovan): add an -editor=vim|emacs|acme|auto - // flag; auto uses EMACS=t / VIM=... / etc env vars. - fmt.Fprintf(w, "%s:%d.%d-%d.%d: ", - sp.Filename, sp.Line, sp.Column, ep.Line, ep.Column-1) - } - fmt.Fprintf(w, format, args...) - io.WriteString(w, "\n") -} diff --git a/vendor/github.com/visualfc/gotools/oracle/oracle/peers.go b/vendor/github.com/visualfc/gotools/oracle/oracle/peers.go deleted file mode 100644 index 70f455a..0000000 --- a/vendor/github.com/visualfc/gotools/oracle/oracle/peers.go +++ /dev/null @@ -1,254 +0,0 @@ -// Copyright 2013 The Go Authors. All rights reserved. -// Use of this source code is governed by a BSD-style -// license that can be found in the LICENSE file. - -// +build go1.5 - -package oracle - -import ( - "fmt" - "go/ast" - "go/token" - "go/types" - "sort" - - "github.com/visualfc/gotools/oracle/oracle/serial" - "golang.org/x/tools/go/loader" - "golang.org/x/tools/go/ssa" - "golang.org/x/tools/go/ssa/ssautil" -) - -// peers enumerates, for a given channel send (or receive) operation, -// the set of possible receives (or sends) that correspond to it. -// -// TODO(adonovan): support reflect.{Select,Recv,Send,Close}. -// TODO(adonovan): permit the user to query based on a MakeChan (not send/recv), -// or the implicit receive in "for v := range ch". -func peers(q *Query) error { - lconf := loader.Config{Build: q.Build} - - if err := setPTAScope(&lconf, q.Scope); err != nil { - return err - } - - // Load/parse/type-check the program. - lprog, err := lconf.Load() - if err != nil { - return err - } - q.Fset = lprog.Fset - - qpos, err := parseQueryPos(lprog, q.Pos, false) - if err != nil { - return err - } - - prog := ssautil.CreateProgram(lprog, ssa.GlobalDebug) - - ptaConfig, err := setupPTA(prog, lprog, q.PTALog, q.Reflection) - if err != nil { - return err - } - - opPos := findOp(qpos) - if opPos == token.NoPos { - return fmt.Errorf("there is no channel operation here") - } - - // Defer SSA construction till after errors are reported. - prog.Build() - - var queryOp chanOp // the originating send or receive operation - var ops []chanOp // all sends/receives of opposite direction - - // Look at all channel operations in the whole ssa.Program. - // Build a list of those of same type as the query. - allFuncs := ssautil.AllFunctions(prog) - for fn := range allFuncs { - for _, b := range fn.Blocks { - for _, instr := range b.Instrs { - for _, op := range chanOps(instr) { - ops = append(ops, op) - if op.pos == opPos { - queryOp = op // we found the query op - } - } - } - } - } - if queryOp.ch == nil { - return fmt.Errorf("ssa.Instruction for send/receive not found") - } - - // Discard operations of wrong channel element type. - // Build set of channel ssa.Values as query to pointer analysis. - // We compare channels by element types, not channel types, to - // ignore both directionality and type names. - queryType := queryOp.ch.Type() - queryElemType := queryType.Underlying().(*types.Chan).Elem() - ptaConfig.AddQuery(queryOp.ch) - i := 0 - for _, op := range ops { - if types.Identical(op.ch.Type().Underlying().(*types.Chan).Elem(), queryElemType) { - ptaConfig.AddQuery(op.ch) - ops[i] = op - i++ - } - } - ops = ops[:i] - - // Run the pointer analysis. - ptares := ptrAnalysis(ptaConfig) - - // Find the points-to set. - queryChanPtr := ptares.Queries[queryOp.ch] - - // Ascertain which make(chan) labels the query's channel can alias. - var makes []token.Pos - for _, label := range queryChanPtr.PointsTo().Labels() { - makes = append(makes, label.Pos()) - } - sort.Sort(byPos(makes)) - - // Ascertain which channel operations can alias the same make(chan) labels. - var sends, receives, closes []token.Pos - for _, op := range ops { - if ptr, ok := ptares.Queries[op.ch]; ok && ptr.MayAlias(queryChanPtr) { - switch op.dir { - case types.SendOnly: - sends = append(sends, op.pos) - case types.RecvOnly: - receives = append(receives, op.pos) - case types.SendRecv: - closes = append(closes, op.pos) - } - } - } - sort.Sort(byPos(sends)) - sort.Sort(byPos(receives)) - sort.Sort(byPos(closes)) - - q.result = &peersResult{ - queryPos: opPos, - queryType: queryType, - makes: makes, - sends: sends, - receives: receives, - closes: closes, - } - return nil -} - -// findOp returns the position of the enclosing send/receive/close op. -// For send and receive operations, this is the position of the <- token; -// for close operations, it's the Lparen of the function call. -// -// TODO(adonovan): handle implicit receive operations from 'for...range chan' statements. -func findOp(qpos *queryPos) token.Pos { - for _, n := range qpos.path { - switch n := n.(type) { - case *ast.UnaryExpr: - if n.Op == token.ARROW { - return n.OpPos - } - case *ast.SendStmt: - return n.Arrow - case *ast.CallExpr: - // close function call can only exist as a direct identifier - if close, ok := unparen(n.Fun).(*ast.Ident); ok { - if b, ok := qpos.info.Info.Uses[close].(*types.Builtin); ok && b.Name() == "close" { - return n.Lparen - } - } - } - } - return token.NoPos -} - -// chanOp abstracts an ssa.Send, ssa.Unop(ARROW), or a SelectState. -type chanOp struct { - ch ssa.Value - dir types.ChanDir // SendOnly=send, RecvOnly=recv, SendRecv=close - pos token.Pos -} - -// chanOps returns a slice of all the channel operations in the instruction. -func chanOps(instr ssa.Instruction) []chanOp { - // TODO(adonovan): handle calls to reflect.{Select,Recv,Send,Close} too. - var ops []chanOp - switch instr := instr.(type) { - case *ssa.UnOp: - if instr.Op == token.ARROW { - ops = append(ops, chanOp{instr.X, types.RecvOnly, instr.Pos()}) - } - case *ssa.Send: - ops = append(ops, chanOp{instr.Chan, types.SendOnly, instr.Pos()}) - case *ssa.Select: - for _, st := range instr.States { - ops = append(ops, chanOp{st.Chan, st.Dir, st.Pos}) - } - case ssa.CallInstruction: - cc := instr.Common() - if b, ok := cc.Value.(*ssa.Builtin); ok && b.Name() == "close" { - ops = append(ops, chanOp{cc.Args[0], types.SendRecv, cc.Pos()}) - } - } - return ops -} - -type peersResult struct { - queryPos token.Pos // of queried channel op - queryType types.Type // type of queried channel - makes, sends, receives, closes []token.Pos // positions of aliased makechan/send/receive/close instrs -} - -func (r *peersResult) display(printf printfFunc) { - if len(r.makes) == 0 { - printf(r.queryPos, "This channel can't point to anything.") - return - } - printf(r.queryPos, "This channel of type %s may be:", r.queryType) - for _, alloc := range r.makes { - printf(alloc, "\tallocated here") - } - for _, send := range r.sends { - printf(send, "\tsent to, here") - } - for _, receive := range r.receives { - printf(receive, "\treceived from, here") - } - for _, clos := range r.closes { - printf(clos, "\tclosed, here") - } -} - -func (r *peersResult) toSerial(res *serial.Result, fset *token.FileSet) { - peers := &serial.Peers{ - Pos: fset.Position(r.queryPos).String(), - Type: r.queryType.String(), - } - for _, alloc := range r.makes { - peers.Allocs = append(peers.Allocs, fset.Position(alloc).String()) - } - for _, send := range r.sends { - peers.Sends = append(peers.Sends, fset.Position(send).String()) - } - for _, receive := range r.receives { - peers.Receives = append(peers.Receives, fset.Position(receive).String()) - } - for _, clos := range r.closes { - peers.Closes = append(peers.Closes, fset.Position(clos).String()) - } - res.Peers = peers -} - -// -------- utils -------- - -// NB: byPos is not deterministic across packages since it depends on load order. -// Use lessPos if the tests need it. -type byPos []token.Pos - -func (p byPos) Len() int { return len(p) } -func (p byPos) Less(i, j int) bool { return p[i] < p[j] } -func (p byPos) Swap(i, j int) { p[i], p[j] = p[j], p[i] } diff --git a/vendor/github.com/visualfc/gotools/oracle/oracle/pointsto.go b/vendor/github.com/visualfc/gotools/oracle/oracle/pointsto.go deleted file mode 100644 index 64e21ea..0000000 --- a/vendor/github.com/visualfc/gotools/oracle/oracle/pointsto.go +++ /dev/null @@ -1,293 +0,0 @@ -// Copyright 2013 The Go Authors. All rights reserved. -// Use of this source code is governed by a BSD-style -// license that can be found in the LICENSE file. - -// +build go1.5 - -package oracle - -import ( - "fmt" - "go/ast" - "go/token" - "go/types" - "sort" - - "github.com/visualfc/gotools/oracle/oracle/serial" - "golang.org/x/tools/go/ast/astutil" - "golang.org/x/tools/go/loader" - "golang.org/x/tools/go/pointer" - "golang.org/x/tools/go/ssa" - "golang.org/x/tools/go/ssa/ssautil" -) - -// pointsto runs the pointer analysis on the selected expression, -// and reports its points-to set (for a pointer-like expression) -// or its dynamic types (for an interface, reflect.Value, or -// reflect.Type expression) and their points-to sets. -// -// All printed sets are sorted to ensure determinism. -// -func pointsto(q *Query) error { - lconf := loader.Config{Build: q.Build} - - if err := setPTAScope(&lconf, q.Scope); err != nil { - return err - } - - // Load/parse/type-check the program. - lprog, err := lconf.Load() - if err != nil { - return err - } - q.Fset = lprog.Fset - - qpos, err := parseQueryPos(lprog, q.Pos, true) // needs exact pos - if err != nil { - return err - } - - prog := ssautil.CreateProgram(lprog, ssa.GlobalDebug) - - ptaConfig, err := setupPTA(prog, lprog, q.PTALog, q.Reflection) - if err != nil { - return err - } - - path, action := findInterestingNode(qpos.info, qpos.path) - if action != actionExpr { - return fmt.Errorf("pointer analysis wants an expression; got %s", - astutil.NodeDescription(qpos.path[0])) - } - - var expr ast.Expr - var obj types.Object - switch n := path[0].(type) { - case *ast.ValueSpec: - // ambiguous ValueSpec containing multiple names - return fmt.Errorf("multiple value specification") - case *ast.Ident: - obj = qpos.info.ObjectOf(n) - expr = n - case ast.Expr: - expr = n - default: - // TODO(adonovan): is this reachable? - return fmt.Errorf("unexpected AST for expr: %T", n) - } - - // Reject non-pointerlike types (includes all constants---except nil). - // TODO(adonovan): reject nil too. - typ := qpos.info.TypeOf(expr) - if !pointer.CanPoint(typ) { - return fmt.Errorf("pointer analysis wants an expression of reference type; got %s", typ) - } - - // Determine the ssa.Value for the expression. - var value ssa.Value - var isAddr bool - if obj != nil { - // def/ref of func/var object - value, isAddr, err = ssaValueForIdent(prog, qpos.info, obj, path) - } else { - value, isAddr, err = ssaValueForExpr(prog, qpos.info, path) - } - if err != nil { - return err // e.g. trivially dead code - } - - // Defer SSA construction till after errors are reported. - prog.Build() - - // Run the pointer analysis. - ptrs, err := runPTA(ptaConfig, value, isAddr) - if err != nil { - return err // e.g. analytically unreachable - } - - q.result = &pointstoResult{ - qpos: qpos, - typ: typ, - ptrs: ptrs, - } - return nil -} - -// ssaValueForIdent returns the ssa.Value for the ast.Ident whose path -// to the root of the AST is path. isAddr reports whether the -// ssa.Value is the address denoted by the ast.Ident, not its value. -// -func ssaValueForIdent(prog *ssa.Program, qinfo *loader.PackageInfo, obj types.Object, path []ast.Node) (value ssa.Value, isAddr bool, err error) { - switch obj := obj.(type) { - case *types.Var: - pkg := prog.Package(qinfo.Pkg) - pkg.Build() - if v, addr := prog.VarValue(obj, pkg, path); v != nil { - return v, addr, nil - } - return nil, false, fmt.Errorf("can't locate SSA Value for var %s", obj.Name()) - - case *types.Func: - fn := prog.FuncValue(obj) - if fn == nil { - return nil, false, fmt.Errorf("%s is an interface method", obj) - } - // TODO(adonovan): there's no point running PTA on a *Func ident. - // Eliminate this feature. - return fn, false, nil - } - panic(obj) -} - -// ssaValueForExpr returns the ssa.Value of the non-ast.Ident -// expression whose path to the root of the AST is path. -// -func ssaValueForExpr(prog *ssa.Program, qinfo *loader.PackageInfo, path []ast.Node) (value ssa.Value, isAddr bool, err error) { - pkg := prog.Package(qinfo.Pkg) - pkg.SetDebugMode(true) - pkg.Build() - - fn := ssa.EnclosingFunction(pkg, path) - if fn == nil { - return nil, false, fmt.Errorf("no SSA function built for this location (dead code?)") - } - - if v, addr := fn.ValueForExpr(path[0].(ast.Expr)); v != nil { - return v, addr, nil - } - - return nil, false, fmt.Errorf("can't locate SSA Value for expression in %s", fn) -} - -// runPTA runs the pointer analysis of the selected SSA value or address. -func runPTA(conf *pointer.Config, v ssa.Value, isAddr bool) (ptrs []pointerResult, err error) { - T := v.Type() - if isAddr { - conf.AddIndirectQuery(v) - T = deref(T) - } else { - conf.AddQuery(v) - } - ptares := ptrAnalysis(conf) - - var ptr pointer.Pointer - if isAddr { - ptr = ptares.IndirectQueries[v] - } else { - ptr = ptares.Queries[v] - } - if ptr == (pointer.Pointer{}) { - return nil, fmt.Errorf("pointer analysis did not find expression (dead code?)") - } - pts := ptr.PointsTo() - - if pointer.CanHaveDynamicTypes(T) { - // Show concrete types for interface/reflect.Value expression. - if concs := pts.DynamicTypes(); concs.Len() > 0 { - concs.Iterate(func(conc types.Type, pta interface{}) { - labels := pta.(pointer.PointsToSet).Labels() - sort.Sort(byPosAndString(labels)) // to ensure determinism - ptrs = append(ptrs, pointerResult{conc, labels}) - }) - } - } else { - // Show labels for other expressions. - labels := pts.Labels() - sort.Sort(byPosAndString(labels)) // to ensure determinism - ptrs = append(ptrs, pointerResult{T, labels}) - } - sort.Sort(byTypeString(ptrs)) // to ensure determinism - return ptrs, nil -} - -type pointerResult struct { - typ types.Type // type of the pointer (always concrete) - labels []*pointer.Label // set of labels -} - -type pointstoResult struct { - qpos *queryPos - typ types.Type // type of expression - ptrs []pointerResult // pointer info (typ is concrete => len==1) -} - -func (r *pointstoResult) display(printf printfFunc) { - if pointer.CanHaveDynamicTypes(r.typ) { - // Show concrete types for interface, reflect.Type or - // reflect.Value expression. - - if len(r.ptrs) > 0 { - printf(r.qpos, "this %s may contain these dynamic types:", r.qpos.typeString(r.typ)) - for _, ptr := range r.ptrs { - var obj types.Object - if nt, ok := deref(ptr.typ).(*types.Named); ok { - obj = nt.Obj() - } - if len(ptr.labels) > 0 { - printf(obj, "\t%s, may point to:", r.qpos.typeString(ptr.typ)) - printLabels(printf, ptr.labels, "\t\t") - } else { - printf(obj, "\t%s", r.qpos.typeString(ptr.typ)) - } - } - } else { - printf(r.qpos, "this %s cannot contain any dynamic types.", r.typ) - } - } else { - // Show labels for other expressions. - if ptr := r.ptrs[0]; len(ptr.labels) > 0 { - printf(r.qpos, "this %s may point to these objects:", - r.qpos.typeString(r.typ)) - printLabels(printf, ptr.labels, "\t") - } else { - printf(r.qpos, "this %s may not point to anything.", - r.qpos.typeString(r.typ)) - } - } -} - -func (r *pointstoResult) toSerial(res *serial.Result, fset *token.FileSet) { - var pts []serial.PointsTo - for _, ptr := range r.ptrs { - var namePos string - if nt, ok := deref(ptr.typ).(*types.Named); ok { - namePos = fset.Position(nt.Obj().Pos()).String() - } - var labels []serial.PointsToLabel - for _, l := range ptr.labels { - labels = append(labels, serial.PointsToLabel{ - Pos: fset.Position(l.Pos()).String(), - Desc: l.String(), - }) - } - pts = append(pts, serial.PointsTo{ - Type: r.qpos.typeString(ptr.typ), - NamePos: namePos, - Labels: labels, - }) - } - res.PointsTo = pts -} - -type byTypeString []pointerResult - -func (a byTypeString) Len() int { return len(a) } -func (a byTypeString) Less(i, j int) bool { return a[i].typ.String() < a[j].typ.String() } -func (a byTypeString) Swap(i, j int) { a[i], a[j] = a[j], a[i] } - -type byPosAndString []*pointer.Label - -func (a byPosAndString) Len() int { return len(a) } -func (a byPosAndString) Less(i, j int) bool { - cmp := a[i].Pos() - a[j].Pos() - return cmp < 0 || (cmp == 0 && a[i].String() < a[j].String()) -} -func (a byPosAndString) Swap(i, j int) { a[i], a[j] = a[j], a[i] } - -func printLabels(printf printfFunc, labels []*pointer.Label, prefix string) { - // TODO(adonovan): due to context-sensitivity, many of these - // labels may differ only by context, which isn't apparent. - for _, label := range labels { - printf(label, "%s%s", prefix, label) - } -} diff --git a/vendor/github.com/visualfc/gotools/oracle/oracle/pos.go b/vendor/github.com/visualfc/gotools/oracle/oracle/pos.go deleted file mode 100644 index 3c706f3..0000000 --- a/vendor/github.com/visualfc/gotools/oracle/oracle/pos.go +++ /dev/null @@ -1,143 +0,0 @@ -package oracle - -// This file defines utilities for working with file positions. - -import ( - "fmt" - "go/parser" - "go/token" - "os" - "path/filepath" - "strconv" - "strings" - - "golang.org/x/tools/go/ast/astutil" -) - -// parseOctothorpDecimal returns the numeric value if s matches "#%d", -// otherwise -1. -func parseOctothorpDecimal(s string) int { - if s != "" && s[0] == '#' { - if s, err := strconv.ParseInt(s[1:], 10, 32); err == nil { - return int(s) - } - } - return -1 -} - -// parsePosFlag parses a string of the form "file:pos" or -// file:start,end" where pos, start, end match #%d and represent byte -// offsets, and returns its components. -// -// (Numbers without a '#' prefix are reserved for future use, -// e.g. to indicate line/column positions.) -// -func parsePosFlag(posFlag string) (filename string, startOffset, endOffset int, err error) { - if posFlag == "" { - err = fmt.Errorf("no source position specified (-pos flag)") - return - } - - colon := strings.LastIndex(posFlag, ":") - if colon < 0 { - err = fmt.Errorf("invalid source position -pos=%q", posFlag) - return - } - filename, offset := posFlag[:colon], posFlag[colon+1:] - startOffset = -1 - endOffset = -1 - if hyphen := strings.Index(offset, ","); hyphen < 0 { - // e.g. "foo.go:#123" - startOffset = parseOctothorpDecimal(offset) - endOffset = startOffset - } else { - // e.g. "foo.go:#123,#456" - startOffset = parseOctothorpDecimal(offset[:hyphen]) - endOffset = parseOctothorpDecimal(offset[hyphen+1:]) - } - if startOffset < 0 || endOffset < 0 { - err = fmt.Errorf("invalid -pos offset %q", offset) - return - } - return -} - -// findQueryPos searches fset for filename and translates the -// specified file-relative byte offsets into token.Pos form. It -// returns an error if the file was not found or the offsets were out -// of bounds. -// -func findQueryPos(fset *token.FileSet, filename string, startOffset, endOffset int) (start, end token.Pos, err error) { - var file *token.File - fset.Iterate(func(f *token.File) bool { - if sameFile(filename, f.Name()) { - // (f.Name() is absolute) - file = f - return false // done - } - return true // continue - }) - if file == nil { - err = fmt.Errorf("couldn't find file containing position") - return - } - - // Range check [start..end], inclusive of both end-points. - - if 0 <= startOffset && startOffset <= file.Size() { - start = file.Pos(int(startOffset)) - } else { - err = fmt.Errorf("start position is beyond end of file") - return - } - - if 0 <= endOffset && endOffset <= file.Size() { - end = file.Pos(int(endOffset)) - } else { - err = fmt.Errorf("end position is beyond end of file") - return - } - - return -} - -// sameFile returns true if x and y have the same basename and denote -// the same file. -// -func sameFile(x, y string) bool { - if filepath.Base(x) == filepath.Base(y) { // (optimisation) - if xi, err := os.Stat(x); err == nil { - if yi, err := os.Stat(y); err == nil { - return os.SameFile(xi, yi) - } - } - } - return false -} - -// fastQueryPos parses the -pos flag and returns a QueryPos. -// It parses only a single file, and does not run the type checker. -func fastQueryPos(posFlag string) (*queryPos, error) { - filename, startOffset, endOffset, err := parsePosFlag(posFlag) - if err != nil { - return nil, err - } - - fset := token.NewFileSet() - f, err := parser.ParseFile(fset, filename, nil, 0) - if err != nil { - return nil, err - } - - start, end, err := findQueryPos(fset, filename, startOffset, endOffset) - if err != nil { - return nil, err - } - - path, exact := astutil.PathEnclosingInterval(f, start, end) - if path == nil { - return nil, fmt.Errorf("no syntax here") - } - - return &queryPos{fset, start, end, path, exact, nil}, nil -} diff --git a/vendor/github.com/visualfc/gotools/oracle/oracle/referrers.go b/vendor/github.com/visualfc/gotools/oracle/oracle/referrers.go deleted file mode 100644 index e86bf3f..0000000 --- a/vendor/github.com/visualfc/gotools/oracle/oracle/referrers.go +++ /dev/null @@ -1,243 +0,0 @@ -// Copyright 2013 The Go Authors. All rights reserved. -// Use of this source code is governed by a BSD-style -// license that can be found in the LICENSE file. - -// +build go1.5 - -package oracle - -import ( - "bytes" - "fmt" - "go/ast" - "go/token" - "go/types" - "io/ioutil" - "sort" - - "github.com/visualfc/gotools/oracle/oracle/serial" - "golang.org/x/tools/go/loader" - "golang.org/x/tools/refactor/importgraph" -) - -// Referrers reports all identifiers that resolve to the same object -// as the queried identifier, within any package in the analysis scope. -func referrers(q *Query) error { - lconf := loader.Config{Build: q.Build} - allowErrors(&lconf) - - if _, err := importQueryPackage(q.Pos, &lconf); err != nil { - return err - } - - var id *ast.Ident - var obj types.Object - var lprog *loader.Program - var pass2 bool - var qpos *queryPos - for { - // Load/parse/type-check the program. - var err error - lprog, err = lconf.Load() - if err != nil { - return err - } - q.Fset = lprog.Fset - - qpos, err = parseQueryPos(lprog, q.Pos, false) - if err != nil { - return err - } - - id, _ = qpos.path[0].(*ast.Ident) - if id == nil { - return fmt.Errorf("no identifier here") - } - - obj = qpos.info.ObjectOf(id) - if obj == nil { - // Happens for y in "switch y := x.(type)", - // the package declaration, - // and unresolved identifiers. - if _, ok := qpos.path[1].(*ast.File); ok { // package decl? - pkg := qpos.info.Pkg - obj = types.NewPkgName(id.Pos(), pkg, pkg.Name(), pkg) - } else { - return fmt.Errorf("no object for identifier: %T", qpos.path[1]) - } - } - - if pass2 { - break - } - - // If the identifier is exported, we must load all packages that - // depend transitively upon the package that defines it. - // Treat PkgNames as exported, even though they're lowercase. - if _, isPkg := obj.(*types.PkgName); !(isPkg || obj.Exported()) { - break // not exported - } - - // Scan the workspace and build the import graph. - // Ignore broken packages. - _, rev, _ := importgraph.Build(q.Build) - - // Re-load the larger program. - // Create a new file set so that ... - // External test packages are never imported, - // so they will never appear in the graph. - // (We must reset the Config here, not just reset the Fset field.) - lconf = loader.Config{ - Fset: token.NewFileSet(), - Build: q.Build, - } - allowErrors(&lconf) - for path := range rev.Search(obj.Pkg().Path()) { - lconf.ImportWithTests(path) - } - pass2 = true - } - - // Iterate over all go/types' Uses facts for the entire program. - var refs []*ast.Ident - for _, info := range lprog.AllPackages { - for id2, obj2 := range info.Uses { - if sameObj(obj, obj2) { - refs = append(refs, id2) - } - } - } - sort.Sort(byNamePos{q.Fset, refs}) - - q.result = &referrersResult{ - qpos: qpos, - query: id, - obj: obj, - refs: refs, - } - return nil -} - -// same reports whether x and y are identical, or both are PkgNames -// that import the same Package. -// -func sameObj(x, y types.Object) bool { - if x == y { - return true - } - if x, ok := x.(*types.PkgName); ok { - if y, ok := y.(*types.PkgName); ok { - return x.Imported() == y.Imported() - } - } - return false -} - -// -------- utils -------- - -// An deterministic ordering for token.Pos that doesn't -// depend on the order in which packages were loaded. -func lessPos(fset *token.FileSet, x, y token.Pos) bool { - fx := fset.File(x) - fy := fset.File(y) - if fx != fy { - return fx.Name() < fy.Name() - } - return x < y -} - -type byNamePos struct { - fset *token.FileSet - ids []*ast.Ident -} - -func (p byNamePos) Len() int { return len(p.ids) } -func (p byNamePos) Swap(i, j int) { p.ids[i], p.ids[j] = p.ids[j], p.ids[i] } -func (p byNamePos) Less(i, j int) bool { - return lessPos(p.fset, p.ids[i].NamePos, p.ids[j].NamePos) -} - -type referrersResult struct { - qpos *queryPos - query *ast.Ident // identifier of query - obj types.Object // object it denotes - refs []*ast.Ident // set of all other references to it -} - -func (r *referrersResult) display(printf printfFunc) { - printf(r.obj, "%d references to %s", len(r.refs), r.qpos.objectString(r.obj)) - - // Show referring lines, like grep. - type fileinfo struct { - refs []*ast.Ident - linenums []int // line number of refs[i] - data chan interface{} // file contents or error - } - var fileinfos []*fileinfo - fileinfosByName := make(map[string]*fileinfo) - - // First pass: start the file reads concurrently. - sema := make(chan struct{}, 20) // counting semaphore to limit I/O concurrency - for _, ref := range r.refs { - posn := r.qpos.fset.Position(ref.Pos()) - fi := fileinfosByName[posn.Filename] - if fi == nil { - fi = &fileinfo{data: make(chan interface{})} - fileinfosByName[posn.Filename] = fi - fileinfos = append(fileinfos, fi) - - // First request for this file: - // start asynchronous read. - go func() { - sema <- struct{}{} // acquire token - content, err := ioutil.ReadFile(posn.Filename) - <-sema // release token - if err != nil { - fi.data <- err - } else { - fi.data <- content - } - }() - } - fi.refs = append(fi.refs, ref) - fi.linenums = append(fi.linenums, posn.Line) - } - - // Second pass: print refs in original order. - // One line may have several refs at different columns. - for _, fi := range fileinfos { - v := <-fi.data // wait for I/O completion - - // Print one item for all refs in a file that could not - // be loaded (perhaps due to //line directives). - if err, ok := v.(error); ok { - var suffix string - if more := len(fi.refs) - 1; more > 0 { - suffix = fmt.Sprintf(" (+ %d more refs in this file)", more) - } - printf(fi.refs[0], "%v%s", err, suffix) - continue - } - - lines := bytes.Split(v.([]byte), []byte("\n")) - for i, ref := range fi.refs { - printf(ref, "%s", lines[fi.linenums[i]-1]) - } - } -} - -// TODO(adonovan): encode extent, not just Pos info, in Serial form. - -func (r *referrersResult) toSerial(res *serial.Result, fset *token.FileSet) { - referrers := &serial.Referrers{ - Pos: fset.Position(r.query.Pos()).String(), - Desc: r.obj.String(), - } - if pos := r.obj.Pos(); pos != token.NoPos { // Package objects have no Pos() - referrers.ObjPos = fset.Position(pos).String() - } - for _, ref := range r.refs { - referrers.Refs = append(referrers.Refs, fset.Position(ref.NamePos).String()) - } - res.Referrers = referrers -} diff --git a/vendor/github.com/visualfc/gotools/oracle/oracle/serial/serial.go b/vendor/github.com/visualfc/gotools/oracle/oracle/serial/serial.go deleted file mode 100644 index 65f0822..0000000 --- a/vendor/github.com/visualfc/gotools/oracle/oracle/serial/serial.go +++ /dev/null @@ -1,258 +0,0 @@ -// Copyright 2013 The Go Authors. All rights reserved. -// Use of this source code is governed by a BSD-style -// license that can be found in the LICENSE file. - -// Package serial defines the oracle's schema for structured data -// serialization using JSON, XML, etc. -package serial - -// All 'pos' strings are of the form "file:line:col". -// TODO(adonovan): improve performance by sharing filename strings. -// TODO(adonovan): improve precision by providing the start/end -// interval when available. -// -// TODO(adonovan): consider richer encodings of types, functions, -// methods, etc. - -// A Peers is the result of a 'peers' query. -// If Allocs is empty, the selected channel can't point to anything. -type Peers struct { - Pos string `json:"pos"` // location of the selected channel op (<-) - Type string `json:"type"` // type of the selected channel - Allocs []string `json:"allocs,omitempty"` // locations of aliased make(chan) ops - Sends []string `json:"sends,omitempty"` // locations of aliased ch<-x ops - Receives []string `json:"receives,omitempty"` // locations of aliased <-ch ops - Closes []string `json:"closes,omitempty"` // locations of aliased close(ch) ops -} - -// A Referrers is the result of a 'referrers' query. -type Referrers struct { - Pos string `json:"pos"` // location of the query reference - ObjPos string `json:"objpos,omitempty"` // location of the definition - Desc string `json:"desc"` // description of the denoted object - Refs []string `json:"refs,omitempty"` // locations of all references -} - -// A Definition is the result of a 'definition' query. -type Definition struct { - ObjPos string `json:"objpos,omitempty"` // location of the definition - Desc string `json:"desc"` // description of the denoted object -} - -type CalleesItem struct { - Name string `json:"name"` // full name of called function - Pos string `json:"pos"` // location of called function -} - -// A Callees is the result of a 'callees' query. -// -// Callees is nonempty unless the call was a dynamic call on a -// provably nil func or interface value. -type Callees struct { - Pos string `json:"pos"` // location of selected call site - Desc string `json:"desc"` // description of call site - Callees []*CalleesItem `json:"callees,omitempty"` // set of possible call targets -} - -// A Caller is one element of the slice returned by a 'callers' query. -// (Callstack also contains a similar slice.) -// -// The root of the callgraph has an unspecified "Caller" string. -type Caller struct { - Pos string `json:"pos,omitempty"` // location of the calling function - Desc string `json:"desc"` // description of call site - Caller string `json:"caller"` // full name of calling function -} - -// A CallStack is the result of a 'callstack' query. -// It indicates an arbitrary path from the root of the callgraph to -// the query function. -// -// If the Callers slice is empty, the function was unreachable in this -// analysis scope. -type CallStack struct { - Pos string `json:"pos"` // location of the selected function - Target string `json:"target"` // the selected function - Callers []Caller `json:"callers"` // enclosing calls, innermost first. -} - -// A FreeVar is one element of the slice returned by a 'freevars' -// query. Each one identifies an expression referencing a local -// identifier defined outside the selected region. -type FreeVar struct { - Pos string `json:"pos"` // location of the identifier's definition - Kind string `json:"kind"` // one of {var,func,type,const,label} - Ref string `json:"ref"` // referring expression (e.g. "x" or "x.y.z") - Type string `json:"type"` // type of the expression -} - -// An Implements contains the result of an 'implements' query. -// It describes the queried type, the set of named non-empty interface -// types to which it is assignable, and the set of named/*named types -// (concrete or non-empty interface) which may be assigned to it. -// -type Implements struct { - T ImplementsType `json:"type,omitempty"` // the queried type - AssignableTo []ImplementsType `json:"to,omitempty"` // types assignable to T - AssignableFrom []ImplementsType `json:"from,omitempty"` // interface types assignable from T - AssignableFromPtr []ImplementsType `json:"fromptr,omitempty"` // interface types assignable only from *T - - // The following fields are set only if the query was a method. - // Assignable{To,From,FromPtr}Method[i] is the corresponding - // method of type Assignable{To,From,FromPtr}[i], or blank - // {"",""} if that type lacks the method. - Method *DescribeMethod `json:"method,omitempty"` // the queried method - AssignableToMethod []DescribeMethod `json:"to_method,omitempty"` - AssignableFromMethod []DescribeMethod `json:"from_method,omitempty"` - AssignableFromPtrMethod []DescribeMethod `json:"fromptr_method,omitempty"` -} - -// An ImplementsType describes a single type as part of an 'implements' query. -type ImplementsType struct { - Name string `json:"name"` // full name of the type - Pos string `json:"pos"` // location of its definition - Kind string `json:"kind"` // "basic", "array", etc -} - -// A SyntaxNode is one element of a stack of enclosing syntax nodes in -// a "what" query. -type SyntaxNode struct { - Description string `json:"desc"` // description of syntax tree - Start int `json:"start"` // start byte offset, 0-based - End int `json:"end"` // end byte offset -} - -// A What is the result of the "what" query, which quickly identifies -// the selection, parsing only a single file. It is intended for use -// in low-latency GUIs. -type What struct { - Enclosing []SyntaxNode `json:"enclosing"` // enclosing nodes of syntax tree - Modes []string `json:"modes"` // query modes enabled for this selection. - SrcDir string `json:"srcdir,omitempty"` // $GOROOT src directory containing queried package - ImportPath string `json:"importpath,omitempty"` // import path of queried package -} - -// A PointsToLabel describes a pointer analysis label. -// -// A "label" is an object that may be pointed to by a pointer, map, -// channel, 'func', slice or interface. Labels include: -// - functions -// - globals -// - arrays created by literals (e.g. []byte("foo")) and conversions ([]byte(s)) -// - stack- and heap-allocated variables (including composite literals) -// - arrays allocated by append() -// - channels, maps and arrays created by make() -// - and their subelements, e.g. "alloc.y[*].z" -// -type PointsToLabel struct { - Pos string `json:"pos"` // location of syntax that allocated the object - Desc string `json:"desc"` // description of the label -} - -// A PointsTo is one element of the result of a 'pointsto' query on an -// expression. It describes a single pointer: its type and the set of -// "labels" it points to. -// -// If the pointer is of interface type, it will have one PTS entry -// describing each concrete type that it may contain. For each -// concrete type that is a pointer, the PTS entry describes the labels -// it may point to. The same is true for reflect.Values, except the -// dynamic types needn't be concrete. -// -type PointsTo struct { - Type string `json:"type"` // (concrete) type of the pointer - NamePos string `json:"namepos,omitempty"` // location of type defn, if Named - Labels []PointsToLabel `json:"labels,omitempty"` // pointed-to objects -} - -// A DescribeValue is the additional result of a 'describe' query -// if the selection indicates a value or expression. -type DescribeValue struct { - Type string `json:"type"` // type of the expression - Value string `json:"value,omitempty"` // value of the expression, if constant - ObjPos string `json:"objpos,omitempty"` // location of the definition, if an Ident -} - -type DescribeMethod struct { - Name string `json:"name"` // method name, as defined by types.Selection.String() - Pos string `json:"pos"` // location of the method's definition -} - -// A DescribeType is the additional result of a 'describe' query -// if the selection indicates a type. -type DescribeType struct { - Type string `json:"type"` // the string form of the type - NamePos string `json:"namepos,omitempty"` // location of definition of type, if named - NameDef string `json:"namedef,omitempty"` // underlying definition of type, if named - Methods []DescribeMethod `json:"methods,omitempty"` // methods of the type -} - -type DescribeMember struct { - Name string `json:"name"` // name of member - Type string `json:"type,omitempty"` // type of member (underlying, if 'type') - Value string `json:"value,omitempty"` // value of member (if 'const') - Pos string `json:"pos"` // location of definition of member - Kind string `json:"kind"` // one of {var,const,func,type} - Methods []DescribeMethod `json:"methods,omitempty"` // methods (if member is a type) -} - -// A DescribePackage is the additional result of a 'describe' if -// the selection indicates a package. -type DescribePackage struct { - Path string `json:"path"` // import path of the package - Members []*DescribeMember `json:"members,omitempty"` // accessible members of the package -} - -// A Describe is the result of a 'describe' query. -// It may contain an element describing the selected semantic entity -// in detail. -type Describe struct { - Desc string `json:"desc"` // description of the selected syntax node - Pos string `json:"pos"` // location of the selected syntax node - Detail string `json:"detail,omitempty"` // one of {package, type, value}, or "". - - // At most one of the following fields is populated: - // the one specified by 'detail'. - Package *DescribePackage `json:"package,omitempty"` - Type *DescribeType `json:"type,omitempty"` - Value *DescribeValue `json:"value,omitempty"` -} - -// A WhichErrs is the result of a 'whicherrs' query. -// It contains the position of the queried error and the possible globals, -// constants, and types it may point to. -type WhichErrs struct { - ErrPos string `json:"errpos,omitempty"` // location of queried error - Globals []string `json:"globals,omitempty"` // locations of globals - Constants []string `json:"constants,omitempty"` // locations of constants - Types []WhichErrsType `json:"types,omitempty"` // Types -} - -type WhichErrsType struct { - Type string `json:"type,omitempty"` - Position string `json:"position,omitempty"` -} - -// A Result is the common result of any oracle query. -// It contains a query-specific result element. -// -// TODO(adonovan): perhaps include other info such as: analysis scope, -// raw query position, stack of ast nodes, query package, etc. -type Result struct { - Mode string `json:"mode"` // mode of the query - - // Exactly one of the following fields is populated: - // the one specified by 'mode'. - Callees *Callees `json:"callees,omitempty"` - Callers []Caller `json:"callers,omitempty"` - Callstack *CallStack `json:"callstack,omitempty"` - Definition *Definition `json:"definition,omitempty"` - Describe *Describe `json:"describe,omitempty"` - Freevars []*FreeVar `json:"freevars,omitempty"` - Implements *Implements `json:"implements,omitempty"` - Peers *Peers `json:"peers,omitempty"` - PointsTo []PointsTo `json:"pointsto,omitempty"` - Referrers *Referrers `json:"referrers,omitempty"` - What *What `json:"what,omitempty"` - WhichErrs *WhichErrs `json:"whicherrs,omitempty"` -} diff --git a/vendor/github.com/visualfc/gotools/oracle/oracle/what.go b/vendor/github.com/visualfc/gotools/oracle/oracle/what.go deleted file mode 100644 index c5355cc..0000000 --- a/vendor/github.com/visualfc/gotools/oracle/oracle/what.go +++ /dev/null @@ -1,210 +0,0 @@ -// Copyright 2013 The Go Authors. All rights reserved. -// Use of this source code is governed by a BSD-style -// license that can be found in the LICENSE file. - -package oracle - -import ( - "fmt" - "go/ast" - "go/build" - "go/token" - "os" - "path/filepath" - "sort" - "strings" - - "github.com/visualfc/gotools/oracle/oracle/serial" - "golang.org/x/tools/go/ast/astutil" -) - -// what reports all the information about the query selection that can be -// obtained from parsing only its containing source file. -// It is intended to be a very low-latency query callable from GUI -// tools, e.g. to populate a menu of options of slower queries about -// the selected location. -// -func what(q *Query) error { - qpos, err := fastQueryPos(q.Pos) - if err != nil { - return err - } - q.Fset = qpos.fset - - // (ignore errors) - srcdir, importPath, _ := guessImportPath(q.Fset.File(qpos.start).Name(), q.Build) - - // Determine which query modes are applicable to the selection. - enable := map[string]bool{ - "describe": true, // any syntax; always enabled - } - - if qpos.end > qpos.start { - enable["freevars"] = true // nonempty selection? - } - - for _, n := range qpos.path { - switch n := n.(type) { - case *ast.Ident: - enable["definition"] = true - enable["referrers"] = true - enable["implements"] = true - case *ast.CallExpr: - enable["callees"] = true - case *ast.FuncDecl: - enable["callers"] = true - enable["callstack"] = true - case *ast.SendStmt: - enable["peers"] = true - case *ast.UnaryExpr: - if n.Op == token.ARROW { - enable["peers"] = true - } - } - - // For implements, we approximate findInterestingNode. - if _, ok := enable["implements"]; !ok { - switch n.(type) { - case *ast.ArrayType, - *ast.StructType, - *ast.FuncType, - *ast.InterfaceType, - *ast.MapType, - *ast.ChanType: - enable["implements"] = true - } - } - - // For pointsto, we approximate findInterestingNode. - if _, ok := enable["pointsto"]; !ok { - switch n.(type) { - case ast.Stmt, - *ast.ArrayType, - *ast.StructType, - *ast.FuncType, - *ast.InterfaceType, - *ast.MapType, - *ast.ChanType: - enable["pointsto"] = false // not an expr - - case ast.Expr, ast.Decl, *ast.ValueSpec: - enable["pointsto"] = true // an expr, maybe - - default: - // Comment, Field, KeyValueExpr, etc: ascend. - } - } - } - - // If we don't have an exact selection, disable modes that need one. - if !qpos.exact { - enable["callees"] = false - enable["pointsto"] = false - enable["whicherrs"] = false - enable["describe"] = false - } - - var modes []string - for mode := range enable { - modes = append(modes, mode) - } - sort.Strings(modes) - - q.result = &whatResult{ - path: qpos.path, - srcdir: srcdir, - importPath: importPath, - modes: modes, - } - return nil -} - -// guessImportPath finds the package containing filename, and returns -// its source directory (an element of $GOPATH) and its import path -// relative to it. -// -// TODO(adonovan): what about _test.go files that are not part of the -// package? -// -func guessImportPath(filename string, buildContext *build.Context) (srcdir, importPath string, err error) { - absFile, err := filepath.Abs(filename) - if err != nil { - err = fmt.Errorf("can't form absolute path of %s", filename) - return - } - absFileDir := segments(filepath.Dir(absFile)) - - // Find the innermost directory in $GOPATH that encloses filename. - minD := 1024 - for _, gopathDir := range buildContext.SrcDirs() { - absDir, err := filepath.Abs(gopathDir) - if err != nil { - continue // e.g. non-existent dir on $GOPATH - } - d := prefixLen(segments(absDir), absFileDir) - // If there are multiple matches, - // prefer the innermost enclosing directory - // (smallest d). - if d >= 0 && d < minD { - minD = d - srcdir = gopathDir - importPath = strings.Join(absFileDir[len(absFileDir)-minD:], string(os.PathSeparator)) - } - } - if srcdir == "" { - err = fmt.Errorf("directory %s is not beneath any of these GOROOT/GOPATH directories: %s", - filepath.Dir(absFile), strings.Join(buildContext.SrcDirs(), ", ")) - } - return -} - -func segments(path string) []string { - return strings.Split(path, string(os.PathSeparator)) -} - -// prefixLen returns the length of the remainder of y if x is a prefix -// of y, a negative number otherwise. -func prefixLen(x, y []string) int { - d := len(y) - len(x) - if d >= 0 { - for i := range x { - if y[i] != x[i] { - return -1 // not a prefix - } - } - } - return d -} - -type whatResult struct { - path []ast.Node - modes []string - srcdir string - importPath string -} - -func (r *whatResult) display(printf printfFunc) { - for _, n := range r.path { - printf(n, "%s", astutil.NodeDescription(n)) - } - printf(nil, "modes: %s", r.modes) - printf(nil, "srcdir: %s", r.srcdir) - printf(nil, "import path: %s", r.importPath) -} - -func (r *whatResult) toSerial(res *serial.Result, fset *token.FileSet) { - var enclosing []serial.SyntaxNode - for _, n := range r.path { - enclosing = append(enclosing, serial.SyntaxNode{ - Description: astutil.NodeDescription(n), - Start: fset.Position(n.Pos()).Offset, - End: fset.Position(n.End()).Offset, - }) - } - res.What = &serial.What{ - Modes: r.modes, - SrcDir: r.srcdir, - ImportPath: r.importPath, - Enclosing: enclosing, - } -} diff --git a/vendor/github.com/visualfc/gotools/oracle/oracle/whicherrs.go b/vendor/github.com/visualfc/gotools/oracle/oracle/whicherrs.go deleted file mode 100644 index 35581ca..0000000 --- a/vendor/github.com/visualfc/gotools/oracle/oracle/whicherrs.go +++ /dev/null @@ -1,328 +0,0 @@ -// Copyright 2014 The Go Authors. All rights reserved. -// Use of this source code is governed by a BSD-style -// license that can be found in the LICENSE file. - -// +build go1.5 - -package oracle - -import ( - "fmt" - "go/ast" - "go/token" - "go/types" - "sort" - - "github.com/visualfc/gotools/oracle/oracle/serial" - "golang.org/x/tools/go/ast/astutil" - "golang.org/x/tools/go/loader" - "golang.org/x/tools/go/ssa" - "golang.org/x/tools/go/ssa/ssautil" -) - -var builtinErrorType = types.Universe.Lookup("error").Type() - -// whicherrs takes an position to an error and tries to find all types, constants -// and global value which a given error can point to and which can be checked from the -// scope where the error lives. -// In short, it returns a list of things that can be checked against in order to handle -// an error properly. -// -// TODO(dmorsing): figure out if fields in errors like *os.PathError.Err -// can be queried recursively somehow. -func whicherrs(q *Query) error { - lconf := loader.Config{Build: q.Build} - - if err := setPTAScope(&lconf, q.Scope); err != nil { - return err - } - - // Load/parse/type-check the program. - lprog, err := lconf.Load() - if err != nil { - return err - } - q.Fset = lprog.Fset - - qpos, err := parseQueryPos(lprog, q.Pos, true) // needs exact pos - if err != nil { - return err - } - - prog := ssautil.CreateProgram(lprog, ssa.GlobalDebug) - - ptaConfig, err := setupPTA(prog, lprog, q.PTALog, q.Reflection) - if err != nil { - return err - } - - path, action := findInterestingNode(qpos.info, qpos.path) - if action != actionExpr { - return fmt.Errorf("whicherrs wants an expression; got %s", - astutil.NodeDescription(qpos.path[0])) - } - var expr ast.Expr - var obj types.Object - switch n := path[0].(type) { - case *ast.ValueSpec: - // ambiguous ValueSpec containing multiple names - return fmt.Errorf("multiple value specification") - case *ast.Ident: - obj = qpos.info.ObjectOf(n) - expr = n - case ast.Expr: - expr = n - default: - return fmt.Errorf("unexpected AST for expr: %T", n) - } - - typ := qpos.info.TypeOf(expr) - if !types.Identical(typ, builtinErrorType) { - return fmt.Errorf("selection is not an expression of type 'error'") - } - // Determine the ssa.Value for the expression. - var value ssa.Value - if obj != nil { - // def/ref of func/var object - value, _, err = ssaValueForIdent(prog, qpos.info, obj, path) - } else { - value, _, err = ssaValueForExpr(prog, qpos.info, path) - } - if err != nil { - return err // e.g. trivially dead code - } - - // Defer SSA construction till after errors are reported. - prog.Build() - - globals := findVisibleErrs(prog, qpos) - constants := findVisibleConsts(prog, qpos) - - res := &whicherrsResult{ - qpos: qpos, - errpos: expr.Pos(), - } - - // TODO(adonovan): the following code is heavily duplicated - // w.r.t. "pointsto". Refactor? - - // Find the instruction which initialized the - // global error. If more than one instruction has stored to the global - // remove the global from the set of values that we want to query. - allFuncs := ssautil.AllFunctions(prog) - for fn := range allFuncs { - for _, b := range fn.Blocks { - for _, instr := range b.Instrs { - store, ok := instr.(*ssa.Store) - if !ok { - continue - } - gval, ok := store.Addr.(*ssa.Global) - if !ok { - continue - } - gbl, ok := globals[gval] - if !ok { - continue - } - // we already found a store to this global - // The normal error define is just one store in the init - // so we just remove this global from the set we want to query - if gbl != nil { - delete(globals, gval) - } - globals[gval] = store.Val - } - } - } - - ptaConfig.AddQuery(value) - for _, v := range globals { - ptaConfig.AddQuery(v) - } - - ptares := ptrAnalysis(ptaConfig) - valueptr := ptares.Queries[value] - for g, v := range globals { - ptr, ok := ptares.Queries[v] - if !ok { - continue - } - if !ptr.MayAlias(valueptr) { - continue - } - res.globals = append(res.globals, g) - } - pts := valueptr.PointsTo() - dedup := make(map[*ssa.NamedConst]bool) - for _, label := range pts.Labels() { - // These values are either MakeInterfaces or reflect - // generated interfaces. For the purposes of this - // analysis, we don't care about reflect generated ones - makeiface, ok := label.Value().(*ssa.MakeInterface) - if !ok { - continue - } - constval, ok := makeiface.X.(*ssa.Const) - if !ok { - continue - } - c := constants[*constval] - if c != nil && !dedup[c] { - dedup[c] = true - res.consts = append(res.consts, c) - } - } - concs := pts.DynamicTypes() - concs.Iterate(func(conc types.Type, _ interface{}) { - // go/types is a bit annoying here. - // We want to find all the types that we can - // typeswitch or assert to. This means finding out - // if the type pointed to can be seen by us. - // - // For the purposes of this analysis, the type is always - // either a Named type or a pointer to one. - // There are cases where error can be implemented - // by unnamed types, but in that case, we can't assert to - // it, so we don't care about it for this analysis. - var name *types.TypeName - switch t := conc.(type) { - case *types.Pointer: - named, ok := t.Elem().(*types.Named) - if !ok { - return - } - name = named.Obj() - case *types.Named: - name = t.Obj() - default: - return - } - if !isAccessibleFrom(name, qpos.info.Pkg) { - return - } - res.types = append(res.types, &errorType{conc, name}) - }) - sort.Sort(membersByPosAndString(res.globals)) - sort.Sort(membersByPosAndString(res.consts)) - sort.Sort(sorterrorType(res.types)) - - q.result = res - return nil -} - -// findVisibleErrs returns a mapping from each package-level variable of type "error" to nil. -func findVisibleErrs(prog *ssa.Program, qpos *queryPos) map[*ssa.Global]ssa.Value { - globals := make(map[*ssa.Global]ssa.Value) - for _, pkg := range prog.AllPackages() { - for _, mem := range pkg.Members { - gbl, ok := mem.(*ssa.Global) - if !ok { - continue - } - gbltype := gbl.Type() - // globals are always pointers - if !types.Identical(deref(gbltype), builtinErrorType) { - continue - } - if !isAccessibleFrom(gbl.Object(), qpos.info.Pkg) { - continue - } - globals[gbl] = nil - } - } - return globals -} - -// findVisibleConsts returns a mapping from each package-level constant assignable to type "error", to nil. -func findVisibleConsts(prog *ssa.Program, qpos *queryPos) map[ssa.Const]*ssa.NamedConst { - constants := make(map[ssa.Const]*ssa.NamedConst) - for _, pkg := range prog.AllPackages() { - for _, mem := range pkg.Members { - obj, ok := mem.(*ssa.NamedConst) - if !ok { - continue - } - consttype := obj.Type() - if !types.AssignableTo(consttype, builtinErrorType) { - continue - } - if !isAccessibleFrom(obj.Object(), qpos.info.Pkg) { - continue - } - constants[*obj.Value] = obj - } - } - - return constants -} - -type membersByPosAndString []ssa.Member - -func (a membersByPosAndString) Len() int { return len(a) } -func (a membersByPosAndString) Less(i, j int) bool { - cmp := a[i].Pos() - a[j].Pos() - return cmp < 0 || cmp == 0 && a[i].String() < a[j].String() -} -func (a membersByPosAndString) Swap(i, j int) { a[i], a[j] = a[j], a[i] } - -type sorterrorType []*errorType - -func (a sorterrorType) Len() int { return len(a) } -func (a sorterrorType) Less(i, j int) bool { - cmp := a[i].obj.Pos() - a[j].obj.Pos() - return cmp < 0 || cmp == 0 && a[i].typ.String() < a[j].typ.String() -} -func (a sorterrorType) Swap(i, j int) { a[i], a[j] = a[j], a[i] } - -type errorType struct { - typ types.Type // concrete type N or *N that implements error - obj *types.TypeName // the named type N -} - -type whicherrsResult struct { - qpos *queryPos - errpos token.Pos - globals []ssa.Member - consts []ssa.Member - types []*errorType -} - -func (r *whicherrsResult) display(printf printfFunc) { - if len(r.globals) > 0 { - printf(r.qpos, "this error may point to these globals:") - for _, g := range r.globals { - printf(g.Pos(), "\t%s", g.RelString(r.qpos.info.Pkg)) - } - } - if len(r.consts) > 0 { - printf(r.qpos, "this error may contain these constants:") - for _, c := range r.consts { - printf(c.Pos(), "\t%s", c.RelString(r.qpos.info.Pkg)) - } - } - if len(r.types) > 0 { - printf(r.qpos, "this error may contain these dynamic types:") - for _, t := range r.types { - printf(t.obj.Pos(), "\t%s", r.qpos.typeString(t.typ)) - } - } -} - -func (r *whicherrsResult) toSerial(res *serial.Result, fset *token.FileSet) { - we := &serial.WhichErrs{} - we.ErrPos = fset.Position(r.errpos).String() - for _, g := range r.globals { - we.Globals = append(we.Globals, fset.Position(g.Pos()).String()) - } - for _, c := range r.consts { - we.Constants = append(we.Constants, fset.Position(c.Pos()).String()) - } - for _, t := range r.types { - var et serial.WhichErrsType - et.Type = r.qpos.typeString(t.typ) - et.Position = fset.Position(t.obj.Pos()).String() - we.Types = append(we.Types, et) - } - res.WhichErrs = we -} diff --git a/vendor/github.com/visualfc/gotools/pkgs/pkgs.go b/vendor/github.com/visualfc/gotools/pkgs/pkgs.go deleted file mode 100644 index 8bd4a23..0000000 --- a/vendor/github.com/visualfc/gotools/pkgs/pkgs.go +++ /dev/null @@ -1,379 +0,0 @@ -// Copyright 2011-2015 visualfc . All rights reserved. -// Use of this source code is governed by a BSD-style -// license that can be found in the LICENSE file. - -package pkgs - -import ( - "encoding/json" - "fmt" - "go/build" - "os" - "path/filepath" - "runtime" - "sort" - "strings" - "sync" - - "github.com/visualfc/gotools/command" - "github.com/visualfc/gotools/goapi" -) - -var Command = &command.Command{ - Run: runPkgs, - UsageLine: "pkgs [-list|-json] [-std]", - Short: "print go package", - Long: `print go package.`, -} - -var ( - pkgsList bool - pkgsJson bool - pkgsFind string - pkgsStd bool - pkgsPkgOnly bool - pkgsSkipGoroot bool -) - -func init() { - Command.Flag.BoolVar(&pkgsList, "list", false, "list all package") - Command.Flag.BoolVar(&pkgsJson, "json", false, "json format") - Command.Flag.BoolVar(&pkgsStd, "std", false, "std library") - Command.Flag.BoolVar(&pkgsPkgOnly, "pkg", false, "pkg only") - Command.Flag.BoolVar(&pkgsSkipGoroot, "skip_goroot", false, "skip goroot") - Command.Flag.StringVar(&pkgsFind, "find", "", "find package by name") -} - -func runPkgs(cmd *command.Command, args []string) error { - runtime.GOMAXPROCS(runtime.NumCPU()) - if len(args) != 0 { - cmd.Usage() - return os.ErrInvalid - } - //pkgIndexOnce.Do(loadPkgsList) - var pp PathPkgsIndex - pp.LoadIndex() - pp.Sort() - if pkgsList { - for _, pi := range pp.indexs { - for _, pkg := range pi.pkgs { - if pkgsPkgOnly && pkg.IsCommand() { - continue - } - if pkgsJson { - var p GoPackage - p.copyBuild(pkg) - b, err := json.MarshalIndent(&p, "", "\t") - if err == nil { - cmd.Stdout.Write(b) - cmd.Stdout.Write([]byte{'\n'}) - } - } else { - cmd.Println(pkg.ImportPath) - } - } - } - } else if pkgsFind != "" { - for _, pi := range pp.indexs { - for _, pkg := range pi.pkgs { - if pkg.Name == pkgsFind { - if pkgsPkgOnly && pkg.IsCommand() { - continue - } - if pkgsJson { - var p GoPackage - p.copyBuild(pkg) - b, err := json.MarshalIndent(p, "", "\t") - if err == nil { - cmd.Stdout.Write(b) - cmd.Stdout.Write([]byte{'\n'}) - } - } else { - cmd.Println(pkg.Name) - } - break - } - } - } - } - return nil -} - -// A Package describes a single package found in a directory. -type GoPackage struct { - // Note: These fields are part of the go command's public API. - // See list.go. It is okay to add fields, but not to change or - // remove existing ones. Keep in sync with list.go - Dir string `json:",omitempty"` // directory containing package sources - ImportPath string `json:",omitempty"` // import path of package in dir - Name string `json:",omitempty"` // package name - Doc string `json:",omitempty"` // package documentation string - Target string `json:",omitempty"` // install path - Goroot bool `json:",omitempty"` // is this package found in the Go root? - Standard bool `json:",omitempty"` // is this package part of the standard Go library? - Stale bool `json:",omitempty"` // would 'go install' do anything for this package? - Root string `json:",omitempty"` // Go root or Go path dir containing this package - ConflictDir string `json:",omitempty"` // Dir is hidden by this other directory - - // Source files - GoFiles []string `json:",omitempty"` // .go source files (excluding CgoFiles, TestGoFiles, XTestGoFiles) - CgoFiles []string `json:",omitempty"` // .go sources files that import "C" - IgnoredGoFiles []string `json:",omitempty"` // .go sources ignored due to build constraints - CFiles []string `json:",omitempty"` // .c source files - CXXFiles []string `json:",omitempty"` // .cc, .cpp and .cxx source files - MFiles []string `json:",omitempty"` // .m source files - HFiles []string `json:",omitempty"` // .h, .hh, .hpp and .hxx source files - SFiles []string `json:",omitempty"` // .s source files - SwigFiles []string `json:",omitempty"` // .swig files - SwigCXXFiles []string `json:",omitempty"` // .swigcxx files - SysoFiles []string `json:",omitempty"` // .syso system object files added to package - - // Cgo directives - CgoCFLAGS []string `json:",omitempty"` // cgo: flags for C compiler - CgoCPPFLAGS []string `json:",omitempty"` // cgo: flags for C preprocessor - CgoCXXFLAGS []string `json:",omitempty"` // cgo: flags for C++ compiler - CgoLDFLAGS []string `json:",omitempty"` // cgo: flags for linker - CgoPkgConfig []string `json:",omitempty"` // cgo: pkg-config names - - // Dependency information - Imports []string `json:",omitempty"` // import paths used by this package - Deps []string `json:",omitempty"` // all (recursively) imported dependencies - - // Error information - Incomplete bool `json:",omitempty"` // was there an error loading this package or dependencies? - - // Test information - TestGoFiles []string `json:",omitempty"` // _test.go files in package - TestImports []string `json:",omitempty"` // imports from TestGoFiles - XTestGoFiles []string `json:",omitempty"` // _test.go files outside package - XTestImports []string `json:",omitempty"` // imports from XTestGoFiles - - // Unexported fields are not part of the public API. - build *build.Package - pkgdir string // overrides build.PkgDir - imports []*goapi.Package - deps []*goapi.Package - gofiles []string // GoFiles+CgoFiles+TestGoFiles+XTestGoFiles files, absolute paths - sfiles []string - allgofiles []string // gofiles + IgnoredGoFiles, absolute paths - target string // installed file for this package (may be executable) - fake bool // synthesized package - forceBuild bool // this package must be rebuilt - forceLibrary bool // this package is a library (even if named "main") - cmdline bool // defined by files listed on command line - local bool // imported via local path (./ or ../) - localPrefix string // interpret ./ and ../ imports relative to this prefix - exeName string // desired name for temporary executable - coverMode string // preprocess Go source files with the coverage tool in this mode - coverVars map[string]*CoverVar // variables created by coverage analysis - omitDWARF bool // tell linker not to write DWARF information -} - -// CoverVar holds the name of the generated coverage variables targeting the named file. -type CoverVar struct { - File string // local file name - Var string // name of count struct -} - -func (p *GoPackage) copyBuild(pp *build.Package) { - p.build = pp - - p.Dir = pp.Dir - p.ImportPath = pp.ImportPath - p.Name = pp.Name - p.Doc = pp.Doc - p.Root = pp.Root - p.ConflictDir = pp.ConflictDir - // TODO? Target - p.Goroot = pp.Goroot - p.Standard = p.Goroot && p.ImportPath != "" && !strings.Contains(p.ImportPath, ".") - p.GoFiles = pp.GoFiles - p.CgoFiles = pp.CgoFiles - p.IgnoredGoFiles = pp.IgnoredGoFiles - p.CFiles = pp.CFiles - p.CXXFiles = pp.CXXFiles - p.MFiles = pp.MFiles - p.HFiles = pp.HFiles - p.SFiles = pp.SFiles - p.SwigFiles = pp.SwigFiles - p.SwigCXXFiles = pp.SwigCXXFiles - p.SysoFiles = pp.SysoFiles - p.CgoCFLAGS = pp.CgoCFLAGS - p.CgoCPPFLAGS = pp.CgoCPPFLAGS - p.CgoCXXFLAGS = pp.CgoCXXFLAGS - p.CgoLDFLAGS = pp.CgoLDFLAGS - p.CgoPkgConfig = pp.CgoPkgConfig - p.Imports = pp.Imports - p.TestGoFiles = pp.TestGoFiles - p.TestImports = pp.TestImports - p.XTestGoFiles = pp.XTestGoFiles - p.XTestImports = pp.XTestImports -} - -type PathPkgsIndex struct { - indexs []*PkgsIndex -} - -func (p *PathPkgsIndex) LoadIndex() { - var wg sync.WaitGroup - var context = build.Default - if pkgsStd { - context.GOPATH = "" - } - var srcDirs []string - goroot := context.GOROOT - gopath := context.GOPATH - context.GOPATH = "" - - if !pkgsSkipGoroot { - //go1.4 go/src/ - //go1.3 go/src/pkg; go/src/cmd - _, err := os.Stat(filepath.Join(goroot, "src/pkg/runtime")) - if err == nil { - for _, v := range context.SrcDirs() { - if strings.HasSuffix(v, "pkg") { - srcDirs = append(srcDirs, v[:len(v)-3]+"cmd") - } - srcDirs = append(srcDirs, v) - } - } else { - srcDirs = append(srcDirs, filepath.Join(goroot, "src")) - } - } - - context.GOPATH = gopath - context.GOROOT = "" - for _, v := range context.SrcDirs() { - srcDirs = append(srcDirs, v) - } - context.GOROOT = goroot - for _, path := range srcDirs { - pi := &PkgsIndex{} - p.indexs = append(p.indexs, pi) - pkgsGate.enter() - f, err := os.Open(path) - if err != nil { - pkgsGate.leave() - fmt.Fprint(os.Stderr, err) - continue - } - children, err := f.Readdir(-1) - f.Close() - pkgsGate.leave() - if err != nil { - fmt.Fprint(os.Stderr, err) - continue - } - for _, child := range children { - if child.IsDir() { - wg.Add(1) - go func(path, name string) { - defer wg.Done() - pi.loadPkgsPath(&wg, path, name) - }(path, child.Name()) - } - } - } - wg.Wait() -} - -func (p *PathPkgsIndex) Sort() { - for _, v := range p.indexs { - v.sort() - } -} - -type PkgsIndex struct { - sync.Mutex - pkgs []*build.Package -} - -func (p *PkgsIndex) sort() { - sort.Sort(PkgSlice(p.pkgs)) -} - -type PkgSlice []*build.Package - -func (p PkgSlice) Len() int { - return len([]*build.Package(p)) -} - -func (p PkgSlice) Less(i, j int) bool { - if p[i].IsCommand() && !p[j].IsCommand() { - return true - } else if !p[i].IsCommand() && p[j].IsCommand() { - return false - } - return p[i].ImportPath < p[j].ImportPath -} - -func (p PkgSlice) Swap(i, j int) { - p[i], p[j] = p[j], p[i] -} - -// pkgsgate protects the OS & filesystem from too much concurrency. -// Too much disk I/O -> too many threads -> swapping and bad scheduling. -// gate is a semaphore for limiting concurrency. -type gate chan struct{} - -func (g gate) enter() { g <- struct{}{} } -func (g gate) leave() { <-g } - -var pkgsGate = make(gate, 8) - -func (p *PkgsIndex) loadPkgsPath(wg *sync.WaitGroup, root, pkgrelpath string) { - importpath := filepath.ToSlash(pkgrelpath) - dir := filepath.Join(root, importpath) - - pkgsGate.enter() - defer pkgsGate.leave() - pkgDir, err := os.Open(dir) - if err != nil { - return - } - children, err := pkgDir.Readdir(-1) - pkgDir.Close() - if err != nil { - return - } - // hasGo tracks whether a directory actually appears to be a - // Go source code directory. If $GOPATH == $HOME, and - // $HOME/src has lots of other large non-Go projects in it, - // then the calls to importPathToName below can be expensive. - hasGo := false - for _, child := range children { - name := child.Name() - if name == "" { - continue - } - if c := name[0]; c == '.' || ('0' <= c && c <= '9') { - continue - } - if strings.HasSuffix(name, ".go") { - hasGo = true - } - if child.IsDir() { - if strings.HasPrefix(name, ".") || strings.HasPrefix(name, "_") || name == "testdata" { - continue - } - wg.Add(1) - go func(root, name string) { - defer wg.Done() - p.loadPkgsPath(wg, root, name) - }(root, filepath.Join(importpath, name)) - } - } - if hasGo { - buildPkg, err := build.ImportDir(dir, 0) - if err == nil { - if buildPkg.ImportPath == "." { - buildPkg.ImportPath = filepath.ToSlash(pkgrelpath) - buildPkg.Root = root - buildPkg.Goroot = true - } - p.Lock() - p.pkgs = append(p.pkgs, buildPkg) - p.Unlock() - } - } -} diff --git a/vendor/github.com/visualfc/gotools/pkgutil/pkgutil.go b/vendor/github.com/visualfc/gotools/pkgutil/pkgutil.go deleted file mode 100644 index e5f7a39..0000000 --- a/vendor/github.com/visualfc/gotools/pkgutil/pkgutil.go +++ /dev/null @@ -1,233 +0,0 @@ -package pkgutil - -import ( - "go/build" - "io/ioutil" - "log" - "os" - "path/filepath" - "regexp" - "strings" -) - -//var go15VendorExperiment = os.Getenv("GO15VENDOREXPERIMENT") == "1" - -func IsVendorExperiment() bool { - return true -} - -// matchPattern(pattern)(name) reports whether -// name matches pattern. Pattern is a limited glob -// pattern in which '...' means 'any string' and there -// is no other special syntax. -func matchPattern(pattern string) func(name string) bool { - re := regexp.QuoteMeta(pattern) - re = strings.Replace(re, `\.\.\.`, `.*`, -1) - // Special case: foo/... matches foo too. - if strings.HasSuffix(re, `/.*`) { - re = re[:len(re)-len(`/.*`)] + `(/.*)?` - } - reg := regexp.MustCompile(`^` + re + `$`) - return func(name string) bool { - return reg.MatchString(name) - } -} - -// hasPathPrefix reports whether the path s begins with the -// elements in prefix. -func hasPathPrefix(s, prefix string) bool { - switch { - default: - return false - case len(s) == len(prefix): - return s == prefix - case len(s) > len(prefix): - if prefix != "" && prefix[len(prefix)-1] == '/' { - return strings.HasPrefix(s, prefix) - } - return s[len(prefix)] == '/' && s[:len(prefix)] == prefix - } -} - -// hasFilePathPrefix reports whether the filesystem path s begins with the -// elements in prefix. -func hasFilePathPrefix(s, prefix string) bool { - sv := strings.ToUpper(filepath.VolumeName(s)) - pv := strings.ToUpper(filepath.VolumeName(prefix)) - s = s[len(sv):] - prefix = prefix[len(pv):] - switch { - default: - return false - case sv != pv: - return false - case len(s) == len(prefix): - return s == prefix - case len(s) > len(prefix): - if prefix != "" && prefix[len(prefix)-1] == filepath.Separator { - return strings.HasPrefix(s, prefix) - } - return s[len(prefix)] == filepath.Separator && s[:len(prefix)] == prefix - } -} - -// treeCanMatchPattern(pattern)(name) reports whether -// name or children of name can possibly match pattern. -// Pattern is the same limited glob accepted by matchPattern. -func treeCanMatchPattern(pattern string) func(name string) bool { - wildCard := false - if i := strings.Index(pattern, "..."); i >= 0 { - wildCard = true - pattern = pattern[:i] - } - return func(name string) bool { - return len(name) <= len(pattern) && hasPathPrefix(pattern, name) || - wildCard && strings.HasPrefix(name, pattern) - } -} - -var isDirCache = map[string]bool{} - -func isDir(path string) bool { - result, ok := isDirCache[path] - if ok { - return result - } - - fi, err := os.Stat(path) - result = err == nil && fi.IsDir() - isDirCache[path] = result - return result -} - -type Package struct { - Root string - Dir string - ImportPath string -} - -func ImportFile(fileName string) *Package { - return ImportDir(filepath.Dir(fileName)) -} - -func ImportDir(dir string) *Package { - pkg, err := build.ImportDir(dir, build.FindOnly) - if err != nil { - return &Package{"", dir, ""} - } - return &Package{pkg.Root, pkg.Dir, pkg.ImportPath} -} - -// expandPath returns the symlink-expanded form of path. -func expandPath(p string) string { - x, err := filepath.EvalSymlinks(p) - if err == nil { - return x - } - return p -} - -// vendoredImportPath returns the expansion of path when it appears in parent. -// If parent is x/y/z, then path might expand to x/y/z/vendor/path, x/y/vendor/path, -// x/vendor/path, vendor/path, or else stay path if none of those exist. -// vendoredImportPath returns the expanded path or, if no expansion is found, the original. -func VendoredImportPath(parent *Package, path string) (found string) { - if parent == nil || parent.Root == "" { - return path - } - - dir := filepath.Clean(parent.Dir) - root := filepath.Join(parent.Root, "src") - if !hasFilePathPrefix(dir, root) { - // Look for symlinks before reporting error. - dir = expandPath(dir) - root = expandPath(root) - } - if !hasFilePathPrefix(dir, root) || len(dir) <= len(root) || dir[len(root)] != filepath.Separator { - log.Println("invalid vendoredImportPath: dir=%q root=%q separator=%q", dir, root, string(filepath.Separator)) - return "" - } - - vpath := "vendor/" + path - for i := len(dir); i >= len(root); i-- { - if i < len(dir) && dir[i] != filepath.Separator { - continue - } - // Note: checking for the vendor directory before checking - // for the vendor/path directory helps us hit the - // isDir cache more often. It also helps us prepare a more useful - // list of places we looked, to report when an import is not found. - if !isDir(filepath.Join(dir[:i], "vendor")) { - continue - } - targ := filepath.Join(dir[:i], vpath) - if isDir(targ) && hasGoFiles(targ) { - importPath := parent.ImportPath - if importPath == "command-line-arguments" { - // If parent.ImportPath is 'command-line-arguments'. - // set to relative directory to root (also chopped root directory) - importPath = dir[len(root)+1:] - } - // We started with parent's dir c:\gopath\src\foo\bar\baz\quux\xyzzy. - // We know the import path for parent's dir. - // We chopped off some number of path elements and - // added vendor\path to produce c:\gopath\src\foo\bar\baz\vendor\path. - // Now we want to know the import path for that directory. - // Construct it by chopping the same number of path elements - // (actually the same number of bytes) from parent's import path - // and then append /vendor/path. - chopped := len(dir) - i - if chopped == len(importPath)+1 { - // We walked up from c:\gopath\src\foo\bar - // and found c:\gopath\src\vendor\path. - // We chopped \foo\bar (length 8) but the import path is "foo/bar" (length 7). - // Use "vendor/path" without any prefix. - return vpath - } - return importPath[:len(importPath)-chopped] + "/" + vpath - } - } - return path -} - -// hasGoFiles reports whether dir contains any files with names ending in .go. -// For a vendor check we must exclude directories that contain no .go files. -// Otherwise it is not possible to vendor just a/b/c and still import the -// non-vendored a/b. See golang.org/issue/13832. -func hasGoFiles(dir string) bool { - fis, _ := ioutil.ReadDir(dir) - for _, fi := range fis { - if !fi.IsDir() && strings.HasSuffix(fi.Name(), ".go") { - return true - } - } - return false -} - -// findVendor looks for the last non-terminating "vendor" path element in the given import path. -// If there isn't one, findVendor returns ok=false. -// Otherwise, findVendor returns ok=true and the index of the "vendor". -// -// Note that terminating "vendor" elements don't count: "x/vendor" is its own package, -// not the vendored copy of an import "" (the empty import path). -// This will allow people to have packages or commands named vendor. -// This may help reduce breakage, or it may just be confusing. We'll see. -func findVendor(path string) (index int, ok bool) { - // Two cases, depending on internal at start of string or not. - // The order matters: we must return the index of the final element, - // because the final one is where the effective import path starts. - switch { - case strings.Contains(path, "/vendor/"): - return strings.LastIndex(path, "/vendor/") + 1, true - case strings.HasPrefix(path, "vendor/"): - return 0, true - } - return 0, false -} - -func VendorPathToImportPath(path string) string { - if i, ok := findVendor(path); ok { - return path[i+len("vendor/"):] - } - return path -} diff --git a/vendor/github.com/visualfc/gotools/runcmd/runcmd.go b/vendor/github.com/visualfc/gotools/runcmd/runcmd.go deleted file mode 100644 index 6560d62..0000000 --- a/vendor/github.com/visualfc/gotools/runcmd/runcmd.go +++ /dev/null @@ -1,87 +0,0 @@ -// Copyright 2011-2015 visualfc . All rights reserved. -// Use of this source code is governed by a BSD-style -// license that can be found in the LICENSE file. - -package runcmd - -import ( - "fmt" - "os" - "os/exec" - "strings" - - "github.com/visualfc/gotools/command" -) - -var Command = &command.Command{ - Run: runCmd, - UsageLine: "runcmd [-w work_path] [arguments...]", - Short: "run program", - Long: `run program and arguments`, -} - -var execWorkPath string -var execWaitEnter bool - -func init() { - Command.Flag.StringVar(&execWorkPath, "w", "", "work path") - Command.Flag.BoolVar(&execWaitEnter, "e", true, "wait enter and continue") -} - -func runCmd(cmd *command.Command, args []string) error { - if len(args) == 0 { - cmd.Usage() - return os.ErrInvalid - } - if execWorkPath == "" { - var err error - execWorkPath, err = os.Getwd() - if err != nil { - fmt.Fprintf(os.Stderr, "liteide_stub exec: os.Getwd() false\n") - command.SetExitStatus(3) - command.Exit() - return err - } - } - fileName := args[0] - - filePath, err := exec.LookPath(fileName) - if err != nil { - filePath, err = exec.LookPath("./" + fileName) - } - if err != nil { - fmt.Fprintf(os.Stderr, "liteide_stub exec: file %s not found\n", fileName) - command.SetExitStatus(3) - command.Exit() - } - - fmt.Println("Starting Process", filePath, strings.Join(args[1:], " "), "...") - - command := exec.Command(filePath, args[1:]...) - command.Dir = execWorkPath - command.Stdin = os.Stdin - command.Stdout = os.Stdout - command.Stderr = os.Stderr - - err = command.Run() - - if err != nil { - fmt.Println("\nEnd Process", err) - } else { - fmt.Println("\nEnd Process", "exit status 0") - } - - exitWaitEnter() - return nil -} - -func exitWaitEnter() { - if !execWaitEnter { - return - } - fmt.Println("\nPress enter key to continue") - var s = [256]byte{} - os.Stdin.Read(s[:]) - command.SetExitStatus(0) - command.Exit() -} diff --git a/vendor/github.com/visualfc/gotools/stdlib/go13.go b/vendor/github.com/visualfc/gotools/stdlib/go13.go deleted file mode 100644 index d81ad91..0000000 --- a/vendor/github.com/visualfc/gotools/stdlib/go13.go +++ /dev/null @@ -1,19 +0,0 @@ -// +build !go1.4 - -package stdlib - -import ( - "go/build" - "os" - "path/filepath" -) - -func ImportStdPkg(context *build.Context, path string, mode build.ImportMode) (*build.Package, error) { - realpath := filepath.Join(context.GOROOT, "src", "pkg", path) - if _, err := os.Stat(realpath); err != nil { - realpath = filepath.Join(context.GOROOT, "src", path) - } - pkg, err := context.ImportDir(realpath, 0) - pkg.ImportPath = path - return pkg, err -} diff --git a/vendor/github.com/visualfc/gotools/stdlib/go14.go b/vendor/github.com/visualfc/gotools/stdlib/go14.go deleted file mode 100644 index 9bd79d2..0000000 --- a/vendor/github.com/visualfc/gotools/stdlib/go14.go +++ /dev/null @@ -1,19 +0,0 @@ -// +build go1.4 - -package stdlib - -import ( - "go/build" - "os" - "path/filepath" -) - -func ImportStdPkg(context *build.Context, path string, mode build.ImportMode) (*build.Package, error) { - realpath := filepath.Join(context.GOROOT, "src", path) - if _, err := os.Stat(realpath); err != nil { - realpath = filepath.Join(context.GOROOT, "src/pkg", path) - } - pkg, err := context.ImportDir(realpath, 0) - pkg.ImportPath = path - return pkg, err -} diff --git a/vendor/github.com/visualfc/gotools/stdlib/mkpkglist.go b/vendor/github.com/visualfc/gotools/stdlib/mkpkglist.go deleted file mode 100644 index efe7a92..0000000 --- a/vendor/github.com/visualfc/gotools/stdlib/mkpkglist.go +++ /dev/null @@ -1,173 +0,0 @@ -// +build ignore - -package main - -import ( - "fmt" - "strings" -) - -var pkgList = ` -archive/tar -archive/zip -bufio -bytes -compress/bzip2 -compress/flate -compress/gzip -compress/lzw -compress/zlib -container/heap -container/list -container/ring -context -crypto -crypto/aes -crypto/cipher -crypto/des -crypto/dsa -crypto/ecdsa -crypto/elliptic -crypto/hmac -crypto/md5 -crypto/rand -crypto/rc4 -crypto/rsa -crypto/sha1 -crypto/sha256 -crypto/sha512 -crypto/subtle -crypto/tls -crypto/x509 -crypto/x509/pkix -database/sql -database/sql/driver -debug/dwarf -debug/elf -debug/gosym -debug/macho -debug/pe -debug/plan9obj -encoding -encoding/ascii85 -encoding/asn1 -encoding/base32 -encoding/base64 -encoding/binary -encoding/csv -encoding/gob -encoding/hex -encoding/json -encoding/pem -encoding/xml -errors -expvar -flag -fmt -go/ast -go/build -go/constant -go/doc -go/format -go/importer -go/parser -go/printer -go/scanner -go/token -go/types -hash -hash/adler32 -hash/crc32 -hash/crc64 -hash/fnv -html -html/template -image -image/color -image/color/palette -image/draw -image/gif -image/jpeg -image/png -index/suffixarray -io -io/ioutil -log -log/syslog -math -math/big -math/bits -math/cmplx -math/rand -mime -mime/multipart -mime/quotedprintable -net -net/http -net/http/cgi -net/http/cookiejar -net/http/fcgi -net/http/httptest -net/http/httptrace -net/http/httputil -net/http/pprof -net/mail -net/rpc -net/rpc/jsonrpc -net/smtp -net/textproto -net/url -os -os/exec -os/signal -os/user -path -path/filepath -plugin -reflect -regexp -regexp/syntax -runtime -runtime/cgo -runtime/debug -runtime/pprof -runtime/race -runtime/trace -sort -strconv -strings -sync -sync/atomic -syscall -testing -testing/iotest -testing/quick -text/scanner -text/tabwriter -text/template -text/template/parse -time -unicode -unicode/utf16 -unicode/utf8 -unsafe -` - -func main() { - //fmt.Println(pkgList) - var list []string - index := 0 - for _, v := range strings.Split(pkgList, "\n") { - v = strings.TrimSpace(v) - if v == "" { - continue - } - v = "\"" + v + "\"" - if index%4 == 0 && index != 0 { - v = "\n" + v - } - list = append(list, v) - index++ - } - fmt.Println(strings.Join(list, ",")) -} diff --git a/vendor/github.com/visualfc/gotools/stdlib/mkstdlib.go b/vendor/github.com/visualfc/gotools/stdlib/mkstdlib.go deleted file mode 100644 index 2191f8d..0000000 --- a/vendor/github.com/visualfc/gotools/stdlib/mkstdlib.go +++ /dev/null @@ -1,99 +0,0 @@ -// +build ignore - -// mkstdlib generates the zstdlib.go file, containing the Go standard -// library API symbols. It's baked into the binary to avoid scanning -// GOPATH in the common case. -package main - -import ( - "bufio" - "bytes" - "fmt" - "go/format" - "io" - "io/ioutil" - "log" - "os" - "path" - "path/filepath" - "regexp" - "sort" - "strings" -) - -func mustOpen(name string) io.Reader { - f, err := os.Open(name) - if err != nil { - log.Fatal(err) - } - return f -} - -func api(base string) string { - return filepath.Join(os.Getenv("GOROOT"), "api", base) -} - -var sym = regexp.MustCompile(`^pkg (\S+).*?, (?:var|func|type|const) ([A-Z]\w*)`) - -func main() { - var buf bytes.Buffer - outf := func(format string, args ...interface{}) { - fmt.Fprintf(&buf, format, args...) - } - outf("// AUTO-GENERATED BY mkstdlib.go\n\n") - outf("package stdlib\n") - outf("var Symbols = map[string]string{\n") - f := io.MultiReader( - mustOpen(api("go1.txt")), - mustOpen(api("go1.1.txt")), - mustOpen(api("go1.2.txt")), - mustOpen(api("go1.3.txt")), - mustOpen(api("go1.4.txt")), - mustOpen(api("go1.5.txt")), - mustOpen(api("go1.6.txt")), - mustOpen(api("go1.7.txt")), - mustOpen(api("go1.8.txt")), - mustOpen(api("go1.9.txt")), - ) - sc := bufio.NewScanner(f) - fullImport := map[string]string{} // "zip.NewReader" => "archive/zip" - ambiguous := map[string]bool{} - var keys []string - for sc.Scan() { - l := sc.Text() - has := func(v string) bool { return strings.Contains(l, v) } - if has("struct, ") || has("interface, ") || has(", method (") { - continue - } - if m := sym.FindStringSubmatch(l); m != nil { - full := m[1] - key := path.Base(full) + "." + m[2] - if exist, ok := fullImport[key]; ok { - if exist != full { - ambiguous[key] = true - } - } else { - fullImport[key] = full - keys = append(keys, key) - } - } - } - if err := sc.Err(); err != nil { - log.Fatal(err) - } - sort.Strings(keys) - for _, key := range keys { - if ambiguous[key] { - outf("\t// %q is ambiguous\n", key) - } else { - outf("\t%q: %q,\n", key, fullImport[key]) - } - } - outf("}\n") - fmtbuf, err := format.Source(buf.Bytes()) - if err != nil { - log.Fatal(err) - } - //os.Stdout.Write(fmtbuf) - ioutil.WriteFile("./zstdlib.go", fmtbuf, 0777) -} diff --git a/vendor/github.com/visualfc/gotools/stdlib/pkglist.go b/vendor/github.com/visualfc/gotools/stdlib/pkglist.go deleted file mode 100644 index da5e579..0000000 --- a/vendor/github.com/visualfc/gotools/stdlib/pkglist.go +++ /dev/null @@ -1,49 +0,0 @@ -package stdlib - -var Packages = []string{ - "archive/tar", "archive/zip", "bufio", "bytes", - "compress/bzip2", "compress/flate", "compress/gzip", "compress/lzw", - "compress/zlib", "container/heap", "container/list", "container/ring", - "context", "crypto", "crypto/aes", "crypto/cipher", - "crypto/des", "crypto/dsa", "crypto/ecdsa", "crypto/elliptic", - "crypto/hmac", "crypto/md5", "crypto/rand", "crypto/rc4", - "crypto/rsa", "crypto/sha1", "crypto/sha256", "crypto/sha512", - "crypto/subtle", "crypto/tls", "crypto/x509", "crypto/x509/pkix", - "database/sql", "database/sql/driver", "debug/dwarf", "debug/elf", - "debug/gosym", "debug/macho", "debug/pe", "debug/plan9obj", - "encoding", "encoding/ascii85", "encoding/asn1", "encoding/base32", - "encoding/base64", "encoding/binary", "encoding/csv", "encoding/gob", - "encoding/hex", "encoding/json", "encoding/pem", "encoding/xml", - "errors", "expvar", "flag", "fmt", - "go/ast", "go/build", "go/constant", "go/doc", - "go/format", "go/importer", "go/parser", "go/printer", - "go/scanner", "go/token", "go/types", "hash", - "hash/adler32", "hash/crc32", "hash/crc64", "hash/fnv", - "html", "html/template", "image", "image/color", - "image/color/palette", "image/draw", "image/gif", "image/jpeg", - "image/png", "index/suffixarray", "io", "io/ioutil", - "log", "log/syslog", "math", "math/big", - "math/bits", "math/cmplx", "math/rand", "mime", - "mime/multipart", "mime/quotedprintable", "net", "net/http", - "net/http/cgi", "net/http/cookiejar", "net/http/fcgi", "net/http/httptest", - "net/http/httptrace", "net/http/httputil", "net/http/pprof", "net/mail", - "net/rpc", "net/rpc/jsonrpc", "net/smtp", "net/textproto", - "net/url", "os", "os/exec", "os/signal", - "os/user", "path", "path/filepath", "plugin", - "reflect", "regexp", "regexp/syntax", "runtime", - "runtime/cgo", "runtime/debug", "runtime/pprof", "runtime/race", - "runtime/trace", "sort", "strconv", "strings", - "sync", "sync/atomic", "syscall", "testing", - "testing/iotest", "testing/quick", "text/scanner", "text/tabwriter", - "text/template", "text/template/parse", "time", "unicode", - "unicode/utf16", "unicode/utf8", "unsafe", -} - -func IsStdPkg(pkg string) bool { - for _, v := range Packages { - if v == pkg { - return true - } - } - return false -} diff --git a/vendor/github.com/visualfc/gotools/stdlib/zstdlib.go b/vendor/github.com/visualfc/gotools/stdlib/zstdlib.go deleted file mode 100644 index 633fb43..0000000 --- a/vendor/github.com/visualfc/gotools/stdlib/zstdlib.go +++ /dev/null @@ -1,9442 +0,0 @@ -// AUTO-GENERATED BY mkstdlib.go - -package stdlib - -var Symbols = map[string]string{ - "adler32.Checksum": "hash/adler32", - "adler32.New": "hash/adler32", - "adler32.Size": "hash/adler32", - "aes.BlockSize": "crypto/aes", - "aes.KeySizeError": "crypto/aes", - "aes.NewCipher": "crypto/aes", - "ascii85.CorruptInputError": "encoding/ascii85", - "ascii85.Decode": "encoding/ascii85", - "ascii85.Encode": "encoding/ascii85", - "ascii85.MaxEncodedLen": "encoding/ascii85", - "ascii85.NewDecoder": "encoding/ascii85", - "ascii85.NewEncoder": "encoding/ascii85", - "asn1.BitString": "encoding/asn1", - "asn1.ClassApplication": "encoding/asn1", - "asn1.ClassContextSpecific": "encoding/asn1", - "asn1.ClassPrivate": "encoding/asn1", - "asn1.ClassUniversal": "encoding/asn1", - "asn1.Enumerated": "encoding/asn1", - "asn1.Flag": "encoding/asn1", - "asn1.Marshal": "encoding/asn1", - "asn1.NullBytes": "encoding/asn1", - "asn1.NullRawValue": "encoding/asn1", - "asn1.ObjectIdentifier": "encoding/asn1", - "asn1.RawContent": "encoding/asn1", - "asn1.RawValue": "encoding/asn1", - "asn1.StructuralError": "encoding/asn1", - "asn1.SyntaxError": "encoding/asn1", - "asn1.TagBitString": "encoding/asn1", - "asn1.TagBoolean": "encoding/asn1", - "asn1.TagEnum": "encoding/asn1", - "asn1.TagGeneralString": "encoding/asn1", - "asn1.TagGeneralizedTime": "encoding/asn1", - "asn1.TagIA5String": "encoding/asn1", - "asn1.TagInteger": "encoding/asn1", - "asn1.TagNull": "encoding/asn1", - "asn1.TagOID": "encoding/asn1", - "asn1.TagOctetString": "encoding/asn1", - "asn1.TagPrintableString": "encoding/asn1", - "asn1.TagSequence": "encoding/asn1", - "asn1.TagSet": "encoding/asn1", - "asn1.TagT61String": "encoding/asn1", - "asn1.TagUTCTime": "encoding/asn1", - "asn1.TagUTF8String": "encoding/asn1", - "asn1.Unmarshal": "encoding/asn1", - "asn1.UnmarshalWithParams": "encoding/asn1", - "ast.ArrayType": "go/ast", - "ast.AssignStmt": "go/ast", - "ast.Bad": "go/ast", - "ast.BadDecl": "go/ast", - "ast.BadExpr": "go/ast", - "ast.BadStmt": "go/ast", - "ast.BasicLit": "go/ast", - "ast.BinaryExpr": "go/ast", - "ast.BlockStmt": "go/ast", - "ast.BranchStmt": "go/ast", - "ast.CallExpr": "go/ast", - "ast.CaseClause": "go/ast", - "ast.ChanDir": "go/ast", - "ast.ChanType": "go/ast", - "ast.CommClause": "go/ast", - "ast.Comment": "go/ast", - "ast.CommentGroup": "go/ast", - "ast.CommentMap": "go/ast", - "ast.CompositeLit": "go/ast", - "ast.Con": "go/ast", - "ast.DeclStmt": "go/ast", - "ast.DeferStmt": "go/ast", - "ast.Ellipsis": "go/ast", - "ast.EmptyStmt": "go/ast", - "ast.ExprStmt": "go/ast", - "ast.Field": "go/ast", - "ast.FieldFilter": "go/ast", - "ast.FieldList": "go/ast", - "ast.File": "go/ast", - "ast.FileExports": "go/ast", - "ast.Filter": "go/ast", - "ast.FilterDecl": "go/ast", - "ast.FilterFile": "go/ast", - "ast.FilterFuncDuplicates": "go/ast", - "ast.FilterImportDuplicates": "go/ast", - "ast.FilterPackage": "go/ast", - "ast.FilterUnassociatedComments": "go/ast", - "ast.ForStmt": "go/ast", - "ast.Fprint": "go/ast", - "ast.Fun": "go/ast", - "ast.FuncDecl": "go/ast", - "ast.FuncLit": "go/ast", - "ast.FuncType": "go/ast", - "ast.GenDecl": "go/ast", - "ast.GoStmt": "go/ast", - "ast.Ident": "go/ast", - "ast.IfStmt": "go/ast", - "ast.ImportSpec": "go/ast", - "ast.Importer": "go/ast", - "ast.IncDecStmt": "go/ast", - "ast.IndexExpr": "go/ast", - "ast.Inspect": "go/ast", - "ast.InterfaceType": "go/ast", - "ast.IsExported": "go/ast", - "ast.KeyValueExpr": "go/ast", - "ast.LabeledStmt": "go/ast", - "ast.Lbl": "go/ast", - "ast.MapType": "go/ast", - "ast.MergeMode": "go/ast", - "ast.MergePackageFiles": "go/ast", - "ast.NewCommentMap": "go/ast", - "ast.NewIdent": "go/ast", - "ast.NewObj": "go/ast", - "ast.NewPackage": "go/ast", - "ast.NewScope": "go/ast", - "ast.Node": "go/ast", - "ast.NotNilFilter": "go/ast", - "ast.ObjKind": "go/ast", - "ast.Object": "go/ast", - "ast.Package": "go/ast", - "ast.PackageExports": "go/ast", - "ast.ParenExpr": "go/ast", - "ast.Pkg": "go/ast", - "ast.Print": "go/ast", - "ast.RECV": "go/ast", - "ast.RangeStmt": "go/ast", - "ast.ReturnStmt": "go/ast", - "ast.SEND": "go/ast", - "ast.Scope": "go/ast", - "ast.SelectStmt": "go/ast", - "ast.SelectorExpr": "go/ast", - "ast.SendStmt": "go/ast", - "ast.SliceExpr": "go/ast", - "ast.SortImports": "go/ast", - "ast.StarExpr": "go/ast", - "ast.StructType": "go/ast", - "ast.SwitchStmt": "go/ast", - "ast.Typ": "go/ast", - "ast.TypeAssertExpr": "go/ast", - "ast.TypeSpec": "go/ast", - "ast.TypeSwitchStmt": "go/ast", - "ast.UnaryExpr": "go/ast", - "ast.ValueSpec": "go/ast", - "ast.Var": "go/ast", - "ast.Visitor": "go/ast", - "ast.Walk": "go/ast", - "atomic.AddInt32": "sync/atomic", - "atomic.AddInt64": "sync/atomic", - "atomic.AddUint32": "sync/atomic", - "atomic.AddUint64": "sync/atomic", - "atomic.AddUintptr": "sync/atomic", - "atomic.CompareAndSwapInt32": "sync/atomic", - "atomic.CompareAndSwapInt64": "sync/atomic", - "atomic.CompareAndSwapPointer": "sync/atomic", - "atomic.CompareAndSwapUint32": "sync/atomic", - "atomic.CompareAndSwapUint64": "sync/atomic", - "atomic.CompareAndSwapUintptr": "sync/atomic", - "atomic.LoadInt32": "sync/atomic", - "atomic.LoadInt64": "sync/atomic", - "atomic.LoadPointer": "sync/atomic", - "atomic.LoadUint32": "sync/atomic", - "atomic.LoadUint64": "sync/atomic", - "atomic.LoadUintptr": "sync/atomic", - "atomic.StoreInt32": "sync/atomic", - "atomic.StoreInt64": "sync/atomic", - "atomic.StorePointer": "sync/atomic", - "atomic.StoreUint32": "sync/atomic", - "atomic.StoreUint64": "sync/atomic", - "atomic.StoreUintptr": "sync/atomic", - "atomic.SwapInt32": "sync/atomic", - "atomic.SwapInt64": "sync/atomic", - "atomic.SwapPointer": "sync/atomic", - "atomic.SwapUint32": "sync/atomic", - "atomic.SwapUint64": "sync/atomic", - "atomic.SwapUintptr": "sync/atomic", - "atomic.Value": "sync/atomic", - "base32.CorruptInputError": "encoding/base32", - "base32.Encoding": "encoding/base32", - "base32.HexEncoding": "encoding/base32", - "base32.NewDecoder": "encoding/base32", - "base32.NewEncoder": "encoding/base32", - "base32.NewEncoding": "encoding/base32", - "base32.NoPadding": "encoding/base32", - "base32.StdEncoding": "encoding/base32", - "base32.StdPadding": "encoding/base32", - "base64.CorruptInputError": "encoding/base64", - "base64.Encoding": "encoding/base64", - "base64.NewDecoder": "encoding/base64", - "base64.NewEncoder": "encoding/base64", - "base64.NewEncoding": "encoding/base64", - "base64.NoPadding": "encoding/base64", - "base64.RawStdEncoding": "encoding/base64", - "base64.RawURLEncoding": "encoding/base64", - "base64.StdEncoding": "encoding/base64", - "base64.StdPadding": "encoding/base64", - "base64.URLEncoding": "encoding/base64", - "big.Above": "math/big", - "big.Accuracy": "math/big", - "big.AwayFromZero": "math/big", - "big.Below": "math/big", - "big.ErrNaN": "math/big", - "big.Exact": "math/big", - "big.Float": "math/big", - "big.Int": "math/big", - "big.Jacobi": "math/big", - "big.MaxBase": "math/big", - "big.MaxExp": "math/big", - "big.MaxPrec": "math/big", - "big.MinExp": "math/big", - "big.NewFloat": "math/big", - "big.NewInt": "math/big", - "big.NewRat": "math/big", - "big.ParseFloat": "math/big", - "big.Rat": "math/big", - "big.RoundingMode": "math/big", - "big.ToNearestAway": "math/big", - "big.ToNearestEven": "math/big", - "big.ToNegativeInf": "math/big", - "big.ToPositiveInf": "math/big", - "big.ToZero": "math/big", - "big.Word": "math/big", - "binary.BigEndian": "encoding/binary", - "binary.ByteOrder": "encoding/binary", - "binary.LittleEndian": "encoding/binary", - "binary.MaxVarintLen16": "encoding/binary", - "binary.MaxVarintLen32": "encoding/binary", - "binary.MaxVarintLen64": "encoding/binary", - "binary.PutUvarint": "encoding/binary", - "binary.PutVarint": "encoding/binary", - "binary.Read": "encoding/binary", - "binary.ReadUvarint": "encoding/binary", - "binary.ReadVarint": "encoding/binary", - "binary.Size": "encoding/binary", - "binary.Uvarint": "encoding/binary", - "binary.Varint": "encoding/binary", - "binary.Write": "encoding/binary", - "bits.LeadingZeros": "math/bits", - "bits.LeadingZeros16": "math/bits", - "bits.LeadingZeros32": "math/bits", - "bits.LeadingZeros64": "math/bits", - "bits.LeadingZeros8": "math/bits", - "bits.Len": "math/bits", - "bits.Len16": "math/bits", - "bits.Len32": "math/bits", - "bits.Len64": "math/bits", - "bits.Len8": "math/bits", - "bits.OnesCount": "math/bits", - "bits.OnesCount16": "math/bits", - "bits.OnesCount32": "math/bits", - "bits.OnesCount64": "math/bits", - "bits.OnesCount8": "math/bits", - "bits.Reverse": "math/bits", - "bits.Reverse16": "math/bits", - "bits.Reverse32": "math/bits", - "bits.Reverse64": "math/bits", - "bits.Reverse8": "math/bits", - "bits.ReverseBytes": "math/bits", - "bits.ReverseBytes16": "math/bits", - "bits.ReverseBytes32": "math/bits", - "bits.ReverseBytes64": "math/bits", - "bits.RotateLeft": "math/bits", - "bits.RotateLeft16": "math/bits", - "bits.RotateLeft32": "math/bits", - "bits.RotateLeft64": "math/bits", - "bits.RotateLeft8": "math/bits", - "bits.TrailingZeros": "math/bits", - "bits.TrailingZeros16": "math/bits", - "bits.TrailingZeros32": "math/bits", - "bits.TrailingZeros64": "math/bits", - "bits.TrailingZeros8": "math/bits", - "bits.UintSize": "math/bits", - "bufio.ErrAdvanceTooFar": "bufio", - "bufio.ErrBufferFull": "bufio", - "bufio.ErrFinalToken": "bufio", - "bufio.ErrInvalidUnreadByte": "bufio", - "bufio.ErrInvalidUnreadRune": "bufio", - "bufio.ErrNegativeAdvance": "bufio", - "bufio.ErrNegativeCount": "bufio", - "bufio.ErrTooLong": "bufio", - "bufio.MaxScanTokenSize": "bufio", - "bufio.NewReadWriter": "bufio", - "bufio.NewReader": "bufio", - "bufio.NewReaderSize": "bufio", - "bufio.NewScanner": "bufio", - "bufio.NewWriter": "bufio", - "bufio.NewWriterSize": "bufio", - "bufio.ReadWriter": "bufio", - "bufio.Reader": "bufio", - "bufio.ScanBytes": "bufio", - "bufio.ScanLines": "bufio", - "bufio.ScanRunes": "bufio", - "bufio.ScanWords": "bufio", - "bufio.Scanner": "bufio", - "bufio.SplitFunc": "bufio", - "bufio.Writer": "bufio", - "build.AllowBinary": "go/build", - "build.ArchChar": "go/build", - "build.Context": "go/build", - "build.Default": "go/build", - "build.FindOnly": "go/build", - "build.IgnoreVendor": "go/build", - "build.Import": "go/build", - "build.ImportComment": "go/build", - "build.ImportDir": "go/build", - "build.ImportMode": "go/build", - "build.IsLocalImport": "go/build", - "build.MultiplePackageError": "go/build", - "build.NoGoError": "go/build", - "build.Package": "go/build", - "build.ToolDir": "go/build", - "bytes.Buffer": "bytes", - "bytes.Compare": "bytes", - "bytes.Contains": "bytes", - "bytes.ContainsAny": "bytes", - "bytes.ContainsRune": "bytes", - "bytes.Count": "bytes", - "bytes.Equal": "bytes", - "bytes.EqualFold": "bytes", - "bytes.ErrTooLarge": "bytes", - "bytes.Fields": "bytes", - "bytes.FieldsFunc": "bytes", - "bytes.HasPrefix": "bytes", - "bytes.HasSuffix": "bytes", - "bytes.Index": "bytes", - "bytes.IndexAny": "bytes", - "bytes.IndexByte": "bytes", - "bytes.IndexFunc": "bytes", - "bytes.IndexRune": "bytes", - "bytes.Join": "bytes", - "bytes.LastIndex": "bytes", - "bytes.LastIndexAny": "bytes", - "bytes.LastIndexByte": "bytes", - "bytes.LastIndexFunc": "bytes", - "bytes.Map": "bytes", - "bytes.MinRead": "bytes", - "bytes.NewBuffer": "bytes", - "bytes.NewBufferString": "bytes", - "bytes.NewReader": "bytes", - "bytes.Reader": "bytes", - "bytes.Repeat": "bytes", - "bytes.Replace": "bytes", - "bytes.Runes": "bytes", - "bytes.Split": "bytes", - "bytes.SplitAfter": "bytes", - "bytes.SplitAfterN": "bytes", - "bytes.SplitN": "bytes", - "bytes.Title": "bytes", - "bytes.ToLower": "bytes", - "bytes.ToLowerSpecial": "bytes", - "bytes.ToTitle": "bytes", - "bytes.ToTitleSpecial": "bytes", - "bytes.ToUpper": "bytes", - "bytes.ToUpperSpecial": "bytes", - "bytes.Trim": "bytes", - "bytes.TrimFunc": "bytes", - "bytes.TrimLeft": "bytes", - "bytes.TrimLeftFunc": "bytes", - "bytes.TrimPrefix": "bytes", - "bytes.TrimRight": "bytes", - "bytes.TrimRightFunc": "bytes", - "bytes.TrimSpace": "bytes", - "bytes.TrimSuffix": "bytes", - "bzip2.NewReader": "compress/bzip2", - "bzip2.StructuralError": "compress/bzip2", - "cgi.Handler": "net/http/cgi", - "cgi.Request": "net/http/cgi", - "cgi.RequestFromMap": "net/http/cgi", - "cgi.Serve": "net/http/cgi", - "cipher.AEAD": "crypto/cipher", - "cipher.Block": "crypto/cipher", - "cipher.BlockMode": "crypto/cipher", - "cipher.NewCBCDecrypter": "crypto/cipher", - "cipher.NewCBCEncrypter": "crypto/cipher", - "cipher.NewCFBDecrypter": "crypto/cipher", - "cipher.NewCFBEncrypter": "crypto/cipher", - "cipher.NewCTR": "crypto/cipher", - "cipher.NewGCM": "crypto/cipher", - "cipher.NewGCMWithNonceSize": "crypto/cipher", - "cipher.NewOFB": "crypto/cipher", - "cipher.Stream": "crypto/cipher", - "cipher.StreamReader": "crypto/cipher", - "cipher.StreamWriter": "crypto/cipher", - "cmplx.Abs": "math/cmplx", - "cmplx.Acos": "math/cmplx", - "cmplx.Acosh": "math/cmplx", - "cmplx.Asin": "math/cmplx", - "cmplx.Asinh": "math/cmplx", - "cmplx.Atan": "math/cmplx", - "cmplx.Atanh": "math/cmplx", - "cmplx.Conj": "math/cmplx", - "cmplx.Cos": "math/cmplx", - "cmplx.Cosh": "math/cmplx", - "cmplx.Cot": "math/cmplx", - "cmplx.Exp": "math/cmplx", - "cmplx.Inf": "math/cmplx", - "cmplx.IsInf": "math/cmplx", - "cmplx.IsNaN": "math/cmplx", - "cmplx.Log": "math/cmplx", - "cmplx.Log10": "math/cmplx", - "cmplx.NaN": "math/cmplx", - "cmplx.Phase": "math/cmplx", - "cmplx.Polar": "math/cmplx", - "cmplx.Pow": "math/cmplx", - "cmplx.Rect": "math/cmplx", - "cmplx.Sin": "math/cmplx", - "cmplx.Sinh": "math/cmplx", - "cmplx.Sqrt": "math/cmplx", - "cmplx.Tan": "math/cmplx", - "cmplx.Tanh": "math/cmplx", - "color.Alpha": "image/color", - "color.Alpha16": "image/color", - "color.Alpha16Model": "image/color", - "color.AlphaModel": "image/color", - "color.Black": "image/color", - "color.CMYK": "image/color", - "color.CMYKModel": "image/color", - "color.CMYKToRGB": "image/color", - "color.Color": "image/color", - "color.Gray": "image/color", - "color.Gray16": "image/color", - "color.Gray16Model": "image/color", - "color.GrayModel": "image/color", - "color.Model": "image/color", - "color.ModelFunc": "image/color", - "color.NRGBA": "image/color", - "color.NRGBA64": "image/color", - "color.NRGBA64Model": "image/color", - "color.NRGBAModel": "image/color", - "color.NYCbCrA": "image/color", - "color.NYCbCrAModel": "image/color", - "color.Opaque": "image/color", - "color.Palette": "image/color", - "color.RGBA": "image/color", - "color.RGBA64": "image/color", - "color.RGBA64Model": "image/color", - "color.RGBAModel": "image/color", - "color.RGBToCMYK": "image/color", - "color.RGBToYCbCr": "image/color", - "color.Transparent": "image/color", - "color.White": "image/color", - "color.YCbCr": "image/color", - "color.YCbCrModel": "image/color", - "color.YCbCrToRGB": "image/color", - "constant.BinaryOp": "go/constant", - "constant.BitLen": "go/constant", - "constant.Bool": "go/constant", - "constant.BoolVal": "go/constant", - "constant.Bytes": "go/constant", - "constant.Compare": "go/constant", - "constant.Complex": "go/constant", - "constant.Denom": "go/constant", - "constant.Float": "go/constant", - "constant.Float32Val": "go/constant", - "constant.Float64Val": "go/constant", - "constant.Imag": "go/constant", - "constant.Int": "go/constant", - "constant.Int64Val": "go/constant", - "constant.Kind": "go/constant", - "constant.MakeBool": "go/constant", - "constant.MakeFloat64": "go/constant", - "constant.MakeFromBytes": "go/constant", - "constant.MakeFromLiteral": "go/constant", - "constant.MakeImag": "go/constant", - "constant.MakeInt64": "go/constant", - "constant.MakeString": "go/constant", - "constant.MakeUint64": "go/constant", - "constant.MakeUnknown": "go/constant", - "constant.Num": "go/constant", - "constant.Real": "go/constant", - "constant.Shift": "go/constant", - "constant.Sign": "go/constant", - "constant.String": "go/constant", - "constant.StringVal": "go/constant", - "constant.ToComplex": "go/constant", - "constant.ToFloat": "go/constant", - "constant.ToInt": "go/constant", - "constant.Uint64Val": "go/constant", - "constant.UnaryOp": "go/constant", - "constant.Unknown": "go/constant", - "context.Background": "context", - "context.CancelFunc": "context", - "context.Canceled": "context", - "context.Context": "context", - "context.DeadlineExceeded": "context", - "context.TODO": "context", - "context.WithCancel": "context", - "context.WithDeadline": "context", - "context.WithTimeout": "context", - "context.WithValue": "context", - "cookiejar.Jar": "net/http/cookiejar", - "cookiejar.New": "net/http/cookiejar", - "cookiejar.Options": "net/http/cookiejar", - "cookiejar.PublicSuffixList": "net/http/cookiejar", - "crc32.Castagnoli": "hash/crc32", - "crc32.Checksum": "hash/crc32", - "crc32.ChecksumIEEE": "hash/crc32", - "crc32.IEEE": "hash/crc32", - "crc32.IEEETable": "hash/crc32", - "crc32.Koopman": "hash/crc32", - "crc32.MakeTable": "hash/crc32", - "crc32.New": "hash/crc32", - "crc32.NewIEEE": "hash/crc32", - "crc32.Size": "hash/crc32", - "crc32.Table": "hash/crc32", - "crc32.Update": "hash/crc32", - "crc64.Checksum": "hash/crc64", - "crc64.ECMA": "hash/crc64", - "crc64.ISO": "hash/crc64", - "crc64.MakeTable": "hash/crc64", - "crc64.New": "hash/crc64", - "crc64.Size": "hash/crc64", - "crc64.Table": "hash/crc64", - "crc64.Update": "hash/crc64", - "crypto.BLAKE2b_256": "crypto", - "crypto.BLAKE2b_384": "crypto", - "crypto.BLAKE2b_512": "crypto", - "crypto.BLAKE2s_256": "crypto", - "crypto.Decrypter": "crypto", - "crypto.DecrypterOpts": "crypto", - "crypto.Hash": "crypto", - "crypto.MD4": "crypto", - "crypto.MD5": "crypto", - "crypto.MD5SHA1": "crypto", - "crypto.PrivateKey": "crypto", - "crypto.PublicKey": "crypto", - "crypto.RIPEMD160": "crypto", - "crypto.RegisterHash": "crypto", - "crypto.SHA1": "crypto", - "crypto.SHA224": "crypto", - "crypto.SHA256": "crypto", - "crypto.SHA384": "crypto", - "crypto.SHA3_224": "crypto", - "crypto.SHA3_256": "crypto", - "crypto.SHA3_384": "crypto", - "crypto.SHA3_512": "crypto", - "crypto.SHA512": "crypto", - "crypto.SHA512_224": "crypto", - "crypto.SHA512_256": "crypto", - "crypto.Signer": "crypto", - "crypto.SignerOpts": "crypto", - "csv.ErrBareQuote": "encoding/csv", - "csv.ErrFieldCount": "encoding/csv", - "csv.ErrQuote": "encoding/csv", - "csv.ErrTrailingComma": "encoding/csv", - "csv.NewReader": "encoding/csv", - "csv.NewWriter": "encoding/csv", - "csv.ParseError": "encoding/csv", - "csv.Reader": "encoding/csv", - "csv.Writer": "encoding/csv", - "debug.FreeOSMemory": "runtime/debug", - "debug.GCStats": "runtime/debug", - "debug.PrintStack": "runtime/debug", - "debug.ReadGCStats": "runtime/debug", - "debug.SetGCPercent": "runtime/debug", - "debug.SetMaxStack": "runtime/debug", - "debug.SetMaxThreads": "runtime/debug", - "debug.SetPanicOnFault": "runtime/debug", - "debug.SetTraceback": "runtime/debug", - "debug.Stack": "runtime/debug", - "debug.WriteHeapDump": "runtime/debug", - "des.BlockSize": "crypto/des", - "des.KeySizeError": "crypto/des", - "des.NewCipher": "crypto/des", - "des.NewTripleDESCipher": "crypto/des", - "doc.AllDecls": "go/doc", - "doc.AllMethods": "go/doc", - "doc.Example": "go/doc", - "doc.Examples": "go/doc", - "doc.Filter": "go/doc", - "doc.Func": "go/doc", - "doc.IllegalPrefixes": "go/doc", - "doc.IsPredeclared": "go/doc", - "doc.Mode": "go/doc", - "doc.New": "go/doc", - "doc.Note": "go/doc", - "doc.Package": "go/doc", - "doc.Synopsis": "go/doc", - "doc.ToHTML": "go/doc", - "doc.ToText": "go/doc", - "doc.Type": "go/doc", - "doc.Value": "go/doc", - "draw.Draw": "image/draw", - "draw.DrawMask": "image/draw", - "draw.Drawer": "image/draw", - "draw.FloydSteinberg": "image/draw", - "draw.Image": "image/draw", - "draw.Op": "image/draw", - "draw.Over": "image/draw", - "draw.Quantizer": "image/draw", - "draw.Src": "image/draw", - "driver.Bool": "database/sql/driver", - "driver.ColumnConverter": "database/sql/driver", - "driver.Conn": "database/sql/driver", - "driver.ConnBeginTx": "database/sql/driver", - "driver.ConnPrepareContext": "database/sql/driver", - "driver.DefaultParameterConverter": "database/sql/driver", - "driver.Driver": "database/sql/driver", - "driver.ErrBadConn": "database/sql/driver", - "driver.ErrRemoveArgument": "database/sql/driver", - "driver.ErrSkip": "database/sql/driver", - "driver.Execer": "database/sql/driver", - "driver.ExecerContext": "database/sql/driver", - "driver.Int32": "database/sql/driver", - "driver.IsScanValue": "database/sql/driver", - "driver.IsValue": "database/sql/driver", - "driver.IsolationLevel": "database/sql/driver", - "driver.NamedValue": "database/sql/driver", - "driver.NamedValueChecker": "database/sql/driver", - "driver.NotNull": "database/sql/driver", - "driver.Null": "database/sql/driver", - "driver.Pinger": "database/sql/driver", - "driver.Queryer": "database/sql/driver", - "driver.QueryerContext": "database/sql/driver", - "driver.Result": "database/sql/driver", - "driver.ResultNoRows": "database/sql/driver", - "driver.Rows": "database/sql/driver", - "driver.RowsAffected": "database/sql/driver", - "driver.RowsColumnTypeDatabaseTypeName": "database/sql/driver", - "driver.RowsColumnTypeLength": "database/sql/driver", - "driver.RowsColumnTypeNullable": "database/sql/driver", - "driver.RowsColumnTypePrecisionScale": "database/sql/driver", - "driver.RowsColumnTypeScanType": "database/sql/driver", - "driver.RowsNextResultSet": "database/sql/driver", - "driver.Stmt": "database/sql/driver", - "driver.StmtExecContext": "database/sql/driver", - "driver.StmtQueryContext": "database/sql/driver", - "driver.String": "database/sql/driver", - "driver.Tx": "database/sql/driver", - "driver.TxOptions": "database/sql/driver", - "driver.Value": "database/sql/driver", - "driver.ValueConverter": "database/sql/driver", - "driver.Valuer": "database/sql/driver", - "dsa.ErrInvalidPublicKey": "crypto/dsa", - "dsa.GenerateKey": "crypto/dsa", - "dsa.GenerateParameters": "crypto/dsa", - "dsa.L1024N160": "crypto/dsa", - "dsa.L2048N224": "crypto/dsa", - "dsa.L2048N256": "crypto/dsa", - "dsa.L3072N256": "crypto/dsa", - "dsa.ParameterSizes": "crypto/dsa", - "dsa.Parameters": "crypto/dsa", - "dsa.PrivateKey": "crypto/dsa", - "dsa.PublicKey": "crypto/dsa", - "dsa.Sign": "crypto/dsa", - "dsa.Verify": "crypto/dsa", - "dwarf.AddrType": "debug/dwarf", - "dwarf.ArrayType": "debug/dwarf", - "dwarf.Attr": "debug/dwarf", - "dwarf.AttrAbstractOrigin": "debug/dwarf", - "dwarf.AttrAccessibility": "debug/dwarf", - "dwarf.AttrAddrClass": "debug/dwarf", - "dwarf.AttrAllocated": "debug/dwarf", - "dwarf.AttrArtificial": "debug/dwarf", - "dwarf.AttrAssociated": "debug/dwarf", - "dwarf.AttrBaseTypes": "debug/dwarf", - "dwarf.AttrBitOffset": "debug/dwarf", - "dwarf.AttrBitSize": "debug/dwarf", - "dwarf.AttrByteSize": "debug/dwarf", - "dwarf.AttrCallColumn": "debug/dwarf", - "dwarf.AttrCallFile": "debug/dwarf", - "dwarf.AttrCallLine": "debug/dwarf", - "dwarf.AttrCalling": "debug/dwarf", - "dwarf.AttrCommonRef": "debug/dwarf", - "dwarf.AttrCompDir": "debug/dwarf", - "dwarf.AttrConstValue": "debug/dwarf", - "dwarf.AttrContainingType": "debug/dwarf", - "dwarf.AttrCount": "debug/dwarf", - "dwarf.AttrDataLocation": "debug/dwarf", - "dwarf.AttrDataMemberLoc": "debug/dwarf", - "dwarf.AttrDeclColumn": "debug/dwarf", - "dwarf.AttrDeclFile": "debug/dwarf", - "dwarf.AttrDeclLine": "debug/dwarf", - "dwarf.AttrDeclaration": "debug/dwarf", - "dwarf.AttrDefaultValue": "debug/dwarf", - "dwarf.AttrDescription": "debug/dwarf", - "dwarf.AttrDiscr": "debug/dwarf", - "dwarf.AttrDiscrList": "debug/dwarf", - "dwarf.AttrDiscrValue": "debug/dwarf", - "dwarf.AttrEncoding": "debug/dwarf", - "dwarf.AttrEntrypc": "debug/dwarf", - "dwarf.AttrExtension": "debug/dwarf", - "dwarf.AttrExternal": "debug/dwarf", - "dwarf.AttrFrameBase": "debug/dwarf", - "dwarf.AttrFriend": "debug/dwarf", - "dwarf.AttrHighpc": "debug/dwarf", - "dwarf.AttrIdentifierCase": "debug/dwarf", - "dwarf.AttrImport": "debug/dwarf", - "dwarf.AttrInline": "debug/dwarf", - "dwarf.AttrIsOptional": "debug/dwarf", - "dwarf.AttrLanguage": "debug/dwarf", - "dwarf.AttrLocation": "debug/dwarf", - "dwarf.AttrLowerBound": "debug/dwarf", - "dwarf.AttrLowpc": "debug/dwarf", - "dwarf.AttrMacroInfo": "debug/dwarf", - "dwarf.AttrName": "debug/dwarf", - "dwarf.AttrNamelistItem": "debug/dwarf", - "dwarf.AttrOrdering": "debug/dwarf", - "dwarf.AttrPriority": "debug/dwarf", - "dwarf.AttrProducer": "debug/dwarf", - "dwarf.AttrPrototyped": "debug/dwarf", - "dwarf.AttrRanges": "debug/dwarf", - "dwarf.AttrReturnAddr": "debug/dwarf", - "dwarf.AttrSegment": "debug/dwarf", - "dwarf.AttrSibling": "debug/dwarf", - "dwarf.AttrSpecification": "debug/dwarf", - "dwarf.AttrStartScope": "debug/dwarf", - "dwarf.AttrStaticLink": "debug/dwarf", - "dwarf.AttrStmtList": "debug/dwarf", - "dwarf.AttrStride": "debug/dwarf", - "dwarf.AttrStrideSize": "debug/dwarf", - "dwarf.AttrStringLength": "debug/dwarf", - "dwarf.AttrTrampoline": "debug/dwarf", - "dwarf.AttrType": "debug/dwarf", - "dwarf.AttrUpperBound": "debug/dwarf", - "dwarf.AttrUseLocation": "debug/dwarf", - "dwarf.AttrUseUTF8": "debug/dwarf", - "dwarf.AttrVarParam": "debug/dwarf", - "dwarf.AttrVirtuality": "debug/dwarf", - "dwarf.AttrVisibility": "debug/dwarf", - "dwarf.AttrVtableElemLoc": "debug/dwarf", - "dwarf.BasicType": "debug/dwarf", - "dwarf.BoolType": "debug/dwarf", - "dwarf.CharType": "debug/dwarf", - "dwarf.Class": "debug/dwarf", - "dwarf.ClassAddress": "debug/dwarf", - "dwarf.ClassBlock": "debug/dwarf", - "dwarf.ClassConstant": "debug/dwarf", - "dwarf.ClassExprLoc": "debug/dwarf", - "dwarf.ClassFlag": "debug/dwarf", - "dwarf.ClassLinePtr": "debug/dwarf", - "dwarf.ClassLocListPtr": "debug/dwarf", - "dwarf.ClassMacPtr": "debug/dwarf", - "dwarf.ClassRangeListPtr": "debug/dwarf", - "dwarf.ClassReference": "debug/dwarf", - "dwarf.ClassReferenceAlt": "debug/dwarf", - "dwarf.ClassReferenceSig": "debug/dwarf", - "dwarf.ClassString": "debug/dwarf", - "dwarf.ClassStringAlt": "debug/dwarf", - "dwarf.ClassUnknown": "debug/dwarf", - "dwarf.CommonType": "debug/dwarf", - "dwarf.ComplexType": "debug/dwarf", - "dwarf.Data": "debug/dwarf", - "dwarf.DecodeError": "debug/dwarf", - "dwarf.DotDotDotType": "debug/dwarf", - "dwarf.Entry": "debug/dwarf", - "dwarf.EnumType": "debug/dwarf", - "dwarf.EnumValue": "debug/dwarf", - "dwarf.ErrUnknownPC": "debug/dwarf", - "dwarf.Field": "debug/dwarf", - "dwarf.FloatType": "debug/dwarf", - "dwarf.FuncType": "debug/dwarf", - "dwarf.IntType": "debug/dwarf", - "dwarf.LineEntry": "debug/dwarf", - "dwarf.LineFile": "debug/dwarf", - "dwarf.LineReader": "debug/dwarf", - "dwarf.LineReaderPos": "debug/dwarf", - "dwarf.New": "debug/dwarf", - "dwarf.Offset": "debug/dwarf", - "dwarf.PtrType": "debug/dwarf", - "dwarf.QualType": "debug/dwarf", - "dwarf.Reader": "debug/dwarf", - "dwarf.StructField": "debug/dwarf", - "dwarf.StructType": "debug/dwarf", - "dwarf.Tag": "debug/dwarf", - "dwarf.TagAccessDeclaration": "debug/dwarf", - "dwarf.TagArrayType": "debug/dwarf", - "dwarf.TagBaseType": "debug/dwarf", - "dwarf.TagCatchDwarfBlock": "debug/dwarf", - "dwarf.TagClassType": "debug/dwarf", - "dwarf.TagCommonDwarfBlock": "debug/dwarf", - "dwarf.TagCommonInclusion": "debug/dwarf", - "dwarf.TagCompileUnit": "debug/dwarf", - "dwarf.TagCondition": "debug/dwarf", - "dwarf.TagConstType": "debug/dwarf", - "dwarf.TagConstant": "debug/dwarf", - "dwarf.TagDwarfProcedure": "debug/dwarf", - "dwarf.TagEntryPoint": "debug/dwarf", - "dwarf.TagEnumerationType": "debug/dwarf", - "dwarf.TagEnumerator": "debug/dwarf", - "dwarf.TagFileType": "debug/dwarf", - "dwarf.TagFormalParameter": "debug/dwarf", - "dwarf.TagFriend": "debug/dwarf", - "dwarf.TagImportedDeclaration": "debug/dwarf", - "dwarf.TagImportedModule": "debug/dwarf", - "dwarf.TagImportedUnit": "debug/dwarf", - "dwarf.TagInheritance": "debug/dwarf", - "dwarf.TagInlinedSubroutine": "debug/dwarf", - "dwarf.TagInterfaceType": "debug/dwarf", - "dwarf.TagLabel": "debug/dwarf", - "dwarf.TagLexDwarfBlock": "debug/dwarf", - "dwarf.TagMember": "debug/dwarf", - "dwarf.TagModule": "debug/dwarf", - "dwarf.TagMutableType": "debug/dwarf", - "dwarf.TagNamelist": "debug/dwarf", - "dwarf.TagNamelistItem": "debug/dwarf", - "dwarf.TagNamespace": "debug/dwarf", - "dwarf.TagPackedType": "debug/dwarf", - "dwarf.TagPartialUnit": "debug/dwarf", - "dwarf.TagPointerType": "debug/dwarf", - "dwarf.TagPtrToMemberType": "debug/dwarf", - "dwarf.TagReferenceType": "debug/dwarf", - "dwarf.TagRestrictType": "debug/dwarf", - "dwarf.TagRvalueReferenceType": "debug/dwarf", - "dwarf.TagSetType": "debug/dwarf", - "dwarf.TagSharedType": "debug/dwarf", - "dwarf.TagStringType": "debug/dwarf", - "dwarf.TagStructType": "debug/dwarf", - "dwarf.TagSubprogram": "debug/dwarf", - "dwarf.TagSubrangeType": "debug/dwarf", - "dwarf.TagSubroutineType": "debug/dwarf", - "dwarf.TagTemplateAlias": "debug/dwarf", - "dwarf.TagTemplateTypeParameter": "debug/dwarf", - "dwarf.TagTemplateValueParameter": "debug/dwarf", - "dwarf.TagThrownType": "debug/dwarf", - "dwarf.TagTryDwarfBlock": "debug/dwarf", - "dwarf.TagTypeUnit": "debug/dwarf", - "dwarf.TagTypedef": "debug/dwarf", - "dwarf.TagUnionType": "debug/dwarf", - "dwarf.TagUnspecifiedParameters": "debug/dwarf", - "dwarf.TagUnspecifiedType": "debug/dwarf", - "dwarf.TagVariable": "debug/dwarf", - "dwarf.TagVariant": "debug/dwarf", - "dwarf.TagVariantPart": "debug/dwarf", - "dwarf.TagVolatileType": "debug/dwarf", - "dwarf.TagWithStmt": "debug/dwarf", - "dwarf.Type": "debug/dwarf", - "dwarf.TypedefType": "debug/dwarf", - "dwarf.UcharType": "debug/dwarf", - "dwarf.UintType": "debug/dwarf", - "dwarf.UnspecifiedType": "debug/dwarf", - "dwarf.VoidType": "debug/dwarf", - "ecdsa.GenerateKey": "crypto/ecdsa", - "ecdsa.PrivateKey": "crypto/ecdsa", - "ecdsa.PublicKey": "crypto/ecdsa", - "ecdsa.Sign": "crypto/ecdsa", - "ecdsa.Verify": "crypto/ecdsa", - "elf.ARM_MAGIC_TRAMP_NUMBER": "debug/elf", - "elf.COMPRESS_HIOS": "debug/elf", - "elf.COMPRESS_HIPROC": "debug/elf", - "elf.COMPRESS_LOOS": "debug/elf", - "elf.COMPRESS_LOPROC": "debug/elf", - "elf.COMPRESS_ZLIB": "debug/elf", - "elf.Chdr32": "debug/elf", - "elf.Chdr64": "debug/elf", - "elf.Class": "debug/elf", - "elf.CompressionType": "debug/elf", - "elf.DF_BIND_NOW": "debug/elf", - "elf.DF_ORIGIN": "debug/elf", - "elf.DF_STATIC_TLS": "debug/elf", - "elf.DF_SYMBOLIC": "debug/elf", - "elf.DF_TEXTREL": "debug/elf", - "elf.DT_BIND_NOW": "debug/elf", - "elf.DT_DEBUG": "debug/elf", - "elf.DT_ENCODING": "debug/elf", - "elf.DT_FINI": "debug/elf", - "elf.DT_FINI_ARRAY": "debug/elf", - "elf.DT_FINI_ARRAYSZ": "debug/elf", - "elf.DT_FLAGS": "debug/elf", - "elf.DT_HASH": "debug/elf", - "elf.DT_HIOS": "debug/elf", - "elf.DT_HIPROC": "debug/elf", - "elf.DT_INIT": "debug/elf", - "elf.DT_INIT_ARRAY": "debug/elf", - "elf.DT_INIT_ARRAYSZ": "debug/elf", - "elf.DT_JMPREL": "debug/elf", - "elf.DT_LOOS": "debug/elf", - "elf.DT_LOPROC": "debug/elf", - "elf.DT_NEEDED": "debug/elf", - "elf.DT_NULL": "debug/elf", - "elf.DT_PLTGOT": "debug/elf", - "elf.DT_PLTREL": "debug/elf", - "elf.DT_PLTRELSZ": "debug/elf", - "elf.DT_PREINIT_ARRAY": "debug/elf", - "elf.DT_PREINIT_ARRAYSZ": "debug/elf", - "elf.DT_REL": "debug/elf", - "elf.DT_RELA": "debug/elf", - "elf.DT_RELAENT": "debug/elf", - "elf.DT_RELASZ": "debug/elf", - "elf.DT_RELENT": "debug/elf", - "elf.DT_RELSZ": "debug/elf", - "elf.DT_RPATH": "debug/elf", - "elf.DT_RUNPATH": "debug/elf", - "elf.DT_SONAME": "debug/elf", - "elf.DT_STRSZ": "debug/elf", - "elf.DT_STRTAB": "debug/elf", - "elf.DT_SYMBOLIC": "debug/elf", - "elf.DT_SYMENT": "debug/elf", - "elf.DT_SYMTAB": "debug/elf", - "elf.DT_TEXTREL": "debug/elf", - "elf.DT_VERNEED": "debug/elf", - "elf.DT_VERNEEDNUM": "debug/elf", - "elf.DT_VERSYM": "debug/elf", - "elf.Data": "debug/elf", - "elf.Dyn32": "debug/elf", - "elf.Dyn64": "debug/elf", - "elf.DynFlag": "debug/elf", - "elf.DynTag": "debug/elf", - "elf.EI_ABIVERSION": "debug/elf", - "elf.EI_CLASS": "debug/elf", - "elf.EI_DATA": "debug/elf", - "elf.EI_NIDENT": "debug/elf", - "elf.EI_OSABI": "debug/elf", - "elf.EI_PAD": "debug/elf", - "elf.EI_VERSION": "debug/elf", - "elf.ELFCLASS32": "debug/elf", - "elf.ELFCLASS64": "debug/elf", - "elf.ELFCLASSNONE": "debug/elf", - "elf.ELFDATA2LSB": "debug/elf", - "elf.ELFDATA2MSB": "debug/elf", - "elf.ELFDATANONE": "debug/elf", - "elf.ELFMAG": "debug/elf", - "elf.ELFOSABI_86OPEN": "debug/elf", - "elf.ELFOSABI_AIX": "debug/elf", - "elf.ELFOSABI_ARM": "debug/elf", - "elf.ELFOSABI_FREEBSD": "debug/elf", - "elf.ELFOSABI_HPUX": "debug/elf", - "elf.ELFOSABI_HURD": "debug/elf", - "elf.ELFOSABI_IRIX": "debug/elf", - "elf.ELFOSABI_LINUX": "debug/elf", - "elf.ELFOSABI_MODESTO": "debug/elf", - "elf.ELFOSABI_NETBSD": "debug/elf", - "elf.ELFOSABI_NONE": "debug/elf", - "elf.ELFOSABI_NSK": "debug/elf", - "elf.ELFOSABI_OPENBSD": "debug/elf", - "elf.ELFOSABI_OPENVMS": "debug/elf", - "elf.ELFOSABI_SOLARIS": "debug/elf", - "elf.ELFOSABI_STANDALONE": "debug/elf", - "elf.ELFOSABI_TRU64": "debug/elf", - "elf.EM_386": "debug/elf", - "elf.EM_486": "debug/elf", - "elf.EM_68HC12": "debug/elf", - "elf.EM_68K": "debug/elf", - "elf.EM_860": "debug/elf", - "elf.EM_88K": "debug/elf", - "elf.EM_960": "debug/elf", - "elf.EM_AARCH64": "debug/elf", - "elf.EM_ALPHA": "debug/elf", - "elf.EM_ALPHA_STD": "debug/elf", - "elf.EM_ARC": "debug/elf", - "elf.EM_ARM": "debug/elf", - "elf.EM_COLDFIRE": "debug/elf", - "elf.EM_FR20": "debug/elf", - "elf.EM_H8S": "debug/elf", - "elf.EM_H8_300": "debug/elf", - "elf.EM_H8_300H": "debug/elf", - "elf.EM_H8_500": "debug/elf", - "elf.EM_IA_64": "debug/elf", - "elf.EM_M32": "debug/elf", - "elf.EM_ME16": "debug/elf", - "elf.EM_MIPS": "debug/elf", - "elf.EM_MIPS_RS3_LE": "debug/elf", - "elf.EM_MIPS_RS4_BE": "debug/elf", - "elf.EM_MIPS_X": "debug/elf", - "elf.EM_MMA": "debug/elf", - "elf.EM_NCPU": "debug/elf", - "elf.EM_NDR1": "debug/elf", - "elf.EM_NONE": "debug/elf", - "elf.EM_PARISC": "debug/elf", - "elf.EM_PCP": "debug/elf", - "elf.EM_PPC": "debug/elf", - "elf.EM_PPC64": "debug/elf", - "elf.EM_RCE": "debug/elf", - "elf.EM_RH32": "debug/elf", - "elf.EM_S370": "debug/elf", - "elf.EM_S390": "debug/elf", - "elf.EM_SH": "debug/elf", - "elf.EM_SPARC": "debug/elf", - "elf.EM_SPARC32PLUS": "debug/elf", - "elf.EM_SPARCV9": "debug/elf", - "elf.EM_ST100": "debug/elf", - "elf.EM_STARCORE": "debug/elf", - "elf.EM_TINYJ": "debug/elf", - "elf.EM_TRICORE": "debug/elf", - "elf.EM_V800": "debug/elf", - "elf.EM_VPP500": "debug/elf", - "elf.EM_X86_64": "debug/elf", - "elf.ET_CORE": "debug/elf", - "elf.ET_DYN": "debug/elf", - "elf.ET_EXEC": "debug/elf", - "elf.ET_HIOS": "debug/elf", - "elf.ET_HIPROC": "debug/elf", - "elf.ET_LOOS": "debug/elf", - "elf.ET_LOPROC": "debug/elf", - "elf.ET_NONE": "debug/elf", - "elf.ET_REL": "debug/elf", - "elf.EV_CURRENT": "debug/elf", - "elf.EV_NONE": "debug/elf", - "elf.ErrNoSymbols": "debug/elf", - "elf.File": "debug/elf", - "elf.FileHeader": "debug/elf", - "elf.FormatError": "debug/elf", - "elf.Header32": "debug/elf", - "elf.Header64": "debug/elf", - "elf.ImportedSymbol": "debug/elf", - "elf.Machine": "debug/elf", - "elf.NT_FPREGSET": "debug/elf", - "elf.NT_PRPSINFO": "debug/elf", - "elf.NT_PRSTATUS": "debug/elf", - "elf.NType": "debug/elf", - "elf.NewFile": "debug/elf", - "elf.OSABI": "debug/elf", - "elf.Open": "debug/elf", - "elf.PF_MASKOS": "debug/elf", - "elf.PF_MASKPROC": "debug/elf", - "elf.PF_R": "debug/elf", - "elf.PF_W": "debug/elf", - "elf.PF_X": "debug/elf", - "elf.PT_DYNAMIC": "debug/elf", - "elf.PT_HIOS": "debug/elf", - "elf.PT_HIPROC": "debug/elf", - "elf.PT_INTERP": "debug/elf", - "elf.PT_LOAD": "debug/elf", - "elf.PT_LOOS": "debug/elf", - "elf.PT_LOPROC": "debug/elf", - "elf.PT_NOTE": "debug/elf", - "elf.PT_NULL": "debug/elf", - "elf.PT_PHDR": "debug/elf", - "elf.PT_SHLIB": "debug/elf", - "elf.PT_TLS": "debug/elf", - "elf.Prog": "debug/elf", - "elf.Prog32": "debug/elf", - "elf.Prog64": "debug/elf", - "elf.ProgFlag": "debug/elf", - "elf.ProgHeader": "debug/elf", - "elf.ProgType": "debug/elf", - "elf.R_386": "debug/elf", - "elf.R_386_32": "debug/elf", - "elf.R_386_COPY": "debug/elf", - "elf.R_386_GLOB_DAT": "debug/elf", - "elf.R_386_GOT32": "debug/elf", - "elf.R_386_GOTOFF": "debug/elf", - "elf.R_386_GOTPC": "debug/elf", - "elf.R_386_JMP_SLOT": "debug/elf", - "elf.R_386_NONE": "debug/elf", - "elf.R_386_PC32": "debug/elf", - "elf.R_386_PLT32": "debug/elf", - "elf.R_386_RELATIVE": "debug/elf", - "elf.R_386_TLS_DTPMOD32": "debug/elf", - "elf.R_386_TLS_DTPOFF32": "debug/elf", - "elf.R_386_TLS_GD": "debug/elf", - "elf.R_386_TLS_GD_32": "debug/elf", - "elf.R_386_TLS_GD_CALL": "debug/elf", - "elf.R_386_TLS_GD_POP": "debug/elf", - "elf.R_386_TLS_GD_PUSH": "debug/elf", - "elf.R_386_TLS_GOTIE": "debug/elf", - "elf.R_386_TLS_IE": "debug/elf", - "elf.R_386_TLS_IE_32": "debug/elf", - "elf.R_386_TLS_LDM": "debug/elf", - "elf.R_386_TLS_LDM_32": "debug/elf", - "elf.R_386_TLS_LDM_CALL": "debug/elf", - "elf.R_386_TLS_LDM_POP": "debug/elf", - "elf.R_386_TLS_LDM_PUSH": "debug/elf", - "elf.R_386_TLS_LDO_32": "debug/elf", - "elf.R_386_TLS_LE": "debug/elf", - "elf.R_386_TLS_LE_32": "debug/elf", - "elf.R_386_TLS_TPOFF": "debug/elf", - "elf.R_386_TLS_TPOFF32": "debug/elf", - "elf.R_390": "debug/elf", - "elf.R_390_12": "debug/elf", - "elf.R_390_16": "debug/elf", - "elf.R_390_20": "debug/elf", - "elf.R_390_32": "debug/elf", - "elf.R_390_64": "debug/elf", - "elf.R_390_8": "debug/elf", - "elf.R_390_COPY": "debug/elf", - "elf.R_390_GLOB_DAT": "debug/elf", - "elf.R_390_GOT12": "debug/elf", - "elf.R_390_GOT16": "debug/elf", - "elf.R_390_GOT20": "debug/elf", - "elf.R_390_GOT32": "debug/elf", - "elf.R_390_GOT64": "debug/elf", - "elf.R_390_GOTENT": "debug/elf", - "elf.R_390_GOTOFF": "debug/elf", - "elf.R_390_GOTOFF16": "debug/elf", - "elf.R_390_GOTOFF64": "debug/elf", - "elf.R_390_GOTPC": "debug/elf", - "elf.R_390_GOTPCDBL": "debug/elf", - "elf.R_390_GOTPLT12": "debug/elf", - "elf.R_390_GOTPLT16": "debug/elf", - "elf.R_390_GOTPLT20": "debug/elf", - "elf.R_390_GOTPLT32": "debug/elf", - "elf.R_390_GOTPLT64": "debug/elf", - "elf.R_390_GOTPLTENT": "debug/elf", - "elf.R_390_GOTPLTOFF16": "debug/elf", - "elf.R_390_GOTPLTOFF32": "debug/elf", - "elf.R_390_GOTPLTOFF64": "debug/elf", - "elf.R_390_JMP_SLOT": "debug/elf", - "elf.R_390_NONE": "debug/elf", - "elf.R_390_PC16": "debug/elf", - "elf.R_390_PC16DBL": "debug/elf", - "elf.R_390_PC32": "debug/elf", - "elf.R_390_PC32DBL": "debug/elf", - "elf.R_390_PC64": "debug/elf", - "elf.R_390_PLT16DBL": "debug/elf", - "elf.R_390_PLT32": "debug/elf", - "elf.R_390_PLT32DBL": "debug/elf", - "elf.R_390_PLT64": "debug/elf", - "elf.R_390_RELATIVE": "debug/elf", - "elf.R_390_TLS_DTPMOD": "debug/elf", - "elf.R_390_TLS_DTPOFF": "debug/elf", - "elf.R_390_TLS_GD32": "debug/elf", - "elf.R_390_TLS_GD64": "debug/elf", - "elf.R_390_TLS_GDCALL": "debug/elf", - "elf.R_390_TLS_GOTIE12": "debug/elf", - "elf.R_390_TLS_GOTIE20": "debug/elf", - "elf.R_390_TLS_GOTIE32": "debug/elf", - "elf.R_390_TLS_GOTIE64": "debug/elf", - "elf.R_390_TLS_IE32": "debug/elf", - "elf.R_390_TLS_IE64": "debug/elf", - "elf.R_390_TLS_IEENT": "debug/elf", - "elf.R_390_TLS_LDCALL": "debug/elf", - "elf.R_390_TLS_LDM32": "debug/elf", - "elf.R_390_TLS_LDM64": "debug/elf", - "elf.R_390_TLS_LDO32": "debug/elf", - "elf.R_390_TLS_LDO64": "debug/elf", - "elf.R_390_TLS_LE32": "debug/elf", - "elf.R_390_TLS_LE64": "debug/elf", - "elf.R_390_TLS_LOAD": "debug/elf", - "elf.R_390_TLS_TPOFF": "debug/elf", - "elf.R_AARCH64": "debug/elf", - "elf.R_AARCH64_ABS16": "debug/elf", - "elf.R_AARCH64_ABS32": "debug/elf", - "elf.R_AARCH64_ABS64": "debug/elf", - "elf.R_AARCH64_ADD_ABS_LO12_NC": "debug/elf", - "elf.R_AARCH64_ADR_GOT_PAGE": "debug/elf", - "elf.R_AARCH64_ADR_PREL_LO21": "debug/elf", - "elf.R_AARCH64_ADR_PREL_PG_HI21": "debug/elf", - "elf.R_AARCH64_ADR_PREL_PG_HI21_NC": "debug/elf", - "elf.R_AARCH64_CALL26": "debug/elf", - "elf.R_AARCH64_CONDBR19": "debug/elf", - "elf.R_AARCH64_COPY": "debug/elf", - "elf.R_AARCH64_GLOB_DAT": "debug/elf", - "elf.R_AARCH64_GOT_LD_PREL19": "debug/elf", - "elf.R_AARCH64_IRELATIVE": "debug/elf", - "elf.R_AARCH64_JUMP26": "debug/elf", - "elf.R_AARCH64_JUMP_SLOT": "debug/elf", - "elf.R_AARCH64_LD64_GOT_LO12_NC": "debug/elf", - "elf.R_AARCH64_LDST128_ABS_LO12_NC": "debug/elf", - "elf.R_AARCH64_LDST16_ABS_LO12_NC": "debug/elf", - "elf.R_AARCH64_LDST32_ABS_LO12_NC": "debug/elf", - "elf.R_AARCH64_LDST64_ABS_LO12_NC": "debug/elf", - "elf.R_AARCH64_LDST8_ABS_LO12_NC": "debug/elf", - "elf.R_AARCH64_LD_PREL_LO19": "debug/elf", - "elf.R_AARCH64_MOVW_SABS_G0": "debug/elf", - "elf.R_AARCH64_MOVW_SABS_G1": "debug/elf", - "elf.R_AARCH64_MOVW_SABS_G2": "debug/elf", - "elf.R_AARCH64_MOVW_UABS_G0": "debug/elf", - "elf.R_AARCH64_MOVW_UABS_G0_NC": "debug/elf", - "elf.R_AARCH64_MOVW_UABS_G1": "debug/elf", - "elf.R_AARCH64_MOVW_UABS_G1_NC": "debug/elf", - "elf.R_AARCH64_MOVW_UABS_G2": "debug/elf", - "elf.R_AARCH64_MOVW_UABS_G2_NC": "debug/elf", - "elf.R_AARCH64_MOVW_UABS_G3": "debug/elf", - "elf.R_AARCH64_NONE": "debug/elf", - "elf.R_AARCH64_NULL": "debug/elf", - "elf.R_AARCH64_P32_ABS16": "debug/elf", - "elf.R_AARCH64_P32_ABS32": "debug/elf", - "elf.R_AARCH64_P32_ADD_ABS_LO12_NC": "debug/elf", - "elf.R_AARCH64_P32_ADR_GOT_PAGE": "debug/elf", - "elf.R_AARCH64_P32_ADR_PREL_LO21": "debug/elf", - "elf.R_AARCH64_P32_ADR_PREL_PG_HI21": "debug/elf", - "elf.R_AARCH64_P32_CALL26": "debug/elf", - "elf.R_AARCH64_P32_CONDBR19": "debug/elf", - "elf.R_AARCH64_P32_COPY": "debug/elf", - "elf.R_AARCH64_P32_GLOB_DAT": "debug/elf", - "elf.R_AARCH64_P32_GOT_LD_PREL19": "debug/elf", - "elf.R_AARCH64_P32_IRELATIVE": "debug/elf", - "elf.R_AARCH64_P32_JUMP26": "debug/elf", - "elf.R_AARCH64_P32_JUMP_SLOT": "debug/elf", - "elf.R_AARCH64_P32_LD32_GOT_LO12_NC": "debug/elf", - "elf.R_AARCH64_P32_LDST128_ABS_LO12_NC": "debug/elf", - "elf.R_AARCH64_P32_LDST16_ABS_LO12_NC": "debug/elf", - "elf.R_AARCH64_P32_LDST32_ABS_LO12_NC": "debug/elf", - "elf.R_AARCH64_P32_LDST64_ABS_LO12_NC": "debug/elf", - "elf.R_AARCH64_P32_LDST8_ABS_LO12_NC": "debug/elf", - "elf.R_AARCH64_P32_LD_PREL_LO19": "debug/elf", - "elf.R_AARCH64_P32_MOVW_SABS_G0": "debug/elf", - "elf.R_AARCH64_P32_MOVW_UABS_G0": "debug/elf", - "elf.R_AARCH64_P32_MOVW_UABS_G0_NC": "debug/elf", - "elf.R_AARCH64_P32_MOVW_UABS_G1": "debug/elf", - "elf.R_AARCH64_P32_PREL16": "debug/elf", - "elf.R_AARCH64_P32_PREL32": "debug/elf", - "elf.R_AARCH64_P32_RELATIVE": "debug/elf", - "elf.R_AARCH64_P32_TLSDESC": "debug/elf", - "elf.R_AARCH64_P32_TLSDESC_ADD_LO12_NC": "debug/elf", - "elf.R_AARCH64_P32_TLSDESC_ADR_PAGE21": "debug/elf", - "elf.R_AARCH64_P32_TLSDESC_ADR_PREL21": "debug/elf", - "elf.R_AARCH64_P32_TLSDESC_CALL": "debug/elf", - "elf.R_AARCH64_P32_TLSDESC_LD32_LO12_NC": "debug/elf", - "elf.R_AARCH64_P32_TLSDESC_LD_PREL19": "debug/elf", - "elf.R_AARCH64_P32_TLSGD_ADD_LO12_NC": "debug/elf", - "elf.R_AARCH64_P32_TLSGD_ADR_PAGE21": "debug/elf", - "elf.R_AARCH64_P32_TLSIE_ADR_GOTTPREL_PAGE21": "debug/elf", - "elf.R_AARCH64_P32_TLSIE_LD32_GOTTPREL_LO12_NC": "debug/elf", - "elf.R_AARCH64_P32_TLSIE_LD_GOTTPREL_PREL19": "debug/elf", - "elf.R_AARCH64_P32_TLSLE_ADD_TPREL_HI12": "debug/elf", - "elf.R_AARCH64_P32_TLSLE_ADD_TPREL_LO12": "debug/elf", - "elf.R_AARCH64_P32_TLSLE_ADD_TPREL_LO12_NC": "debug/elf", - "elf.R_AARCH64_P32_TLSLE_MOVW_TPREL_G0": "debug/elf", - "elf.R_AARCH64_P32_TLSLE_MOVW_TPREL_G0_NC": "debug/elf", - "elf.R_AARCH64_P32_TLSLE_MOVW_TPREL_G1": "debug/elf", - "elf.R_AARCH64_P32_TLS_DTPMOD": "debug/elf", - "elf.R_AARCH64_P32_TLS_DTPREL": "debug/elf", - "elf.R_AARCH64_P32_TLS_TPREL": "debug/elf", - "elf.R_AARCH64_P32_TSTBR14": "debug/elf", - "elf.R_AARCH64_PREL16": "debug/elf", - "elf.R_AARCH64_PREL32": "debug/elf", - "elf.R_AARCH64_PREL64": "debug/elf", - "elf.R_AARCH64_RELATIVE": "debug/elf", - "elf.R_AARCH64_TLSDESC": "debug/elf", - "elf.R_AARCH64_TLSDESC_ADD": "debug/elf", - "elf.R_AARCH64_TLSDESC_ADD_LO12_NC": "debug/elf", - "elf.R_AARCH64_TLSDESC_ADR_PAGE21": "debug/elf", - "elf.R_AARCH64_TLSDESC_ADR_PREL21": "debug/elf", - "elf.R_AARCH64_TLSDESC_CALL": "debug/elf", - "elf.R_AARCH64_TLSDESC_LD64_LO12_NC": "debug/elf", - "elf.R_AARCH64_TLSDESC_LDR": "debug/elf", - "elf.R_AARCH64_TLSDESC_LD_PREL19": "debug/elf", - "elf.R_AARCH64_TLSDESC_OFF_G0_NC": "debug/elf", - "elf.R_AARCH64_TLSDESC_OFF_G1": "debug/elf", - "elf.R_AARCH64_TLSGD_ADD_LO12_NC": "debug/elf", - "elf.R_AARCH64_TLSGD_ADR_PAGE21": "debug/elf", - "elf.R_AARCH64_TLSIE_ADR_GOTTPREL_PAGE21": "debug/elf", - "elf.R_AARCH64_TLSIE_LD64_GOTTPREL_LO12_NC": "debug/elf", - "elf.R_AARCH64_TLSIE_LD_GOTTPREL_PREL19": "debug/elf", - "elf.R_AARCH64_TLSIE_MOVW_GOTTPREL_G0_NC": "debug/elf", - "elf.R_AARCH64_TLSIE_MOVW_GOTTPREL_G1": "debug/elf", - "elf.R_AARCH64_TLSLE_ADD_TPREL_HI12": "debug/elf", - "elf.R_AARCH64_TLSLE_ADD_TPREL_LO12": "debug/elf", - "elf.R_AARCH64_TLSLE_ADD_TPREL_LO12_NC": "debug/elf", - "elf.R_AARCH64_TLSLE_MOVW_TPREL_G0": "debug/elf", - "elf.R_AARCH64_TLSLE_MOVW_TPREL_G0_NC": "debug/elf", - "elf.R_AARCH64_TLSLE_MOVW_TPREL_G1": "debug/elf", - "elf.R_AARCH64_TLSLE_MOVW_TPREL_G1_NC": "debug/elf", - "elf.R_AARCH64_TLSLE_MOVW_TPREL_G2": "debug/elf", - "elf.R_AARCH64_TLS_DTPMOD64": "debug/elf", - "elf.R_AARCH64_TLS_DTPREL64": "debug/elf", - "elf.R_AARCH64_TLS_TPREL64": "debug/elf", - "elf.R_AARCH64_TSTBR14": "debug/elf", - "elf.R_ALPHA": "debug/elf", - "elf.R_ALPHA_BRADDR": "debug/elf", - "elf.R_ALPHA_COPY": "debug/elf", - "elf.R_ALPHA_GLOB_DAT": "debug/elf", - "elf.R_ALPHA_GPDISP": "debug/elf", - "elf.R_ALPHA_GPREL32": "debug/elf", - "elf.R_ALPHA_GPRELHIGH": "debug/elf", - "elf.R_ALPHA_GPRELLOW": "debug/elf", - "elf.R_ALPHA_GPVALUE": "debug/elf", - "elf.R_ALPHA_HINT": "debug/elf", - "elf.R_ALPHA_IMMED_BR_HI32": "debug/elf", - "elf.R_ALPHA_IMMED_GP_16": "debug/elf", - "elf.R_ALPHA_IMMED_GP_HI32": "debug/elf", - "elf.R_ALPHA_IMMED_LO32": "debug/elf", - "elf.R_ALPHA_IMMED_SCN_HI32": "debug/elf", - "elf.R_ALPHA_JMP_SLOT": "debug/elf", - "elf.R_ALPHA_LITERAL": "debug/elf", - "elf.R_ALPHA_LITUSE": "debug/elf", - "elf.R_ALPHA_NONE": "debug/elf", - "elf.R_ALPHA_OP_PRSHIFT": "debug/elf", - "elf.R_ALPHA_OP_PSUB": "debug/elf", - "elf.R_ALPHA_OP_PUSH": "debug/elf", - "elf.R_ALPHA_OP_STORE": "debug/elf", - "elf.R_ALPHA_REFLONG": "debug/elf", - "elf.R_ALPHA_REFQUAD": "debug/elf", - "elf.R_ALPHA_RELATIVE": "debug/elf", - "elf.R_ALPHA_SREL16": "debug/elf", - "elf.R_ALPHA_SREL32": "debug/elf", - "elf.R_ALPHA_SREL64": "debug/elf", - "elf.R_ARM": "debug/elf", - "elf.R_ARM_ABS12": "debug/elf", - "elf.R_ARM_ABS16": "debug/elf", - "elf.R_ARM_ABS32": "debug/elf", - "elf.R_ARM_ABS8": "debug/elf", - "elf.R_ARM_AMP_VCALL9": "debug/elf", - "elf.R_ARM_COPY": "debug/elf", - "elf.R_ARM_GLOB_DAT": "debug/elf", - "elf.R_ARM_GNU_VTENTRY": "debug/elf", - "elf.R_ARM_GNU_VTINHERIT": "debug/elf", - "elf.R_ARM_GOT32": "debug/elf", - "elf.R_ARM_GOTOFF": "debug/elf", - "elf.R_ARM_GOTPC": "debug/elf", - "elf.R_ARM_JUMP_SLOT": "debug/elf", - "elf.R_ARM_NONE": "debug/elf", - "elf.R_ARM_PC13": "debug/elf", - "elf.R_ARM_PC24": "debug/elf", - "elf.R_ARM_PLT32": "debug/elf", - "elf.R_ARM_RABS32": "debug/elf", - "elf.R_ARM_RBASE": "debug/elf", - "elf.R_ARM_REL32": "debug/elf", - "elf.R_ARM_RELATIVE": "debug/elf", - "elf.R_ARM_RPC24": "debug/elf", - "elf.R_ARM_RREL32": "debug/elf", - "elf.R_ARM_RSBREL32": "debug/elf", - "elf.R_ARM_SBREL32": "debug/elf", - "elf.R_ARM_SWI24": "debug/elf", - "elf.R_ARM_THM_ABS5": "debug/elf", - "elf.R_ARM_THM_PC22": "debug/elf", - "elf.R_ARM_THM_PC8": "debug/elf", - "elf.R_ARM_THM_RPC22": "debug/elf", - "elf.R_ARM_THM_SWI8": "debug/elf", - "elf.R_ARM_THM_XPC22": "debug/elf", - "elf.R_ARM_XPC25": "debug/elf", - "elf.R_INFO": "debug/elf", - "elf.R_INFO32": "debug/elf", - "elf.R_MIPS": "debug/elf", - "elf.R_MIPS_16": "debug/elf", - "elf.R_MIPS_26": "debug/elf", - "elf.R_MIPS_32": "debug/elf", - "elf.R_MIPS_64": "debug/elf", - "elf.R_MIPS_ADD_IMMEDIATE": "debug/elf", - "elf.R_MIPS_CALL16": "debug/elf", - "elf.R_MIPS_CALL_HI16": "debug/elf", - "elf.R_MIPS_CALL_LO16": "debug/elf", - "elf.R_MIPS_DELETE": "debug/elf", - "elf.R_MIPS_GOT16": "debug/elf", - "elf.R_MIPS_GOT_DISP": "debug/elf", - "elf.R_MIPS_GOT_HI16": "debug/elf", - "elf.R_MIPS_GOT_LO16": "debug/elf", - "elf.R_MIPS_GOT_OFST": "debug/elf", - "elf.R_MIPS_GOT_PAGE": "debug/elf", - "elf.R_MIPS_GPREL16": "debug/elf", - "elf.R_MIPS_GPREL32": "debug/elf", - "elf.R_MIPS_HI16": "debug/elf", - "elf.R_MIPS_HIGHER": "debug/elf", - "elf.R_MIPS_HIGHEST": "debug/elf", - "elf.R_MIPS_INSERT_A": "debug/elf", - "elf.R_MIPS_INSERT_B": "debug/elf", - "elf.R_MIPS_JALR": "debug/elf", - "elf.R_MIPS_LITERAL": "debug/elf", - "elf.R_MIPS_LO16": "debug/elf", - "elf.R_MIPS_NONE": "debug/elf", - "elf.R_MIPS_PC16": "debug/elf", - "elf.R_MIPS_PJUMP": "debug/elf", - "elf.R_MIPS_REL16": "debug/elf", - "elf.R_MIPS_REL32": "debug/elf", - "elf.R_MIPS_RELGOT": "debug/elf", - "elf.R_MIPS_SCN_DISP": "debug/elf", - "elf.R_MIPS_SHIFT5": "debug/elf", - "elf.R_MIPS_SHIFT6": "debug/elf", - "elf.R_MIPS_SUB": "debug/elf", - "elf.R_MIPS_TLS_DTPMOD32": "debug/elf", - "elf.R_MIPS_TLS_DTPMOD64": "debug/elf", - "elf.R_MIPS_TLS_DTPREL32": "debug/elf", - "elf.R_MIPS_TLS_DTPREL64": "debug/elf", - "elf.R_MIPS_TLS_DTPREL_HI16": "debug/elf", - "elf.R_MIPS_TLS_DTPREL_LO16": "debug/elf", - "elf.R_MIPS_TLS_GD": "debug/elf", - "elf.R_MIPS_TLS_GOTTPREL": "debug/elf", - "elf.R_MIPS_TLS_LDM": "debug/elf", - "elf.R_MIPS_TLS_TPREL32": "debug/elf", - "elf.R_MIPS_TLS_TPREL64": "debug/elf", - "elf.R_MIPS_TLS_TPREL_HI16": "debug/elf", - "elf.R_MIPS_TLS_TPREL_LO16": "debug/elf", - "elf.R_PPC": "debug/elf", - "elf.R_PPC64": "debug/elf", - "elf.R_PPC64_ADDR14": "debug/elf", - "elf.R_PPC64_ADDR14_BRNTAKEN": "debug/elf", - "elf.R_PPC64_ADDR14_BRTAKEN": "debug/elf", - "elf.R_PPC64_ADDR16": "debug/elf", - "elf.R_PPC64_ADDR16_DS": "debug/elf", - "elf.R_PPC64_ADDR16_HA": "debug/elf", - "elf.R_PPC64_ADDR16_HI": "debug/elf", - "elf.R_PPC64_ADDR16_HIGHER": "debug/elf", - "elf.R_PPC64_ADDR16_HIGHERA": "debug/elf", - "elf.R_PPC64_ADDR16_HIGHEST": "debug/elf", - "elf.R_PPC64_ADDR16_HIGHESTA": "debug/elf", - "elf.R_PPC64_ADDR16_LO": "debug/elf", - "elf.R_PPC64_ADDR16_LO_DS": "debug/elf", - "elf.R_PPC64_ADDR24": "debug/elf", - "elf.R_PPC64_ADDR32": "debug/elf", - "elf.R_PPC64_ADDR64": "debug/elf", - "elf.R_PPC64_DTPMOD64": "debug/elf", - "elf.R_PPC64_DTPREL16": "debug/elf", - "elf.R_PPC64_DTPREL16_DS": "debug/elf", - "elf.R_PPC64_DTPREL16_HA": "debug/elf", - "elf.R_PPC64_DTPREL16_HI": "debug/elf", - "elf.R_PPC64_DTPREL16_HIGHER": "debug/elf", - "elf.R_PPC64_DTPREL16_HIGHERA": "debug/elf", - "elf.R_PPC64_DTPREL16_HIGHEST": "debug/elf", - "elf.R_PPC64_DTPREL16_HIGHESTA": "debug/elf", - "elf.R_PPC64_DTPREL16_LO": "debug/elf", - "elf.R_PPC64_DTPREL16_LO_DS": "debug/elf", - "elf.R_PPC64_DTPREL64": "debug/elf", - "elf.R_PPC64_GOT16": "debug/elf", - "elf.R_PPC64_GOT16_DS": "debug/elf", - "elf.R_PPC64_GOT16_HA": "debug/elf", - "elf.R_PPC64_GOT16_HI": "debug/elf", - "elf.R_PPC64_GOT16_LO": "debug/elf", - "elf.R_PPC64_GOT16_LO_DS": "debug/elf", - "elf.R_PPC64_GOT_DTPREL16_DS": "debug/elf", - "elf.R_PPC64_GOT_DTPREL16_HA": "debug/elf", - "elf.R_PPC64_GOT_DTPREL16_HI": "debug/elf", - "elf.R_PPC64_GOT_DTPREL16_LO_DS": "debug/elf", - "elf.R_PPC64_GOT_TLSGD16": "debug/elf", - "elf.R_PPC64_GOT_TLSGD16_HA": "debug/elf", - "elf.R_PPC64_GOT_TLSGD16_HI": "debug/elf", - "elf.R_PPC64_GOT_TLSGD16_LO": "debug/elf", - "elf.R_PPC64_GOT_TLSLD16": "debug/elf", - "elf.R_PPC64_GOT_TLSLD16_HA": "debug/elf", - "elf.R_PPC64_GOT_TLSLD16_HI": "debug/elf", - "elf.R_PPC64_GOT_TLSLD16_LO": "debug/elf", - "elf.R_PPC64_GOT_TPREL16_DS": "debug/elf", - "elf.R_PPC64_GOT_TPREL16_HA": "debug/elf", - "elf.R_PPC64_GOT_TPREL16_HI": "debug/elf", - "elf.R_PPC64_GOT_TPREL16_LO_DS": "debug/elf", - "elf.R_PPC64_JMP_SLOT": "debug/elf", - "elf.R_PPC64_NONE": "debug/elf", - "elf.R_PPC64_REL14": "debug/elf", - "elf.R_PPC64_REL14_BRNTAKEN": "debug/elf", - "elf.R_PPC64_REL14_BRTAKEN": "debug/elf", - "elf.R_PPC64_REL16": "debug/elf", - "elf.R_PPC64_REL16_HA": "debug/elf", - "elf.R_PPC64_REL16_HI": "debug/elf", - "elf.R_PPC64_REL16_LO": "debug/elf", - "elf.R_PPC64_REL24": "debug/elf", - "elf.R_PPC64_REL32": "debug/elf", - "elf.R_PPC64_REL64": "debug/elf", - "elf.R_PPC64_TLS": "debug/elf", - "elf.R_PPC64_TLSGD": "debug/elf", - "elf.R_PPC64_TLSLD": "debug/elf", - "elf.R_PPC64_TOC": "debug/elf", - "elf.R_PPC64_TOC16": "debug/elf", - "elf.R_PPC64_TOC16_DS": "debug/elf", - "elf.R_PPC64_TOC16_HA": "debug/elf", - "elf.R_PPC64_TOC16_HI": "debug/elf", - "elf.R_PPC64_TOC16_LO": "debug/elf", - "elf.R_PPC64_TOC16_LO_DS": "debug/elf", - "elf.R_PPC64_TPREL16": "debug/elf", - "elf.R_PPC64_TPREL16_DS": "debug/elf", - "elf.R_PPC64_TPREL16_HA": "debug/elf", - "elf.R_PPC64_TPREL16_HI": "debug/elf", - "elf.R_PPC64_TPREL16_HIGHER": "debug/elf", - "elf.R_PPC64_TPREL16_HIGHERA": "debug/elf", - "elf.R_PPC64_TPREL16_HIGHEST": "debug/elf", - "elf.R_PPC64_TPREL16_HIGHESTA": "debug/elf", - "elf.R_PPC64_TPREL16_LO": "debug/elf", - "elf.R_PPC64_TPREL16_LO_DS": "debug/elf", - "elf.R_PPC64_TPREL64": "debug/elf", - "elf.R_PPC_ADDR14": "debug/elf", - "elf.R_PPC_ADDR14_BRNTAKEN": "debug/elf", - "elf.R_PPC_ADDR14_BRTAKEN": "debug/elf", - "elf.R_PPC_ADDR16": "debug/elf", - "elf.R_PPC_ADDR16_HA": "debug/elf", - "elf.R_PPC_ADDR16_HI": "debug/elf", - "elf.R_PPC_ADDR16_LO": "debug/elf", - "elf.R_PPC_ADDR24": "debug/elf", - "elf.R_PPC_ADDR32": "debug/elf", - "elf.R_PPC_COPY": "debug/elf", - "elf.R_PPC_DTPMOD32": "debug/elf", - "elf.R_PPC_DTPREL16": "debug/elf", - "elf.R_PPC_DTPREL16_HA": "debug/elf", - "elf.R_PPC_DTPREL16_HI": "debug/elf", - "elf.R_PPC_DTPREL16_LO": "debug/elf", - "elf.R_PPC_DTPREL32": "debug/elf", - "elf.R_PPC_EMB_BIT_FLD": "debug/elf", - "elf.R_PPC_EMB_MRKREF": "debug/elf", - "elf.R_PPC_EMB_NADDR16": "debug/elf", - "elf.R_PPC_EMB_NADDR16_HA": "debug/elf", - "elf.R_PPC_EMB_NADDR16_HI": "debug/elf", - "elf.R_PPC_EMB_NADDR16_LO": "debug/elf", - "elf.R_PPC_EMB_NADDR32": "debug/elf", - "elf.R_PPC_EMB_RELSDA": "debug/elf", - "elf.R_PPC_EMB_RELSEC16": "debug/elf", - "elf.R_PPC_EMB_RELST_HA": "debug/elf", - "elf.R_PPC_EMB_RELST_HI": "debug/elf", - "elf.R_PPC_EMB_RELST_LO": "debug/elf", - "elf.R_PPC_EMB_SDA21": "debug/elf", - "elf.R_PPC_EMB_SDA2I16": "debug/elf", - "elf.R_PPC_EMB_SDA2REL": "debug/elf", - "elf.R_PPC_EMB_SDAI16": "debug/elf", - "elf.R_PPC_GLOB_DAT": "debug/elf", - "elf.R_PPC_GOT16": "debug/elf", - "elf.R_PPC_GOT16_HA": "debug/elf", - "elf.R_PPC_GOT16_HI": "debug/elf", - "elf.R_PPC_GOT16_LO": "debug/elf", - "elf.R_PPC_GOT_TLSGD16": "debug/elf", - "elf.R_PPC_GOT_TLSGD16_HA": "debug/elf", - "elf.R_PPC_GOT_TLSGD16_HI": "debug/elf", - "elf.R_PPC_GOT_TLSGD16_LO": "debug/elf", - "elf.R_PPC_GOT_TLSLD16": "debug/elf", - "elf.R_PPC_GOT_TLSLD16_HA": "debug/elf", - "elf.R_PPC_GOT_TLSLD16_HI": "debug/elf", - "elf.R_PPC_GOT_TLSLD16_LO": "debug/elf", - "elf.R_PPC_GOT_TPREL16": "debug/elf", - "elf.R_PPC_GOT_TPREL16_HA": "debug/elf", - "elf.R_PPC_GOT_TPREL16_HI": "debug/elf", - "elf.R_PPC_GOT_TPREL16_LO": "debug/elf", - "elf.R_PPC_JMP_SLOT": "debug/elf", - "elf.R_PPC_LOCAL24PC": "debug/elf", - "elf.R_PPC_NONE": "debug/elf", - "elf.R_PPC_PLT16_HA": "debug/elf", - "elf.R_PPC_PLT16_HI": "debug/elf", - "elf.R_PPC_PLT16_LO": "debug/elf", - "elf.R_PPC_PLT32": "debug/elf", - "elf.R_PPC_PLTREL24": "debug/elf", - "elf.R_PPC_PLTREL32": "debug/elf", - "elf.R_PPC_REL14": "debug/elf", - "elf.R_PPC_REL14_BRNTAKEN": "debug/elf", - "elf.R_PPC_REL14_BRTAKEN": "debug/elf", - "elf.R_PPC_REL24": "debug/elf", - "elf.R_PPC_REL32": "debug/elf", - "elf.R_PPC_RELATIVE": "debug/elf", - "elf.R_PPC_SDAREL16": "debug/elf", - "elf.R_PPC_SECTOFF": "debug/elf", - "elf.R_PPC_SECTOFF_HA": "debug/elf", - "elf.R_PPC_SECTOFF_HI": "debug/elf", - "elf.R_PPC_SECTOFF_LO": "debug/elf", - "elf.R_PPC_TLS": "debug/elf", - "elf.R_PPC_TPREL16": "debug/elf", - "elf.R_PPC_TPREL16_HA": "debug/elf", - "elf.R_PPC_TPREL16_HI": "debug/elf", - "elf.R_PPC_TPREL16_LO": "debug/elf", - "elf.R_PPC_TPREL32": "debug/elf", - "elf.R_PPC_UADDR16": "debug/elf", - "elf.R_PPC_UADDR32": "debug/elf", - "elf.R_SPARC": "debug/elf", - "elf.R_SPARC_10": "debug/elf", - "elf.R_SPARC_11": "debug/elf", - "elf.R_SPARC_13": "debug/elf", - "elf.R_SPARC_16": "debug/elf", - "elf.R_SPARC_22": "debug/elf", - "elf.R_SPARC_32": "debug/elf", - "elf.R_SPARC_5": "debug/elf", - "elf.R_SPARC_6": "debug/elf", - "elf.R_SPARC_64": "debug/elf", - "elf.R_SPARC_7": "debug/elf", - "elf.R_SPARC_8": "debug/elf", - "elf.R_SPARC_COPY": "debug/elf", - "elf.R_SPARC_DISP16": "debug/elf", - "elf.R_SPARC_DISP32": "debug/elf", - "elf.R_SPARC_DISP64": "debug/elf", - "elf.R_SPARC_DISP8": "debug/elf", - "elf.R_SPARC_GLOB_DAT": "debug/elf", - "elf.R_SPARC_GLOB_JMP": "debug/elf", - "elf.R_SPARC_GOT10": "debug/elf", - "elf.R_SPARC_GOT13": "debug/elf", - "elf.R_SPARC_GOT22": "debug/elf", - "elf.R_SPARC_H44": "debug/elf", - "elf.R_SPARC_HH22": "debug/elf", - "elf.R_SPARC_HI22": "debug/elf", - "elf.R_SPARC_HIPLT22": "debug/elf", - "elf.R_SPARC_HIX22": "debug/elf", - "elf.R_SPARC_HM10": "debug/elf", - "elf.R_SPARC_JMP_SLOT": "debug/elf", - "elf.R_SPARC_L44": "debug/elf", - "elf.R_SPARC_LM22": "debug/elf", - "elf.R_SPARC_LO10": "debug/elf", - "elf.R_SPARC_LOPLT10": "debug/elf", - "elf.R_SPARC_LOX10": "debug/elf", - "elf.R_SPARC_M44": "debug/elf", - "elf.R_SPARC_NONE": "debug/elf", - "elf.R_SPARC_OLO10": "debug/elf", - "elf.R_SPARC_PC10": "debug/elf", - "elf.R_SPARC_PC22": "debug/elf", - "elf.R_SPARC_PCPLT10": "debug/elf", - "elf.R_SPARC_PCPLT22": "debug/elf", - "elf.R_SPARC_PCPLT32": "debug/elf", - "elf.R_SPARC_PC_HH22": "debug/elf", - "elf.R_SPARC_PC_HM10": "debug/elf", - "elf.R_SPARC_PC_LM22": "debug/elf", - "elf.R_SPARC_PLT32": "debug/elf", - "elf.R_SPARC_PLT64": "debug/elf", - "elf.R_SPARC_REGISTER": "debug/elf", - "elf.R_SPARC_RELATIVE": "debug/elf", - "elf.R_SPARC_UA16": "debug/elf", - "elf.R_SPARC_UA32": "debug/elf", - "elf.R_SPARC_UA64": "debug/elf", - "elf.R_SPARC_WDISP16": "debug/elf", - "elf.R_SPARC_WDISP19": "debug/elf", - "elf.R_SPARC_WDISP22": "debug/elf", - "elf.R_SPARC_WDISP30": "debug/elf", - "elf.R_SPARC_WPLT30": "debug/elf", - "elf.R_SYM32": "debug/elf", - "elf.R_SYM64": "debug/elf", - "elf.R_TYPE32": "debug/elf", - "elf.R_TYPE64": "debug/elf", - "elf.R_X86_64": "debug/elf", - "elf.R_X86_64_16": "debug/elf", - "elf.R_X86_64_32": "debug/elf", - "elf.R_X86_64_32S": "debug/elf", - "elf.R_X86_64_64": "debug/elf", - "elf.R_X86_64_8": "debug/elf", - "elf.R_X86_64_COPY": "debug/elf", - "elf.R_X86_64_DTPMOD64": "debug/elf", - "elf.R_X86_64_DTPOFF32": "debug/elf", - "elf.R_X86_64_DTPOFF64": "debug/elf", - "elf.R_X86_64_GLOB_DAT": "debug/elf", - "elf.R_X86_64_GOT32": "debug/elf", - "elf.R_X86_64_GOTPCREL": "debug/elf", - "elf.R_X86_64_GOTTPOFF": "debug/elf", - "elf.R_X86_64_JMP_SLOT": "debug/elf", - "elf.R_X86_64_NONE": "debug/elf", - "elf.R_X86_64_PC16": "debug/elf", - "elf.R_X86_64_PC32": "debug/elf", - "elf.R_X86_64_PC8": "debug/elf", - "elf.R_X86_64_PLT32": "debug/elf", - "elf.R_X86_64_RELATIVE": "debug/elf", - "elf.R_X86_64_TLSGD": "debug/elf", - "elf.R_X86_64_TLSLD": "debug/elf", - "elf.R_X86_64_TPOFF32": "debug/elf", - "elf.R_X86_64_TPOFF64": "debug/elf", - "elf.Rel32": "debug/elf", - "elf.Rel64": "debug/elf", - "elf.Rela32": "debug/elf", - "elf.Rela64": "debug/elf", - "elf.SHF_ALLOC": "debug/elf", - "elf.SHF_COMPRESSED": "debug/elf", - "elf.SHF_EXECINSTR": "debug/elf", - "elf.SHF_GROUP": "debug/elf", - "elf.SHF_INFO_LINK": "debug/elf", - "elf.SHF_LINK_ORDER": "debug/elf", - "elf.SHF_MASKOS": "debug/elf", - "elf.SHF_MASKPROC": "debug/elf", - "elf.SHF_MERGE": "debug/elf", - "elf.SHF_OS_NONCONFORMING": "debug/elf", - "elf.SHF_STRINGS": "debug/elf", - "elf.SHF_TLS": "debug/elf", - "elf.SHF_WRITE": "debug/elf", - "elf.SHN_ABS": "debug/elf", - "elf.SHN_COMMON": "debug/elf", - "elf.SHN_HIOS": "debug/elf", - "elf.SHN_HIPROC": "debug/elf", - "elf.SHN_HIRESERVE": "debug/elf", - "elf.SHN_LOOS": "debug/elf", - "elf.SHN_LOPROC": "debug/elf", - "elf.SHN_LORESERVE": "debug/elf", - "elf.SHN_UNDEF": "debug/elf", - "elf.SHN_XINDEX": "debug/elf", - "elf.SHT_DYNAMIC": "debug/elf", - "elf.SHT_DYNSYM": "debug/elf", - "elf.SHT_FINI_ARRAY": "debug/elf", - "elf.SHT_GNU_ATTRIBUTES": "debug/elf", - "elf.SHT_GNU_HASH": "debug/elf", - "elf.SHT_GNU_LIBLIST": "debug/elf", - "elf.SHT_GNU_VERDEF": "debug/elf", - "elf.SHT_GNU_VERNEED": "debug/elf", - "elf.SHT_GNU_VERSYM": "debug/elf", - "elf.SHT_GROUP": "debug/elf", - "elf.SHT_HASH": "debug/elf", - "elf.SHT_HIOS": "debug/elf", - "elf.SHT_HIPROC": "debug/elf", - "elf.SHT_HIUSER": "debug/elf", - "elf.SHT_INIT_ARRAY": "debug/elf", - "elf.SHT_LOOS": "debug/elf", - "elf.SHT_LOPROC": "debug/elf", - "elf.SHT_LOUSER": "debug/elf", - "elf.SHT_NOBITS": "debug/elf", - "elf.SHT_NOTE": "debug/elf", - "elf.SHT_NULL": "debug/elf", - "elf.SHT_PREINIT_ARRAY": "debug/elf", - "elf.SHT_PROGBITS": "debug/elf", - "elf.SHT_REL": "debug/elf", - "elf.SHT_RELA": "debug/elf", - "elf.SHT_SHLIB": "debug/elf", - "elf.SHT_STRTAB": "debug/elf", - "elf.SHT_SYMTAB": "debug/elf", - "elf.SHT_SYMTAB_SHNDX": "debug/elf", - "elf.STB_GLOBAL": "debug/elf", - "elf.STB_HIOS": "debug/elf", - "elf.STB_HIPROC": "debug/elf", - "elf.STB_LOCAL": "debug/elf", - "elf.STB_LOOS": "debug/elf", - "elf.STB_LOPROC": "debug/elf", - "elf.STB_WEAK": "debug/elf", - "elf.STT_COMMON": "debug/elf", - "elf.STT_FILE": "debug/elf", - "elf.STT_FUNC": "debug/elf", - "elf.STT_HIOS": "debug/elf", - "elf.STT_HIPROC": "debug/elf", - "elf.STT_LOOS": "debug/elf", - "elf.STT_LOPROC": "debug/elf", - "elf.STT_NOTYPE": "debug/elf", - "elf.STT_OBJECT": "debug/elf", - "elf.STT_SECTION": "debug/elf", - "elf.STT_TLS": "debug/elf", - "elf.STV_DEFAULT": "debug/elf", - "elf.STV_HIDDEN": "debug/elf", - "elf.STV_INTERNAL": "debug/elf", - "elf.STV_PROTECTED": "debug/elf", - "elf.ST_BIND": "debug/elf", - "elf.ST_INFO": "debug/elf", - "elf.ST_TYPE": "debug/elf", - "elf.ST_VISIBILITY": "debug/elf", - "elf.Section": "debug/elf", - "elf.Section32": "debug/elf", - "elf.Section64": "debug/elf", - "elf.SectionFlag": "debug/elf", - "elf.SectionHeader": "debug/elf", - "elf.SectionIndex": "debug/elf", - "elf.SectionType": "debug/elf", - "elf.Sym32": "debug/elf", - "elf.Sym32Size": "debug/elf", - "elf.Sym64": "debug/elf", - "elf.Sym64Size": "debug/elf", - "elf.SymBind": "debug/elf", - "elf.SymType": "debug/elf", - "elf.SymVis": "debug/elf", - "elf.Symbol": "debug/elf", - "elf.Type": "debug/elf", - "elf.Version": "debug/elf", - "elliptic.Curve": "crypto/elliptic", - "elliptic.CurveParams": "crypto/elliptic", - "elliptic.GenerateKey": "crypto/elliptic", - "elliptic.Marshal": "crypto/elliptic", - "elliptic.P224": "crypto/elliptic", - "elliptic.P256": "crypto/elliptic", - "elliptic.P384": "crypto/elliptic", - "elliptic.P521": "crypto/elliptic", - "elliptic.Unmarshal": "crypto/elliptic", - "encoding.BinaryMarshaler": "encoding", - "encoding.BinaryUnmarshaler": "encoding", - "encoding.TextMarshaler": "encoding", - "encoding.TextUnmarshaler": "encoding", - "errors.New": "errors", - "exec.Cmd": "os/exec", - "exec.Command": "os/exec", - "exec.CommandContext": "os/exec", - "exec.ErrNotFound": "os/exec", - "exec.Error": "os/exec", - "exec.ExitError": "os/exec", - "exec.LookPath": "os/exec", - "expvar.Do": "expvar", - "expvar.Float": "expvar", - "expvar.Func": "expvar", - "expvar.Get": "expvar", - "expvar.Handler": "expvar", - "expvar.Int": "expvar", - "expvar.KeyValue": "expvar", - "expvar.Map": "expvar", - "expvar.NewFloat": "expvar", - "expvar.NewInt": "expvar", - "expvar.NewMap": "expvar", - "expvar.NewString": "expvar", - "expvar.Publish": "expvar", - "expvar.String": "expvar", - "expvar.Var": "expvar", - "fcgi.ErrConnClosed": "net/http/fcgi", - "fcgi.ErrRequestAborted": "net/http/fcgi", - "fcgi.ProcessEnv": "net/http/fcgi", - "fcgi.Serve": "net/http/fcgi", - "filepath.Abs": "path/filepath", - "filepath.Base": "path/filepath", - "filepath.Clean": "path/filepath", - "filepath.Dir": "path/filepath", - "filepath.ErrBadPattern": "path/filepath", - "filepath.EvalSymlinks": "path/filepath", - "filepath.Ext": "path/filepath", - "filepath.FromSlash": "path/filepath", - "filepath.Glob": "path/filepath", - "filepath.HasPrefix": "path/filepath", - "filepath.IsAbs": "path/filepath", - "filepath.Join": "path/filepath", - "filepath.ListSeparator": "path/filepath", - "filepath.Match": "path/filepath", - "filepath.Rel": "path/filepath", - "filepath.Separator": "path/filepath", - "filepath.SkipDir": "path/filepath", - "filepath.Split": "path/filepath", - "filepath.SplitList": "path/filepath", - "filepath.ToSlash": "path/filepath", - "filepath.VolumeName": "path/filepath", - "filepath.Walk": "path/filepath", - "filepath.WalkFunc": "path/filepath", - "flag.Arg": "flag", - "flag.Args": "flag", - "flag.Bool": "flag", - "flag.BoolVar": "flag", - "flag.CommandLine": "flag", - "flag.ContinueOnError": "flag", - "flag.Duration": "flag", - "flag.DurationVar": "flag", - "flag.ErrHelp": "flag", - "flag.ErrorHandling": "flag", - "flag.ExitOnError": "flag", - "flag.Flag": "flag", - "flag.FlagSet": "flag", - "flag.Float64": "flag", - "flag.Float64Var": "flag", - "flag.Getter": "flag", - "flag.Int": "flag", - "flag.Int64": "flag", - "flag.Int64Var": "flag", - "flag.IntVar": "flag", - "flag.Lookup": "flag", - "flag.NArg": "flag", - "flag.NFlag": "flag", - "flag.NewFlagSet": "flag", - "flag.PanicOnError": "flag", - "flag.Parse": "flag", - "flag.Parsed": "flag", - "flag.PrintDefaults": "flag", - "flag.Set": "flag", - "flag.String": "flag", - "flag.StringVar": "flag", - "flag.Uint": "flag", - "flag.Uint64": "flag", - "flag.Uint64Var": "flag", - "flag.UintVar": "flag", - "flag.UnquoteUsage": "flag", - "flag.Usage": "flag", - "flag.Value": "flag", - "flag.Var": "flag", - "flag.Visit": "flag", - "flag.VisitAll": "flag", - "flate.BestCompression": "compress/flate", - "flate.BestSpeed": "compress/flate", - "flate.CorruptInputError": "compress/flate", - "flate.DefaultCompression": "compress/flate", - "flate.HuffmanOnly": "compress/flate", - "flate.InternalError": "compress/flate", - "flate.NewReader": "compress/flate", - "flate.NewReaderDict": "compress/flate", - "flate.NewWriter": "compress/flate", - "flate.NewWriterDict": "compress/flate", - "flate.NoCompression": "compress/flate", - "flate.ReadError": "compress/flate", - "flate.Reader": "compress/flate", - "flate.Resetter": "compress/flate", - "flate.WriteError": "compress/flate", - "flate.Writer": "compress/flate", - "fmt.Errorf": "fmt", - "fmt.Formatter": "fmt", - "fmt.Fprint": "fmt", - "fmt.Fprintf": "fmt", - "fmt.Fprintln": "fmt", - "fmt.Fscan": "fmt", - "fmt.Fscanf": "fmt", - "fmt.Fscanln": "fmt", - "fmt.GoStringer": "fmt", - "fmt.Print": "fmt", - "fmt.Printf": "fmt", - "fmt.Println": "fmt", - "fmt.Scan": "fmt", - "fmt.ScanState": "fmt", - "fmt.Scanf": "fmt", - "fmt.Scanln": "fmt", - "fmt.Scanner": "fmt", - "fmt.Sprint": "fmt", - "fmt.Sprintf": "fmt", - "fmt.Sprintln": "fmt", - "fmt.Sscan": "fmt", - "fmt.Sscanf": "fmt", - "fmt.Sscanln": "fmt", - "fmt.State": "fmt", - "fmt.Stringer": "fmt", - "fnv.New128": "hash/fnv", - "fnv.New128a": "hash/fnv", - "fnv.New32": "hash/fnv", - "fnv.New32a": "hash/fnv", - "fnv.New64": "hash/fnv", - "fnv.New64a": "hash/fnv", - "format.Node": "go/format", - "format.Source": "go/format", - "gif.Decode": "image/gif", - "gif.DecodeAll": "image/gif", - "gif.DecodeConfig": "image/gif", - "gif.DisposalBackground": "image/gif", - "gif.DisposalNone": "image/gif", - "gif.DisposalPrevious": "image/gif", - "gif.Encode": "image/gif", - "gif.EncodeAll": "image/gif", - "gif.GIF": "image/gif", - "gif.Options": "image/gif", - "gob.CommonType": "encoding/gob", - "gob.Decoder": "encoding/gob", - "gob.Encoder": "encoding/gob", - "gob.GobDecoder": "encoding/gob", - "gob.GobEncoder": "encoding/gob", - "gob.NewDecoder": "encoding/gob", - "gob.NewEncoder": "encoding/gob", - "gob.Register": "encoding/gob", - "gob.RegisterName": "encoding/gob", - "gosym.DecodingError": "debug/gosym", - "gosym.Func": "debug/gosym", - "gosym.LineTable": "debug/gosym", - "gosym.NewLineTable": "debug/gosym", - "gosym.NewTable": "debug/gosym", - "gosym.Obj": "debug/gosym", - "gosym.Sym": "debug/gosym", - "gosym.Table": "debug/gosym", - "gosym.UnknownFileError": "debug/gosym", - "gosym.UnknownLineError": "debug/gosym", - "gzip.BestCompression": "compress/gzip", - "gzip.BestSpeed": "compress/gzip", - "gzip.DefaultCompression": "compress/gzip", - "gzip.ErrChecksum": "compress/gzip", - "gzip.ErrHeader": "compress/gzip", - "gzip.Header": "compress/gzip", - "gzip.HuffmanOnly": "compress/gzip", - "gzip.NewReader": "compress/gzip", - "gzip.NewWriter": "compress/gzip", - "gzip.NewWriterLevel": "compress/gzip", - "gzip.NoCompression": "compress/gzip", - "gzip.Reader": "compress/gzip", - "gzip.Writer": "compress/gzip", - "hash.Hash": "hash", - "hash.Hash32": "hash", - "hash.Hash64": "hash", - "heap.Fix": "container/heap", - "heap.Init": "container/heap", - "heap.Interface": "container/heap", - "heap.Pop": "container/heap", - "heap.Push": "container/heap", - "heap.Remove": "container/heap", - "hex.Decode": "encoding/hex", - "hex.DecodeString": "encoding/hex", - "hex.DecodedLen": "encoding/hex", - "hex.Dump": "encoding/hex", - "hex.Dumper": "encoding/hex", - "hex.Encode": "encoding/hex", - "hex.EncodeToString": "encoding/hex", - "hex.EncodedLen": "encoding/hex", - "hex.ErrLength": "encoding/hex", - "hex.InvalidByteError": "encoding/hex", - "hmac.Equal": "crypto/hmac", - "hmac.New": "crypto/hmac", - "html.EscapeString": "html", - "html.UnescapeString": "html", - "http.CanonicalHeaderKey": "net/http", - "http.Client": "net/http", - "http.CloseNotifier": "net/http", - "http.ConnState": "net/http", - "http.Cookie": "net/http", - "http.CookieJar": "net/http", - "http.DefaultClient": "net/http", - "http.DefaultMaxHeaderBytes": "net/http", - "http.DefaultMaxIdleConnsPerHost": "net/http", - "http.DefaultServeMux": "net/http", - "http.DefaultTransport": "net/http", - "http.DetectContentType": "net/http", - "http.Dir": "net/http", - "http.ErrAbortHandler": "net/http", - "http.ErrBodyNotAllowed": "net/http", - "http.ErrBodyReadAfterClose": "net/http", - "http.ErrContentLength": "net/http", - "http.ErrHandlerTimeout": "net/http", - "http.ErrHeaderTooLong": "net/http", - "http.ErrHijacked": "net/http", - "http.ErrLineTooLong": "net/http", - "http.ErrMissingBoundary": "net/http", - "http.ErrMissingContentLength": "net/http", - "http.ErrMissingFile": "net/http", - "http.ErrNoCookie": "net/http", - "http.ErrNoLocation": "net/http", - "http.ErrNotMultipart": "net/http", - "http.ErrNotSupported": "net/http", - "http.ErrServerClosed": "net/http", - "http.ErrShortBody": "net/http", - "http.ErrSkipAltProtocol": "net/http", - "http.ErrUnexpectedTrailer": "net/http", - "http.ErrUseLastResponse": "net/http", - "http.ErrWriteAfterFlush": "net/http", - "http.Error": "net/http", - "http.File": "net/http", - "http.FileServer": "net/http", - "http.FileSystem": "net/http", - "http.Flusher": "net/http", - "http.Get": "net/http", - "http.Handle": "net/http", - "http.HandleFunc": "net/http", - "http.Handler": "net/http", - "http.HandlerFunc": "net/http", - "http.Head": "net/http", - "http.Header": "net/http", - "http.Hijacker": "net/http", - "http.ListenAndServe": "net/http", - "http.ListenAndServeTLS": "net/http", - "http.LocalAddrContextKey": "net/http", - "http.MaxBytesReader": "net/http", - "http.MethodConnect": "net/http", - "http.MethodDelete": "net/http", - "http.MethodGet": "net/http", - "http.MethodHead": "net/http", - "http.MethodOptions": "net/http", - "http.MethodPatch": "net/http", - "http.MethodPost": "net/http", - "http.MethodPut": "net/http", - "http.MethodTrace": "net/http", - "http.NewFileTransport": "net/http", - "http.NewRequest": "net/http", - "http.NewServeMux": "net/http", - "http.NoBody": "net/http", - "http.NotFound": "net/http", - "http.NotFoundHandler": "net/http", - "http.ParseHTTPVersion": "net/http", - "http.ParseTime": "net/http", - "http.Post": "net/http", - "http.PostForm": "net/http", - "http.ProtocolError": "net/http", - "http.ProxyFromEnvironment": "net/http", - "http.ProxyURL": "net/http", - "http.PushOptions": "net/http", - "http.Pusher": "net/http", - "http.ReadRequest": "net/http", - "http.ReadResponse": "net/http", - "http.Redirect": "net/http", - "http.RedirectHandler": "net/http", - "http.Request": "net/http", - "http.Response": "net/http", - "http.ResponseWriter": "net/http", - "http.RoundTripper": "net/http", - "http.Serve": "net/http", - "http.ServeContent": "net/http", - "http.ServeFile": "net/http", - "http.ServeMux": "net/http", - "http.ServeTLS": "net/http", - "http.Server": "net/http", - "http.ServerContextKey": "net/http", - "http.SetCookie": "net/http", - "http.StateActive": "net/http", - "http.StateClosed": "net/http", - "http.StateHijacked": "net/http", - "http.StateIdle": "net/http", - "http.StateNew": "net/http", - "http.StatusAccepted": "net/http", - "http.StatusAlreadyReported": "net/http", - "http.StatusBadGateway": "net/http", - "http.StatusBadRequest": "net/http", - "http.StatusConflict": "net/http", - "http.StatusContinue": "net/http", - "http.StatusCreated": "net/http", - "http.StatusExpectationFailed": "net/http", - "http.StatusFailedDependency": "net/http", - "http.StatusForbidden": "net/http", - "http.StatusFound": "net/http", - "http.StatusGatewayTimeout": "net/http", - "http.StatusGone": "net/http", - "http.StatusHTTPVersionNotSupported": "net/http", - "http.StatusIMUsed": "net/http", - "http.StatusInsufficientStorage": "net/http", - "http.StatusInternalServerError": "net/http", - "http.StatusLengthRequired": "net/http", - "http.StatusLocked": "net/http", - "http.StatusLoopDetected": "net/http", - "http.StatusMethodNotAllowed": "net/http", - "http.StatusMovedPermanently": "net/http", - "http.StatusMultiStatus": "net/http", - "http.StatusMultipleChoices": "net/http", - "http.StatusNetworkAuthenticationRequired": "net/http", - "http.StatusNoContent": "net/http", - "http.StatusNonAuthoritativeInfo": "net/http", - "http.StatusNotAcceptable": "net/http", - "http.StatusNotExtended": "net/http", - "http.StatusNotFound": "net/http", - "http.StatusNotImplemented": "net/http", - "http.StatusNotModified": "net/http", - "http.StatusOK": "net/http", - "http.StatusPartialContent": "net/http", - "http.StatusPaymentRequired": "net/http", - "http.StatusPermanentRedirect": "net/http", - "http.StatusPreconditionFailed": "net/http", - "http.StatusPreconditionRequired": "net/http", - "http.StatusProcessing": "net/http", - "http.StatusProxyAuthRequired": "net/http", - "http.StatusRequestEntityTooLarge": "net/http", - "http.StatusRequestHeaderFieldsTooLarge": "net/http", - "http.StatusRequestTimeout": "net/http", - "http.StatusRequestURITooLong": "net/http", - "http.StatusRequestedRangeNotSatisfiable": "net/http", - "http.StatusResetContent": "net/http", - "http.StatusSeeOther": "net/http", - "http.StatusServiceUnavailable": "net/http", - "http.StatusSwitchingProtocols": "net/http", - "http.StatusTeapot": "net/http", - "http.StatusTemporaryRedirect": "net/http", - "http.StatusText": "net/http", - "http.StatusTooManyRequests": "net/http", - "http.StatusUnauthorized": "net/http", - "http.StatusUnavailableForLegalReasons": "net/http", - "http.StatusUnprocessableEntity": "net/http", - "http.StatusUnsupportedMediaType": "net/http", - "http.StatusUpgradeRequired": "net/http", - "http.StatusUseProxy": "net/http", - "http.StatusVariantAlsoNegotiates": "net/http", - "http.StripPrefix": "net/http", - "http.TimeFormat": "net/http", - "http.TimeoutHandler": "net/http", - "http.TrailerPrefix": "net/http", - "http.Transport": "net/http", - "httptest.DefaultRemoteAddr": "net/http/httptest", - "httptest.NewRecorder": "net/http/httptest", - "httptest.NewRequest": "net/http/httptest", - "httptest.NewServer": "net/http/httptest", - "httptest.NewTLSServer": "net/http/httptest", - "httptest.NewUnstartedServer": "net/http/httptest", - "httptest.ResponseRecorder": "net/http/httptest", - "httptest.Server": "net/http/httptest", - "httptrace.ClientTrace": "net/http/httptrace", - "httptrace.ContextClientTrace": "net/http/httptrace", - "httptrace.DNSDoneInfo": "net/http/httptrace", - "httptrace.DNSStartInfo": "net/http/httptrace", - "httptrace.GotConnInfo": "net/http/httptrace", - "httptrace.WithClientTrace": "net/http/httptrace", - "httptrace.WroteRequestInfo": "net/http/httptrace", - "httputil.BufferPool": "net/http/httputil", - "httputil.ClientConn": "net/http/httputil", - "httputil.DumpRequest": "net/http/httputil", - "httputil.DumpRequestOut": "net/http/httputil", - "httputil.DumpResponse": "net/http/httputil", - "httputil.ErrClosed": "net/http/httputil", - "httputil.ErrLineTooLong": "net/http/httputil", - "httputil.ErrPersistEOF": "net/http/httputil", - "httputil.ErrPipeline": "net/http/httputil", - "httputil.NewChunkedReader": "net/http/httputil", - "httputil.NewChunkedWriter": "net/http/httputil", - "httputil.NewClientConn": "net/http/httputil", - "httputil.NewProxyClientConn": "net/http/httputil", - "httputil.NewServerConn": "net/http/httputil", - "httputil.NewSingleHostReverseProxy": "net/http/httputil", - "httputil.ReverseProxy": "net/http/httputil", - "httputil.ServerConn": "net/http/httputil", - "image.Alpha": "image", - "image.Alpha16": "image", - "image.Black": "image", - "image.CMYK": "image", - "image.Config": "image", - "image.Decode": "image", - "image.DecodeConfig": "image", - "image.ErrFormat": "image", - "image.Gray": "image", - "image.Gray16": "image", - "image.Image": "image", - "image.NRGBA": "image", - "image.NRGBA64": "image", - "image.NYCbCrA": "image", - "image.NewAlpha": "image", - "image.NewAlpha16": "image", - "image.NewCMYK": "image", - "image.NewGray": "image", - "image.NewGray16": "image", - "image.NewNRGBA": "image", - "image.NewNRGBA64": "image", - "image.NewNYCbCrA": "image", - "image.NewPaletted": "image", - "image.NewRGBA": "image", - "image.NewRGBA64": "image", - "image.NewUniform": "image", - "image.NewYCbCr": "image", - "image.Opaque": "image", - "image.Paletted": "image", - "image.PalettedImage": "image", - "image.Point": "image", - "image.Pt": "image", - "image.RGBA": "image", - "image.RGBA64": "image", - "image.Rect": "image", - "image.Rectangle": "image", - "image.RegisterFormat": "image", - "image.Transparent": "image", - "image.Uniform": "image", - "image.White": "image", - "image.YCbCr": "image", - "image.YCbCrSubsampleRatio": "image", - "image.YCbCrSubsampleRatio410": "image", - "image.YCbCrSubsampleRatio411": "image", - "image.YCbCrSubsampleRatio420": "image", - "image.YCbCrSubsampleRatio422": "image", - "image.YCbCrSubsampleRatio440": "image", - "image.YCbCrSubsampleRatio444": "image", - "image.ZP": "image", - "image.ZR": "image", - "importer.Default": "go/importer", - "importer.For": "go/importer", - "importer.Lookup": "go/importer", - "io.ByteReader": "io", - "io.ByteScanner": "io", - "io.ByteWriter": "io", - "io.Closer": "io", - "io.Copy": "io", - "io.CopyBuffer": "io", - "io.CopyN": "io", - "io.EOF": "io", - "io.ErrClosedPipe": "io", - "io.ErrNoProgress": "io", - "io.ErrShortBuffer": "io", - "io.ErrShortWrite": "io", - "io.ErrUnexpectedEOF": "io", - "io.LimitReader": "io", - "io.LimitedReader": "io", - "io.MultiReader": "io", - "io.MultiWriter": "io", - "io.NewSectionReader": "io", - "io.Pipe": "io", - "io.PipeReader": "io", - "io.PipeWriter": "io", - "io.ReadAtLeast": "io", - "io.ReadCloser": "io", - "io.ReadFull": "io", - "io.ReadSeeker": "io", - "io.ReadWriteCloser": "io", - "io.ReadWriteSeeker": "io", - "io.ReadWriter": "io", - "io.Reader": "io", - "io.ReaderAt": "io", - "io.ReaderFrom": "io", - "io.RuneReader": "io", - "io.RuneScanner": "io", - "io.SectionReader": "io", - "io.SeekCurrent": "io", - "io.SeekEnd": "io", - "io.SeekStart": "io", - "io.Seeker": "io", - "io.TeeReader": "io", - "io.WriteCloser": "io", - "io.WriteSeeker": "io", - "io.WriteString": "io", - "io.Writer": "io", - "io.WriterAt": "io", - "io.WriterTo": "io", - "iotest.DataErrReader": "testing/iotest", - "iotest.ErrTimeout": "testing/iotest", - "iotest.HalfReader": "testing/iotest", - "iotest.NewReadLogger": "testing/iotest", - "iotest.NewWriteLogger": "testing/iotest", - "iotest.OneByteReader": "testing/iotest", - "iotest.TimeoutReader": "testing/iotest", - "iotest.TruncateWriter": "testing/iotest", - "ioutil.Discard": "io/ioutil", - "ioutil.NopCloser": "io/ioutil", - "ioutil.ReadAll": "io/ioutil", - "ioutil.ReadDir": "io/ioutil", - "ioutil.ReadFile": "io/ioutil", - "ioutil.TempDir": "io/ioutil", - "ioutil.TempFile": "io/ioutil", - "ioutil.WriteFile": "io/ioutil", - "jpeg.Decode": "image/jpeg", - "jpeg.DecodeConfig": "image/jpeg", - "jpeg.DefaultQuality": "image/jpeg", - "jpeg.Encode": "image/jpeg", - "jpeg.FormatError": "image/jpeg", - "jpeg.Options": "image/jpeg", - "jpeg.Reader": "image/jpeg", - "jpeg.UnsupportedError": "image/jpeg", - "json.Compact": "encoding/json", - "json.Decoder": "encoding/json", - "json.Delim": "encoding/json", - "json.Encoder": "encoding/json", - "json.HTMLEscape": "encoding/json", - "json.Indent": "encoding/json", - "json.InvalidUTF8Error": "encoding/json", - "json.InvalidUnmarshalError": "encoding/json", - "json.Marshal": "encoding/json", - "json.MarshalIndent": "encoding/json", - "json.Marshaler": "encoding/json", - "json.MarshalerError": "encoding/json", - "json.NewDecoder": "encoding/json", - "json.NewEncoder": "encoding/json", - "json.Number": "encoding/json", - "json.RawMessage": "encoding/json", - "json.SyntaxError": "encoding/json", - "json.Token": "encoding/json", - "json.Unmarshal": "encoding/json", - "json.UnmarshalFieldError": "encoding/json", - "json.UnmarshalTypeError": "encoding/json", - "json.Unmarshaler": "encoding/json", - "json.UnsupportedTypeError": "encoding/json", - "json.UnsupportedValueError": "encoding/json", - "json.Valid": "encoding/json", - "jsonrpc.Dial": "net/rpc/jsonrpc", - "jsonrpc.NewClient": "net/rpc/jsonrpc", - "jsonrpc.NewClientCodec": "net/rpc/jsonrpc", - "jsonrpc.NewServerCodec": "net/rpc/jsonrpc", - "jsonrpc.ServeConn": "net/rpc/jsonrpc", - "list.Element": "container/list", - "list.List": "container/list", - "list.New": "container/list", - "log.Fatal": "log", - "log.Fatalf": "log", - "log.Fatalln": "log", - "log.Flags": "log", - "log.LUTC": "log", - "log.Ldate": "log", - "log.Llongfile": "log", - "log.Lmicroseconds": "log", - "log.Logger": "log", - "log.Lshortfile": "log", - "log.LstdFlags": "log", - "log.Ltime": "log", - "log.New": "log", - "log.Output": "log", - "log.Panic": "log", - "log.Panicf": "log", - "log.Panicln": "log", - "log.Prefix": "log", - "log.Print": "log", - "log.Printf": "log", - "log.Println": "log", - "log.SetFlags": "log", - "log.SetOutput": "log", - "log.SetPrefix": "log", - "lzw.LSB": "compress/lzw", - "lzw.MSB": "compress/lzw", - "lzw.NewReader": "compress/lzw", - "lzw.NewWriter": "compress/lzw", - "lzw.Order": "compress/lzw", - "macho.Cpu": "debug/macho", - "macho.Cpu386": "debug/macho", - "macho.CpuAmd64": "debug/macho", - "macho.CpuArm": "debug/macho", - "macho.CpuPpc": "debug/macho", - "macho.CpuPpc64": "debug/macho", - "macho.Dylib": "debug/macho", - "macho.DylibCmd": "debug/macho", - "macho.Dysymtab": "debug/macho", - "macho.DysymtabCmd": "debug/macho", - "macho.ErrNotFat": "debug/macho", - "macho.FatArch": "debug/macho", - "macho.FatArchHeader": "debug/macho", - "macho.FatFile": "debug/macho", - "macho.File": "debug/macho", - "macho.FileHeader": "debug/macho", - "macho.FormatError": "debug/macho", - "macho.Load": "debug/macho", - "macho.LoadBytes": "debug/macho", - "macho.LoadCmd": "debug/macho", - "macho.LoadCmdDylib": "debug/macho", - "macho.LoadCmdDylinker": "debug/macho", - "macho.LoadCmdDysymtab": "debug/macho", - "macho.LoadCmdSegment": "debug/macho", - "macho.LoadCmdSegment64": "debug/macho", - "macho.LoadCmdSymtab": "debug/macho", - "macho.LoadCmdThread": "debug/macho", - "macho.LoadCmdUnixThread": "debug/macho", - "macho.Magic32": "debug/macho", - "macho.Magic64": "debug/macho", - "macho.MagicFat": "debug/macho", - "macho.NewFatFile": "debug/macho", - "macho.NewFile": "debug/macho", - "macho.Nlist32": "debug/macho", - "macho.Nlist64": "debug/macho", - "macho.Open": "debug/macho", - "macho.OpenFat": "debug/macho", - "macho.Regs386": "debug/macho", - "macho.RegsAMD64": "debug/macho", - "macho.Section": "debug/macho", - "macho.Section32": "debug/macho", - "macho.Section64": "debug/macho", - "macho.SectionHeader": "debug/macho", - "macho.Segment": "debug/macho", - "macho.Segment32": "debug/macho", - "macho.Segment64": "debug/macho", - "macho.SegmentHeader": "debug/macho", - "macho.Symbol": "debug/macho", - "macho.Symtab": "debug/macho", - "macho.SymtabCmd": "debug/macho", - "macho.Thread": "debug/macho", - "macho.Type": "debug/macho", - "macho.TypeBundle": "debug/macho", - "macho.TypeDylib": "debug/macho", - "macho.TypeExec": "debug/macho", - "macho.TypeObj": "debug/macho", - "mail.Address": "net/mail", - "mail.AddressParser": "net/mail", - "mail.ErrHeaderNotPresent": "net/mail", - "mail.Header": "net/mail", - "mail.Message": "net/mail", - "mail.ParseAddress": "net/mail", - "mail.ParseAddressList": "net/mail", - "mail.ParseDate": "net/mail", - "mail.ReadMessage": "net/mail", - "math.Abs": "math", - "math.Acos": "math", - "math.Acosh": "math", - "math.Asin": "math", - "math.Asinh": "math", - "math.Atan": "math", - "math.Atan2": "math", - "math.Atanh": "math", - "math.Cbrt": "math", - "math.Ceil": "math", - "math.Copysign": "math", - "math.Cos": "math", - "math.Cosh": "math", - "math.Dim": "math", - "math.E": "math", - "math.Erf": "math", - "math.Erfc": "math", - "math.Exp": "math", - "math.Exp2": "math", - "math.Expm1": "math", - "math.Float32bits": "math", - "math.Float32frombits": "math", - "math.Float64bits": "math", - "math.Float64frombits": "math", - "math.Floor": "math", - "math.Frexp": "math", - "math.Gamma": "math", - "math.Hypot": "math", - "math.Ilogb": "math", - "math.Inf": "math", - "math.IsInf": "math", - "math.IsNaN": "math", - "math.J0": "math", - "math.J1": "math", - "math.Jn": "math", - "math.Ldexp": "math", - "math.Lgamma": "math", - "math.Ln10": "math", - "math.Ln2": "math", - "math.Log": "math", - "math.Log10": "math", - "math.Log10E": "math", - "math.Log1p": "math", - "math.Log2": "math", - "math.Log2E": "math", - "math.Logb": "math", - "math.Max": "math", - "math.MaxFloat32": "math", - "math.MaxFloat64": "math", - "math.MaxInt16": "math", - "math.MaxInt32": "math", - "math.MaxInt64": "math", - "math.MaxInt8": "math", - "math.MaxUint16": "math", - "math.MaxUint32": "math", - "math.MaxUint64": "math", - "math.MaxUint8": "math", - "math.Min": "math", - "math.MinInt16": "math", - "math.MinInt32": "math", - "math.MinInt64": "math", - "math.MinInt8": "math", - "math.Mod": "math", - "math.Modf": "math", - "math.NaN": "math", - "math.Nextafter": "math", - "math.Nextafter32": "math", - "math.Phi": "math", - "math.Pi": "math", - "math.Pow": "math", - "math.Pow10": "math", - "math.Remainder": "math", - "math.Signbit": "math", - "math.Sin": "math", - "math.Sincos": "math", - "math.Sinh": "math", - "math.SmallestNonzeroFloat32": "math", - "math.SmallestNonzeroFloat64": "math", - "math.Sqrt": "math", - "math.Sqrt2": "math", - "math.SqrtE": "math", - "math.SqrtPhi": "math", - "math.SqrtPi": "math", - "math.Tan": "math", - "math.Tanh": "math", - "math.Trunc": "math", - "math.Y0": "math", - "math.Y1": "math", - "math.Yn": "math", - "md5.BlockSize": "crypto/md5", - "md5.New": "crypto/md5", - "md5.Size": "crypto/md5", - "md5.Sum": "crypto/md5", - "mime.AddExtensionType": "mime", - "mime.BEncoding": "mime", - "mime.ErrInvalidMediaParameter": "mime", - "mime.ExtensionsByType": "mime", - "mime.FormatMediaType": "mime", - "mime.ParseMediaType": "mime", - "mime.QEncoding": "mime", - "mime.TypeByExtension": "mime", - "mime.WordDecoder": "mime", - "mime.WordEncoder": "mime", - "multipart.ErrMessageTooLarge": "mime/multipart", - "multipart.File": "mime/multipart", - "multipart.FileHeader": "mime/multipart", - "multipart.Form": "mime/multipart", - "multipart.NewReader": "mime/multipart", - "multipart.NewWriter": "mime/multipart", - "multipart.Part": "mime/multipart", - "multipart.Reader": "mime/multipart", - "multipart.Writer": "mime/multipart", - "net.Addr": "net", - "net.AddrError": "net", - "net.Buffers": "net", - "net.CIDRMask": "net", - "net.Conn": "net", - "net.DNSConfigError": "net", - "net.DNSError": "net", - "net.DefaultResolver": "net", - "net.Dial": "net", - "net.DialIP": "net", - "net.DialTCP": "net", - "net.DialTimeout": "net", - "net.DialUDP": "net", - "net.DialUnix": "net", - "net.Dialer": "net", - "net.ErrWriteToConnected": "net", - "net.Error": "net", - "net.FileConn": "net", - "net.FileListener": "net", - "net.FilePacketConn": "net", - "net.FlagBroadcast": "net", - "net.FlagLoopback": "net", - "net.FlagMulticast": "net", - "net.FlagPointToPoint": "net", - "net.FlagUp": "net", - "net.Flags": "net", - "net.HardwareAddr": "net", - "net.IP": "net", - "net.IPAddr": "net", - "net.IPConn": "net", - "net.IPMask": "net", - "net.IPNet": "net", - "net.IPv4": "net", - "net.IPv4Mask": "net", - "net.IPv4allrouter": "net", - "net.IPv4allsys": "net", - "net.IPv4bcast": "net", - "net.IPv4len": "net", - "net.IPv4zero": "net", - "net.IPv6interfacelocalallnodes": "net", - "net.IPv6len": "net", - "net.IPv6linklocalallnodes": "net", - "net.IPv6linklocalallrouters": "net", - "net.IPv6loopback": "net", - "net.IPv6unspecified": "net", - "net.IPv6zero": "net", - "net.Interface": "net", - "net.InterfaceAddrs": "net", - "net.InterfaceByIndex": "net", - "net.InterfaceByName": "net", - "net.Interfaces": "net", - "net.InvalidAddrError": "net", - "net.JoinHostPort": "net", - "net.Listen": "net", - "net.ListenIP": "net", - "net.ListenMulticastUDP": "net", - "net.ListenPacket": "net", - "net.ListenTCP": "net", - "net.ListenUDP": "net", - "net.ListenUnix": "net", - "net.ListenUnixgram": "net", - "net.Listener": "net", - "net.LookupAddr": "net", - "net.LookupCNAME": "net", - "net.LookupHost": "net", - "net.LookupIP": "net", - "net.LookupMX": "net", - "net.LookupNS": "net", - "net.LookupPort": "net", - "net.LookupSRV": "net", - "net.LookupTXT": "net", - "net.MX": "net", - "net.NS": "net", - "net.OpError": "net", - "net.PacketConn": "net", - "net.ParseCIDR": "net", - "net.ParseError": "net", - "net.ParseIP": "net", - "net.ParseMAC": "net", - "net.Pipe": "net", - "net.ResolveIPAddr": "net", - "net.ResolveTCPAddr": "net", - "net.ResolveUDPAddr": "net", - "net.ResolveUnixAddr": "net", - "net.Resolver": "net", - "net.SRV": "net", - "net.SplitHostPort": "net", - "net.TCPAddr": "net", - "net.TCPConn": "net", - "net.TCPListener": "net", - "net.UDPAddr": "net", - "net.UDPConn": "net", - "net.UnixAddr": "net", - "net.UnixConn": "net", - "net.UnixListener": "net", - "net.UnknownNetworkError": "net", - "os.Args": "os", - "os.Chdir": "os", - "os.Chmod": "os", - "os.Chown": "os", - "os.Chtimes": "os", - "os.Clearenv": "os", - "os.Create": "os", - "os.DevNull": "os", - "os.Environ": "os", - "os.ErrClosed": "os", - "os.ErrExist": "os", - "os.ErrInvalid": "os", - "os.ErrNotExist": "os", - "os.ErrPermission": "os", - "os.Executable": "os", - "os.Exit": "os", - "os.Expand": "os", - "os.ExpandEnv": "os", - "os.File": "os", - "os.FileInfo": "os", - "os.FileMode": "os", - "os.FindProcess": "os", - "os.Getegid": "os", - "os.Getenv": "os", - "os.Geteuid": "os", - "os.Getgid": "os", - "os.Getgroups": "os", - "os.Getpagesize": "os", - "os.Getpid": "os", - "os.Getppid": "os", - "os.Getuid": "os", - "os.Getwd": "os", - "os.Hostname": "os", - "os.Interrupt": "os", - "os.IsExist": "os", - "os.IsNotExist": "os", - "os.IsPathSeparator": "os", - "os.IsPermission": "os", - "os.Kill": "os", - "os.Lchown": "os", - "os.Link": "os", - "os.LinkError": "os", - "os.LookupEnv": "os", - "os.Lstat": "os", - "os.Mkdir": "os", - "os.MkdirAll": "os", - "os.ModeAppend": "os", - "os.ModeCharDevice": "os", - "os.ModeDevice": "os", - "os.ModeDir": "os", - "os.ModeExclusive": "os", - "os.ModeNamedPipe": "os", - "os.ModePerm": "os", - "os.ModeSetgid": "os", - "os.ModeSetuid": "os", - "os.ModeSocket": "os", - "os.ModeSticky": "os", - "os.ModeSymlink": "os", - "os.ModeTemporary": "os", - "os.ModeType": "os", - "os.NewFile": "os", - "os.NewSyscallError": "os", - "os.O_APPEND": "os", - "os.O_CREATE": "os", - "os.O_EXCL": "os", - "os.O_RDONLY": "os", - "os.O_RDWR": "os", - "os.O_SYNC": "os", - "os.O_TRUNC": "os", - "os.O_WRONLY": "os", - "os.Open": "os", - "os.OpenFile": "os", - "os.PathError": "os", - "os.PathListSeparator": "os", - "os.PathSeparator": "os", - "os.Pipe": "os", - "os.ProcAttr": "os", - "os.Process": "os", - "os.ProcessState": "os", - "os.Readlink": "os", - "os.Remove": "os", - "os.RemoveAll": "os", - "os.Rename": "os", - "os.SEEK_CUR": "os", - "os.SEEK_END": "os", - "os.SEEK_SET": "os", - "os.SameFile": "os", - "os.Setenv": "os", - "os.Signal": "os", - "os.StartProcess": "os", - "os.Stat": "os", - "os.Stderr": "os", - "os.Stdin": "os", - "os.Stdout": "os", - "os.Symlink": "os", - "os.SyscallError": "os", - "os.TempDir": "os", - "os.Truncate": "os", - "os.Unsetenv": "os", - "palette.Plan9": "image/color/palette", - "palette.WebSafe": "image/color/palette", - "parse.ActionNode": "text/template/parse", - "parse.BoolNode": "text/template/parse", - "parse.BranchNode": "text/template/parse", - "parse.ChainNode": "text/template/parse", - "parse.CommandNode": "text/template/parse", - "parse.DotNode": "text/template/parse", - "parse.FieldNode": "text/template/parse", - "parse.IdentifierNode": "text/template/parse", - "parse.IfNode": "text/template/parse", - "parse.IsEmptyTree": "text/template/parse", - "parse.ListNode": "text/template/parse", - "parse.New": "text/template/parse", - "parse.NewIdentifier": "text/template/parse", - "parse.NilNode": "text/template/parse", - "parse.Node": "text/template/parse", - "parse.NodeAction": "text/template/parse", - "parse.NodeBool": "text/template/parse", - "parse.NodeChain": "text/template/parse", - "parse.NodeCommand": "text/template/parse", - "parse.NodeDot": "text/template/parse", - "parse.NodeField": "text/template/parse", - "parse.NodeIdentifier": "text/template/parse", - "parse.NodeIf": "text/template/parse", - "parse.NodeList": "text/template/parse", - "parse.NodeNil": "text/template/parse", - "parse.NodeNumber": "text/template/parse", - "parse.NodePipe": "text/template/parse", - "parse.NodeRange": "text/template/parse", - "parse.NodeString": "text/template/parse", - "parse.NodeTemplate": "text/template/parse", - "parse.NodeText": "text/template/parse", - "parse.NodeType": "text/template/parse", - "parse.NodeVariable": "text/template/parse", - "parse.NodeWith": "text/template/parse", - "parse.NumberNode": "text/template/parse", - "parse.Parse": "text/template/parse", - "parse.PipeNode": "text/template/parse", - "parse.Pos": "text/template/parse", - "parse.RangeNode": "text/template/parse", - "parse.StringNode": "text/template/parse", - "parse.TemplateNode": "text/template/parse", - "parse.TextNode": "text/template/parse", - "parse.Tree": "text/template/parse", - "parse.VariableNode": "text/template/parse", - "parse.WithNode": "text/template/parse", - "parser.AllErrors": "go/parser", - "parser.DeclarationErrors": "go/parser", - "parser.ImportsOnly": "go/parser", - "parser.Mode": "go/parser", - "parser.PackageClauseOnly": "go/parser", - "parser.ParseComments": "go/parser", - "parser.ParseDir": "go/parser", - "parser.ParseExpr": "go/parser", - "parser.ParseExprFrom": "go/parser", - "parser.ParseFile": "go/parser", - "parser.SpuriousErrors": "go/parser", - "parser.Trace": "go/parser", - "path.Base": "path", - "path.Clean": "path", - "path.Dir": "path", - "path.ErrBadPattern": "path", - "path.Ext": "path", - "path.IsAbs": "path", - "path.Join": "path", - "path.Match": "path", - "path.Split": "path", - "pe.COFFSymbol": "debug/pe", - "pe.COFFSymbolSize": "debug/pe", - "pe.DataDirectory": "debug/pe", - "pe.File": "debug/pe", - "pe.FileHeader": "debug/pe", - "pe.FormatError": "debug/pe", - "pe.IMAGE_FILE_MACHINE_AM33": "debug/pe", - "pe.IMAGE_FILE_MACHINE_AMD64": "debug/pe", - "pe.IMAGE_FILE_MACHINE_ARM": "debug/pe", - "pe.IMAGE_FILE_MACHINE_EBC": "debug/pe", - "pe.IMAGE_FILE_MACHINE_I386": "debug/pe", - "pe.IMAGE_FILE_MACHINE_IA64": "debug/pe", - "pe.IMAGE_FILE_MACHINE_M32R": "debug/pe", - "pe.IMAGE_FILE_MACHINE_MIPS16": "debug/pe", - "pe.IMAGE_FILE_MACHINE_MIPSFPU": "debug/pe", - "pe.IMAGE_FILE_MACHINE_MIPSFPU16": "debug/pe", - "pe.IMAGE_FILE_MACHINE_POWERPC": "debug/pe", - "pe.IMAGE_FILE_MACHINE_POWERPCFP": "debug/pe", - "pe.IMAGE_FILE_MACHINE_R4000": "debug/pe", - "pe.IMAGE_FILE_MACHINE_SH3": "debug/pe", - "pe.IMAGE_FILE_MACHINE_SH3DSP": "debug/pe", - "pe.IMAGE_FILE_MACHINE_SH4": "debug/pe", - "pe.IMAGE_FILE_MACHINE_SH5": "debug/pe", - "pe.IMAGE_FILE_MACHINE_THUMB": "debug/pe", - "pe.IMAGE_FILE_MACHINE_UNKNOWN": "debug/pe", - "pe.IMAGE_FILE_MACHINE_WCEMIPSV2": "debug/pe", - "pe.ImportDirectory": "debug/pe", - "pe.NewFile": "debug/pe", - "pe.Open": "debug/pe", - "pe.OptionalHeader32": "debug/pe", - "pe.OptionalHeader64": "debug/pe", - "pe.Reloc": "debug/pe", - "pe.Section": "debug/pe", - "pe.SectionHeader": "debug/pe", - "pe.SectionHeader32": "debug/pe", - "pe.StringTable": "debug/pe", - "pe.Symbol": "debug/pe", - "pem.Block": "encoding/pem", - "pem.Decode": "encoding/pem", - "pem.Encode": "encoding/pem", - "pem.EncodeToMemory": "encoding/pem", - "pkix.AlgorithmIdentifier": "crypto/x509/pkix", - "pkix.AttributeTypeAndValue": "crypto/x509/pkix", - "pkix.AttributeTypeAndValueSET": "crypto/x509/pkix", - "pkix.CertificateList": "crypto/x509/pkix", - "pkix.Extension": "crypto/x509/pkix", - "pkix.Name": "crypto/x509/pkix", - "pkix.RDNSequence": "crypto/x509/pkix", - "pkix.RelativeDistinguishedNameSET": "crypto/x509/pkix", - "pkix.RevokedCertificate": "crypto/x509/pkix", - "pkix.TBSCertificateList": "crypto/x509/pkix", - "plan9obj.File": "debug/plan9obj", - "plan9obj.FileHeader": "debug/plan9obj", - "plan9obj.Magic386": "debug/plan9obj", - "plan9obj.Magic64": "debug/plan9obj", - "plan9obj.MagicAMD64": "debug/plan9obj", - "plan9obj.MagicARM": "debug/plan9obj", - "plan9obj.NewFile": "debug/plan9obj", - "plan9obj.Open": "debug/plan9obj", - "plan9obj.Section": "debug/plan9obj", - "plan9obj.SectionHeader": "debug/plan9obj", - "plan9obj.Sym": "debug/plan9obj", - "plugin.Open": "plugin", - "plugin.Plugin": "plugin", - "plugin.Symbol": "plugin", - "png.BestCompression": "image/png", - "png.BestSpeed": "image/png", - "png.CompressionLevel": "image/png", - "png.Decode": "image/png", - "png.DecodeConfig": "image/png", - "png.DefaultCompression": "image/png", - "png.Encode": "image/png", - "png.Encoder": "image/png", - "png.EncoderBuffer": "image/png", - "png.EncoderBufferPool": "image/png", - "png.FormatError": "image/png", - "png.NoCompression": "image/png", - "png.UnsupportedError": "image/png", - "pprof.Cmdline": "net/http/pprof", - "pprof.Do": "runtime/pprof", - "pprof.ForLabels": "runtime/pprof", - "pprof.Handler": "net/http/pprof", - "pprof.Index": "net/http/pprof", - "pprof.Label": "runtime/pprof", - "pprof.LabelSet": "runtime/pprof", - "pprof.Labels": "runtime/pprof", - "pprof.Lookup": "runtime/pprof", - "pprof.NewProfile": "runtime/pprof", - // "pprof.Profile" is ambiguous - "pprof.Profiles": "runtime/pprof", - "pprof.SetGoroutineLabels": "runtime/pprof", - "pprof.StartCPUProfile": "runtime/pprof", - "pprof.StopCPUProfile": "runtime/pprof", - "pprof.Symbol": "net/http/pprof", - "pprof.Trace": "net/http/pprof", - "pprof.WithLabels": "runtime/pprof", - "pprof.WriteHeapProfile": "runtime/pprof", - "printer.CommentedNode": "go/printer", - "printer.Config": "go/printer", - "printer.Fprint": "go/printer", - "printer.Mode": "go/printer", - "printer.RawFormat": "go/printer", - "printer.SourcePos": "go/printer", - "printer.TabIndent": "go/printer", - "printer.UseSpaces": "go/printer", - "quick.Check": "testing/quick", - "quick.CheckEqual": "testing/quick", - "quick.CheckEqualError": "testing/quick", - "quick.CheckError": "testing/quick", - "quick.Config": "testing/quick", - "quick.Generator": "testing/quick", - "quick.SetupError": "testing/quick", - "quick.Value": "testing/quick", - "quotedprintable.NewReader": "mime/quotedprintable", - "quotedprintable.NewWriter": "mime/quotedprintable", - "quotedprintable.Reader": "mime/quotedprintable", - "quotedprintable.Writer": "mime/quotedprintable", - "rand.ExpFloat64": "math/rand", - "rand.Float32": "math/rand", - "rand.Float64": "math/rand", - // "rand.Int" is ambiguous - "rand.Int31": "math/rand", - "rand.Int31n": "math/rand", - "rand.Int63": "math/rand", - "rand.Int63n": "math/rand", - "rand.Intn": "math/rand", - "rand.New": "math/rand", - "rand.NewSource": "math/rand", - "rand.NewZipf": "math/rand", - "rand.NormFloat64": "math/rand", - "rand.Perm": "math/rand", - "rand.Prime": "crypto/rand", - "rand.Rand": "math/rand", - // "rand.Read" is ambiguous - "rand.Reader": "crypto/rand", - "rand.Seed": "math/rand", - "rand.Source": "math/rand", - "rand.Source64": "math/rand", - "rand.Uint32": "math/rand", - "rand.Uint64": "math/rand", - "rand.Zipf": "math/rand", - "rc4.Cipher": "crypto/rc4", - "rc4.KeySizeError": "crypto/rc4", - "rc4.NewCipher": "crypto/rc4", - "reflect.Append": "reflect", - "reflect.AppendSlice": "reflect", - "reflect.Array": "reflect", - "reflect.ArrayOf": "reflect", - "reflect.Bool": "reflect", - "reflect.BothDir": "reflect", - "reflect.Chan": "reflect", - "reflect.ChanDir": "reflect", - "reflect.ChanOf": "reflect", - "reflect.Complex128": "reflect", - "reflect.Complex64": "reflect", - "reflect.Copy": "reflect", - "reflect.DeepEqual": "reflect", - "reflect.Float32": "reflect", - "reflect.Float64": "reflect", - "reflect.Func": "reflect", - "reflect.FuncOf": "reflect", - "reflect.Indirect": "reflect", - "reflect.Int": "reflect", - "reflect.Int16": "reflect", - "reflect.Int32": "reflect", - "reflect.Int64": "reflect", - "reflect.Int8": "reflect", - "reflect.Interface": "reflect", - "reflect.Invalid": "reflect", - "reflect.Kind": "reflect", - "reflect.MakeChan": "reflect", - "reflect.MakeFunc": "reflect", - "reflect.MakeMap": "reflect", - "reflect.MakeMapWithSize": "reflect", - "reflect.MakeSlice": "reflect", - "reflect.Map": "reflect", - "reflect.MapOf": "reflect", - "reflect.Method": "reflect", - "reflect.New": "reflect", - "reflect.NewAt": "reflect", - "reflect.Ptr": "reflect", - "reflect.PtrTo": "reflect", - "reflect.RecvDir": "reflect", - "reflect.Select": "reflect", - "reflect.SelectCase": "reflect", - "reflect.SelectDefault": "reflect", - "reflect.SelectDir": "reflect", - "reflect.SelectRecv": "reflect", - "reflect.SelectSend": "reflect", - "reflect.SendDir": "reflect", - "reflect.Slice": "reflect", - "reflect.SliceHeader": "reflect", - "reflect.SliceOf": "reflect", - "reflect.String": "reflect", - "reflect.StringHeader": "reflect", - "reflect.Struct": "reflect", - "reflect.StructField": "reflect", - "reflect.StructOf": "reflect", - "reflect.StructTag": "reflect", - "reflect.Swapper": "reflect", - "reflect.TypeOf": "reflect", - "reflect.Uint": "reflect", - "reflect.Uint16": "reflect", - "reflect.Uint32": "reflect", - "reflect.Uint64": "reflect", - "reflect.Uint8": "reflect", - "reflect.Uintptr": "reflect", - "reflect.UnsafePointer": "reflect", - "reflect.Value": "reflect", - "reflect.ValueError": "reflect", - "reflect.ValueOf": "reflect", - "reflect.Zero": "reflect", - "regexp.Compile": "regexp", - "regexp.CompilePOSIX": "regexp", - "regexp.Match": "regexp", - "regexp.MatchReader": "regexp", - "regexp.MatchString": "regexp", - "regexp.MustCompile": "regexp", - "regexp.MustCompilePOSIX": "regexp", - "regexp.QuoteMeta": "regexp", - "regexp.Regexp": "regexp", - "ring.New": "container/ring", - "ring.Ring": "container/ring", - "rpc.Accept": "net/rpc", - "rpc.Call": "net/rpc", - "rpc.Client": "net/rpc", - "rpc.ClientCodec": "net/rpc", - "rpc.DefaultDebugPath": "net/rpc", - "rpc.DefaultRPCPath": "net/rpc", - "rpc.DefaultServer": "net/rpc", - "rpc.Dial": "net/rpc", - "rpc.DialHTTP": "net/rpc", - "rpc.DialHTTPPath": "net/rpc", - "rpc.ErrShutdown": "net/rpc", - "rpc.HandleHTTP": "net/rpc", - "rpc.NewClient": "net/rpc", - "rpc.NewClientWithCodec": "net/rpc", - "rpc.NewServer": "net/rpc", - "rpc.Register": "net/rpc", - "rpc.RegisterName": "net/rpc", - "rpc.Request": "net/rpc", - "rpc.Response": "net/rpc", - "rpc.ServeCodec": "net/rpc", - "rpc.ServeConn": "net/rpc", - "rpc.ServeRequest": "net/rpc", - "rpc.Server": "net/rpc", - "rpc.ServerCodec": "net/rpc", - "rpc.ServerError": "net/rpc", - "rsa.CRTValue": "crypto/rsa", - "rsa.DecryptOAEP": "crypto/rsa", - "rsa.DecryptPKCS1v15": "crypto/rsa", - "rsa.DecryptPKCS1v15SessionKey": "crypto/rsa", - "rsa.EncryptOAEP": "crypto/rsa", - "rsa.EncryptPKCS1v15": "crypto/rsa", - "rsa.ErrDecryption": "crypto/rsa", - "rsa.ErrMessageTooLong": "crypto/rsa", - "rsa.ErrVerification": "crypto/rsa", - "rsa.GenerateKey": "crypto/rsa", - "rsa.GenerateMultiPrimeKey": "crypto/rsa", - "rsa.OAEPOptions": "crypto/rsa", - "rsa.PKCS1v15DecryptOptions": "crypto/rsa", - "rsa.PSSOptions": "crypto/rsa", - "rsa.PSSSaltLengthAuto": "crypto/rsa", - "rsa.PSSSaltLengthEqualsHash": "crypto/rsa", - "rsa.PrecomputedValues": "crypto/rsa", - "rsa.PrivateKey": "crypto/rsa", - "rsa.PublicKey": "crypto/rsa", - "rsa.SignPKCS1v15": "crypto/rsa", - "rsa.SignPSS": "crypto/rsa", - "rsa.VerifyPKCS1v15": "crypto/rsa", - "rsa.VerifyPSS": "crypto/rsa", - "runtime.BlockProfile": "runtime", - "runtime.BlockProfileRecord": "runtime", - "runtime.Breakpoint": "runtime", - "runtime.CPUProfile": "runtime", - "runtime.Caller": "runtime", - "runtime.Callers": "runtime", - "runtime.CallersFrames": "runtime", - "runtime.Compiler": "runtime", - "runtime.Error": "runtime", - "runtime.Frame": "runtime", - "runtime.Frames": "runtime", - "runtime.Func": "runtime", - "runtime.FuncForPC": "runtime", - "runtime.GC": "runtime", - "runtime.GOARCH": "runtime", - "runtime.GOMAXPROCS": "runtime", - "runtime.GOOS": "runtime", - "runtime.GOROOT": "runtime", - "runtime.Goexit": "runtime", - "runtime.GoroutineProfile": "runtime", - "runtime.Gosched": "runtime", - "runtime.KeepAlive": "runtime", - "runtime.LockOSThread": "runtime", - "runtime.MemProfile": "runtime", - "runtime.MemProfileRate": "runtime", - "runtime.MemProfileRecord": "runtime", - "runtime.MemStats": "runtime", - "runtime.MutexProfile": "runtime", - "runtime.NumCPU": "runtime", - "runtime.NumCgoCall": "runtime", - "runtime.NumGoroutine": "runtime", - "runtime.ReadMemStats": "runtime", - "runtime.ReadTrace": "runtime", - "runtime.SetBlockProfileRate": "runtime", - "runtime.SetCPUProfileRate": "runtime", - "runtime.SetCgoTraceback": "runtime", - "runtime.SetFinalizer": "runtime", - "runtime.SetMutexProfileFraction": "runtime", - "runtime.Stack": "runtime", - "runtime.StackRecord": "runtime", - "runtime.StartTrace": "runtime", - "runtime.StopTrace": "runtime", - "runtime.ThreadCreateProfile": "runtime", - "runtime.TypeAssertionError": "runtime", - "runtime.UnlockOSThread": "runtime", - "runtime.Version": "runtime", - "scanner.Char": "text/scanner", - "scanner.Comment": "text/scanner", - "scanner.EOF": "text/scanner", - "scanner.Error": "go/scanner", - "scanner.ErrorHandler": "go/scanner", - "scanner.ErrorList": "go/scanner", - "scanner.Float": "text/scanner", - "scanner.GoTokens": "text/scanner", - "scanner.GoWhitespace": "text/scanner", - "scanner.Ident": "text/scanner", - "scanner.Int": "text/scanner", - "scanner.Mode": "go/scanner", - "scanner.Position": "text/scanner", - "scanner.PrintError": "go/scanner", - "scanner.RawString": "text/scanner", - "scanner.ScanChars": "text/scanner", - // "scanner.ScanComments" is ambiguous - "scanner.ScanFloats": "text/scanner", - "scanner.ScanIdents": "text/scanner", - "scanner.ScanInts": "text/scanner", - "scanner.ScanRawStrings": "text/scanner", - "scanner.ScanStrings": "text/scanner", - // "scanner.Scanner" is ambiguous - "scanner.SkipComments": "text/scanner", - "scanner.String": "text/scanner", - "scanner.TokenString": "text/scanner", - "sha1.BlockSize": "crypto/sha1", - "sha1.New": "crypto/sha1", - "sha1.Size": "crypto/sha1", - "sha1.Sum": "crypto/sha1", - "sha256.BlockSize": "crypto/sha256", - "sha256.New": "crypto/sha256", - "sha256.New224": "crypto/sha256", - "sha256.Size": "crypto/sha256", - "sha256.Size224": "crypto/sha256", - "sha256.Sum224": "crypto/sha256", - "sha256.Sum256": "crypto/sha256", - "sha512.BlockSize": "crypto/sha512", - "sha512.New": "crypto/sha512", - "sha512.New384": "crypto/sha512", - "sha512.New512_224": "crypto/sha512", - "sha512.New512_256": "crypto/sha512", - "sha512.Size": "crypto/sha512", - "sha512.Size224": "crypto/sha512", - "sha512.Size256": "crypto/sha512", - "sha512.Size384": "crypto/sha512", - "sha512.Sum384": "crypto/sha512", - "sha512.Sum512": "crypto/sha512", - "sha512.Sum512_224": "crypto/sha512", - "sha512.Sum512_256": "crypto/sha512", - "signal.Ignore": "os/signal", - "signal.Notify": "os/signal", - "signal.Reset": "os/signal", - "signal.Stop": "os/signal", - "smtp.Auth": "net/smtp", - "smtp.CRAMMD5Auth": "net/smtp", - "smtp.Client": "net/smtp", - "smtp.Dial": "net/smtp", - "smtp.NewClient": "net/smtp", - "smtp.PlainAuth": "net/smtp", - "smtp.SendMail": "net/smtp", - "smtp.ServerInfo": "net/smtp", - "sort.Float64Slice": "sort", - "sort.Float64s": "sort", - "sort.Float64sAreSorted": "sort", - "sort.IntSlice": "sort", - "sort.Interface": "sort", - "sort.Ints": "sort", - "sort.IntsAreSorted": "sort", - "sort.IsSorted": "sort", - "sort.Reverse": "sort", - "sort.Search": "sort", - "sort.SearchFloat64s": "sort", - "sort.SearchInts": "sort", - "sort.SearchStrings": "sort", - "sort.Slice": "sort", - "sort.SliceIsSorted": "sort", - "sort.SliceStable": "sort", - "sort.Sort": "sort", - "sort.Stable": "sort", - "sort.StringSlice": "sort", - "sort.Strings": "sort", - "sort.StringsAreSorted": "sort", - "sql.ColumnType": "database/sql", - "sql.Conn": "database/sql", - "sql.DB": "database/sql", - "sql.DBStats": "database/sql", - "sql.Drivers": "database/sql", - "sql.ErrConnDone": "database/sql", - "sql.ErrNoRows": "database/sql", - "sql.ErrTxDone": "database/sql", - "sql.IsolationLevel": "database/sql", - "sql.LevelDefault": "database/sql", - "sql.LevelLinearizable": "database/sql", - "sql.LevelReadCommitted": "database/sql", - "sql.LevelReadUncommitted": "database/sql", - "sql.LevelRepeatableRead": "database/sql", - "sql.LevelSerializable": "database/sql", - "sql.LevelSnapshot": "database/sql", - "sql.LevelWriteCommitted": "database/sql", - "sql.Named": "database/sql", - "sql.NamedArg": "database/sql", - "sql.NullBool": "database/sql", - "sql.NullFloat64": "database/sql", - "sql.NullInt64": "database/sql", - "sql.NullString": "database/sql", - "sql.Open": "database/sql", - "sql.Out": "database/sql", - "sql.RawBytes": "database/sql", - "sql.Register": "database/sql", - "sql.Result": "database/sql", - "sql.Row": "database/sql", - "sql.Rows": "database/sql", - "sql.Scanner": "database/sql", - "sql.Stmt": "database/sql", - "sql.Tx": "database/sql", - "sql.TxOptions": "database/sql", - "strconv.AppendBool": "strconv", - "strconv.AppendFloat": "strconv", - "strconv.AppendInt": "strconv", - "strconv.AppendQuote": "strconv", - "strconv.AppendQuoteRune": "strconv", - "strconv.AppendQuoteRuneToASCII": "strconv", - "strconv.AppendQuoteRuneToGraphic": "strconv", - "strconv.AppendQuoteToASCII": "strconv", - "strconv.AppendQuoteToGraphic": "strconv", - "strconv.AppendUint": "strconv", - "strconv.Atoi": "strconv", - "strconv.CanBackquote": "strconv", - "strconv.ErrRange": "strconv", - "strconv.ErrSyntax": "strconv", - "strconv.FormatBool": "strconv", - "strconv.FormatFloat": "strconv", - "strconv.FormatInt": "strconv", - "strconv.FormatUint": "strconv", - "strconv.IntSize": "strconv", - "strconv.IsGraphic": "strconv", - "strconv.IsPrint": "strconv", - "strconv.Itoa": "strconv", - "strconv.NumError": "strconv", - "strconv.ParseBool": "strconv", - "strconv.ParseFloat": "strconv", - "strconv.ParseInt": "strconv", - "strconv.ParseUint": "strconv", - "strconv.Quote": "strconv", - "strconv.QuoteRune": "strconv", - "strconv.QuoteRuneToASCII": "strconv", - "strconv.QuoteRuneToGraphic": "strconv", - "strconv.QuoteToASCII": "strconv", - "strconv.QuoteToGraphic": "strconv", - "strconv.Unquote": "strconv", - "strconv.UnquoteChar": "strconv", - "strings.Compare": "strings", - "strings.Contains": "strings", - "strings.ContainsAny": "strings", - "strings.ContainsRune": "strings", - "strings.Count": "strings", - "strings.EqualFold": "strings", - "strings.Fields": "strings", - "strings.FieldsFunc": "strings", - "strings.HasPrefix": "strings", - "strings.HasSuffix": "strings", - "strings.Index": "strings", - "strings.IndexAny": "strings", - "strings.IndexByte": "strings", - "strings.IndexFunc": "strings", - "strings.IndexRune": "strings", - "strings.Join": "strings", - "strings.LastIndex": "strings", - "strings.LastIndexAny": "strings", - "strings.LastIndexByte": "strings", - "strings.LastIndexFunc": "strings", - "strings.Map": "strings", - "strings.NewReader": "strings", - "strings.NewReplacer": "strings", - "strings.Reader": "strings", - "strings.Repeat": "strings", - "strings.Replace": "strings", - "strings.Replacer": "strings", - "strings.Split": "strings", - "strings.SplitAfter": "strings", - "strings.SplitAfterN": "strings", - "strings.SplitN": "strings", - "strings.Title": "strings", - "strings.ToLower": "strings", - "strings.ToLowerSpecial": "strings", - "strings.ToTitle": "strings", - "strings.ToTitleSpecial": "strings", - "strings.ToUpper": "strings", - "strings.ToUpperSpecial": "strings", - "strings.Trim": "strings", - "strings.TrimFunc": "strings", - "strings.TrimLeft": "strings", - "strings.TrimLeftFunc": "strings", - "strings.TrimPrefix": "strings", - "strings.TrimRight": "strings", - "strings.TrimRightFunc": "strings", - "strings.TrimSpace": "strings", - "strings.TrimSuffix": "strings", - "subtle.ConstantTimeByteEq": "crypto/subtle", - "subtle.ConstantTimeCompare": "crypto/subtle", - "subtle.ConstantTimeCopy": "crypto/subtle", - "subtle.ConstantTimeEq": "crypto/subtle", - "subtle.ConstantTimeLessOrEq": "crypto/subtle", - "subtle.ConstantTimeSelect": "crypto/subtle", - "suffixarray.Index": "index/suffixarray", - "suffixarray.New": "index/suffixarray", - "sync.Cond": "sync", - "sync.Locker": "sync", - "sync.Map": "sync", - "sync.Mutex": "sync", - "sync.NewCond": "sync", - "sync.Once": "sync", - "sync.Pool": "sync", - "sync.RWMutex": "sync", - "sync.WaitGroup": "sync", - "syntax.ClassNL": "regexp/syntax", - "syntax.Compile": "regexp/syntax", - "syntax.DotNL": "regexp/syntax", - "syntax.EmptyBeginLine": "regexp/syntax", - "syntax.EmptyBeginText": "regexp/syntax", - "syntax.EmptyEndLine": "regexp/syntax", - "syntax.EmptyEndText": "regexp/syntax", - "syntax.EmptyNoWordBoundary": "regexp/syntax", - "syntax.EmptyOp": "regexp/syntax", - "syntax.EmptyOpContext": "regexp/syntax", - "syntax.EmptyWordBoundary": "regexp/syntax", - "syntax.ErrInternalError": "regexp/syntax", - "syntax.ErrInvalidCharClass": "regexp/syntax", - "syntax.ErrInvalidCharRange": "regexp/syntax", - "syntax.ErrInvalidEscape": "regexp/syntax", - "syntax.ErrInvalidNamedCapture": "regexp/syntax", - "syntax.ErrInvalidPerlOp": "regexp/syntax", - "syntax.ErrInvalidRepeatOp": "regexp/syntax", - "syntax.ErrInvalidRepeatSize": "regexp/syntax", - "syntax.ErrInvalidUTF8": "regexp/syntax", - "syntax.ErrMissingBracket": "regexp/syntax", - "syntax.ErrMissingParen": "regexp/syntax", - "syntax.ErrMissingRepeatArgument": "regexp/syntax", - "syntax.ErrTrailingBackslash": "regexp/syntax", - "syntax.ErrUnexpectedParen": "regexp/syntax", - "syntax.Error": "regexp/syntax", - "syntax.ErrorCode": "regexp/syntax", - "syntax.Flags": "regexp/syntax", - "syntax.FoldCase": "regexp/syntax", - "syntax.Inst": "regexp/syntax", - "syntax.InstAlt": "regexp/syntax", - "syntax.InstAltMatch": "regexp/syntax", - "syntax.InstCapture": "regexp/syntax", - "syntax.InstEmptyWidth": "regexp/syntax", - "syntax.InstFail": "regexp/syntax", - "syntax.InstMatch": "regexp/syntax", - "syntax.InstNop": "regexp/syntax", - "syntax.InstOp": "regexp/syntax", - "syntax.InstRune": "regexp/syntax", - "syntax.InstRune1": "regexp/syntax", - "syntax.InstRuneAny": "regexp/syntax", - "syntax.InstRuneAnyNotNL": "regexp/syntax", - "syntax.IsWordChar": "regexp/syntax", - "syntax.Literal": "regexp/syntax", - "syntax.MatchNL": "regexp/syntax", - "syntax.NonGreedy": "regexp/syntax", - "syntax.OneLine": "regexp/syntax", - "syntax.Op": "regexp/syntax", - "syntax.OpAlternate": "regexp/syntax", - "syntax.OpAnyChar": "regexp/syntax", - "syntax.OpAnyCharNotNL": "regexp/syntax", - "syntax.OpBeginLine": "regexp/syntax", - "syntax.OpBeginText": "regexp/syntax", - "syntax.OpCapture": "regexp/syntax", - "syntax.OpCharClass": "regexp/syntax", - "syntax.OpConcat": "regexp/syntax", - "syntax.OpEmptyMatch": "regexp/syntax", - "syntax.OpEndLine": "regexp/syntax", - "syntax.OpEndText": "regexp/syntax", - "syntax.OpLiteral": "regexp/syntax", - "syntax.OpNoMatch": "regexp/syntax", - "syntax.OpNoWordBoundary": "regexp/syntax", - "syntax.OpPlus": "regexp/syntax", - "syntax.OpQuest": "regexp/syntax", - "syntax.OpRepeat": "regexp/syntax", - "syntax.OpStar": "regexp/syntax", - "syntax.OpWordBoundary": "regexp/syntax", - "syntax.POSIX": "regexp/syntax", - "syntax.Parse": "regexp/syntax", - "syntax.Perl": "regexp/syntax", - "syntax.PerlX": "regexp/syntax", - "syntax.Prog": "regexp/syntax", - "syntax.Regexp": "regexp/syntax", - "syntax.Simple": "regexp/syntax", - "syntax.UnicodeGroups": "regexp/syntax", - "syntax.WasDollar": "regexp/syntax", - "syscall.AF_ALG": "syscall", - "syscall.AF_APPLETALK": "syscall", - "syscall.AF_ARP": "syscall", - "syscall.AF_ASH": "syscall", - "syscall.AF_ATM": "syscall", - "syscall.AF_ATMPVC": "syscall", - "syscall.AF_ATMSVC": "syscall", - "syscall.AF_AX25": "syscall", - "syscall.AF_BLUETOOTH": "syscall", - "syscall.AF_BRIDGE": "syscall", - "syscall.AF_CAIF": "syscall", - "syscall.AF_CAN": "syscall", - "syscall.AF_CCITT": "syscall", - "syscall.AF_CHAOS": "syscall", - "syscall.AF_CNT": "syscall", - "syscall.AF_COIP": "syscall", - "syscall.AF_DATAKIT": "syscall", - "syscall.AF_DECnet": "syscall", - "syscall.AF_DLI": "syscall", - "syscall.AF_E164": "syscall", - "syscall.AF_ECMA": "syscall", - "syscall.AF_ECONET": "syscall", - "syscall.AF_ENCAP": "syscall", - "syscall.AF_FILE": "syscall", - "syscall.AF_HYLINK": "syscall", - "syscall.AF_IEEE80211": "syscall", - "syscall.AF_IEEE802154": "syscall", - "syscall.AF_IMPLINK": "syscall", - "syscall.AF_INET": "syscall", - "syscall.AF_INET6": "syscall", - "syscall.AF_INET6_SDP": "syscall", - "syscall.AF_INET_SDP": "syscall", - "syscall.AF_IPX": "syscall", - "syscall.AF_IRDA": "syscall", - "syscall.AF_ISDN": "syscall", - "syscall.AF_ISO": "syscall", - "syscall.AF_IUCV": "syscall", - "syscall.AF_KEY": "syscall", - "syscall.AF_LAT": "syscall", - "syscall.AF_LINK": "syscall", - "syscall.AF_LLC": "syscall", - "syscall.AF_LOCAL": "syscall", - "syscall.AF_MAX": "syscall", - "syscall.AF_MPLS": "syscall", - "syscall.AF_NATM": "syscall", - "syscall.AF_NDRV": "syscall", - "syscall.AF_NETBEUI": "syscall", - "syscall.AF_NETBIOS": "syscall", - "syscall.AF_NETGRAPH": "syscall", - "syscall.AF_NETLINK": "syscall", - "syscall.AF_NETROM": "syscall", - "syscall.AF_NS": "syscall", - "syscall.AF_OROUTE": "syscall", - "syscall.AF_OSI": "syscall", - "syscall.AF_PACKET": "syscall", - "syscall.AF_PHONET": "syscall", - "syscall.AF_PPP": "syscall", - "syscall.AF_PPPOX": "syscall", - "syscall.AF_PUP": "syscall", - "syscall.AF_RDS": "syscall", - "syscall.AF_RESERVED_36": "syscall", - "syscall.AF_ROSE": "syscall", - "syscall.AF_ROUTE": "syscall", - "syscall.AF_RXRPC": "syscall", - "syscall.AF_SCLUSTER": "syscall", - "syscall.AF_SECURITY": "syscall", - "syscall.AF_SIP": "syscall", - "syscall.AF_SLOW": "syscall", - "syscall.AF_SNA": "syscall", - "syscall.AF_SYSTEM": "syscall", - "syscall.AF_TIPC": "syscall", - "syscall.AF_UNIX": "syscall", - "syscall.AF_UNSPEC": "syscall", - "syscall.AF_VENDOR00": "syscall", - "syscall.AF_VENDOR01": "syscall", - "syscall.AF_VENDOR02": "syscall", - "syscall.AF_VENDOR03": "syscall", - "syscall.AF_VENDOR04": "syscall", - "syscall.AF_VENDOR05": "syscall", - "syscall.AF_VENDOR06": "syscall", - "syscall.AF_VENDOR07": "syscall", - "syscall.AF_VENDOR08": "syscall", - "syscall.AF_VENDOR09": "syscall", - "syscall.AF_VENDOR10": "syscall", - "syscall.AF_VENDOR11": "syscall", - "syscall.AF_VENDOR12": "syscall", - "syscall.AF_VENDOR13": "syscall", - "syscall.AF_VENDOR14": "syscall", - "syscall.AF_VENDOR15": "syscall", - "syscall.AF_VENDOR16": "syscall", - "syscall.AF_VENDOR17": "syscall", - "syscall.AF_VENDOR18": "syscall", - "syscall.AF_VENDOR19": "syscall", - "syscall.AF_VENDOR20": "syscall", - "syscall.AF_VENDOR21": "syscall", - "syscall.AF_VENDOR22": "syscall", - "syscall.AF_VENDOR23": "syscall", - "syscall.AF_VENDOR24": "syscall", - "syscall.AF_VENDOR25": "syscall", - "syscall.AF_VENDOR26": "syscall", - "syscall.AF_VENDOR27": "syscall", - "syscall.AF_VENDOR28": "syscall", - "syscall.AF_VENDOR29": "syscall", - "syscall.AF_VENDOR30": "syscall", - "syscall.AF_VENDOR31": "syscall", - "syscall.AF_VENDOR32": "syscall", - "syscall.AF_VENDOR33": "syscall", - "syscall.AF_VENDOR34": "syscall", - "syscall.AF_VENDOR35": "syscall", - "syscall.AF_VENDOR36": "syscall", - "syscall.AF_VENDOR37": "syscall", - "syscall.AF_VENDOR38": "syscall", - "syscall.AF_VENDOR39": "syscall", - "syscall.AF_VENDOR40": "syscall", - "syscall.AF_VENDOR41": "syscall", - "syscall.AF_VENDOR42": "syscall", - "syscall.AF_VENDOR43": "syscall", - "syscall.AF_VENDOR44": "syscall", - "syscall.AF_VENDOR45": "syscall", - "syscall.AF_VENDOR46": "syscall", - "syscall.AF_VENDOR47": "syscall", - "syscall.AF_WANPIPE": "syscall", - "syscall.AF_X25": "syscall", - "syscall.AI_CANONNAME": "syscall", - "syscall.AI_NUMERICHOST": "syscall", - "syscall.AI_PASSIVE": "syscall", - "syscall.APPLICATION_ERROR": "syscall", - "syscall.ARPHRD_ADAPT": "syscall", - "syscall.ARPHRD_APPLETLK": "syscall", - "syscall.ARPHRD_ARCNET": "syscall", - "syscall.ARPHRD_ASH": "syscall", - "syscall.ARPHRD_ATM": "syscall", - "syscall.ARPHRD_AX25": "syscall", - "syscall.ARPHRD_BIF": "syscall", - "syscall.ARPHRD_CHAOS": "syscall", - "syscall.ARPHRD_CISCO": "syscall", - "syscall.ARPHRD_CSLIP": "syscall", - "syscall.ARPHRD_CSLIP6": "syscall", - "syscall.ARPHRD_DDCMP": "syscall", - "syscall.ARPHRD_DLCI": "syscall", - "syscall.ARPHRD_ECONET": "syscall", - "syscall.ARPHRD_EETHER": "syscall", - "syscall.ARPHRD_ETHER": "syscall", - "syscall.ARPHRD_EUI64": "syscall", - "syscall.ARPHRD_FCAL": "syscall", - "syscall.ARPHRD_FCFABRIC": "syscall", - "syscall.ARPHRD_FCPL": "syscall", - "syscall.ARPHRD_FCPP": "syscall", - "syscall.ARPHRD_FDDI": "syscall", - "syscall.ARPHRD_FRAD": "syscall", - "syscall.ARPHRD_FRELAY": "syscall", - "syscall.ARPHRD_HDLC": "syscall", - "syscall.ARPHRD_HIPPI": "syscall", - "syscall.ARPHRD_HWX25": "syscall", - "syscall.ARPHRD_IEEE1394": "syscall", - "syscall.ARPHRD_IEEE802": "syscall", - "syscall.ARPHRD_IEEE80211": "syscall", - "syscall.ARPHRD_IEEE80211_PRISM": "syscall", - "syscall.ARPHRD_IEEE80211_RADIOTAP": "syscall", - "syscall.ARPHRD_IEEE802154": "syscall", - "syscall.ARPHRD_IEEE802154_PHY": "syscall", - "syscall.ARPHRD_IEEE802_TR": "syscall", - "syscall.ARPHRD_INFINIBAND": "syscall", - "syscall.ARPHRD_IPDDP": "syscall", - "syscall.ARPHRD_IPGRE": "syscall", - "syscall.ARPHRD_IRDA": "syscall", - "syscall.ARPHRD_LAPB": "syscall", - "syscall.ARPHRD_LOCALTLK": "syscall", - "syscall.ARPHRD_LOOPBACK": "syscall", - "syscall.ARPHRD_METRICOM": "syscall", - "syscall.ARPHRD_NETROM": "syscall", - "syscall.ARPHRD_NONE": "syscall", - "syscall.ARPHRD_PIMREG": "syscall", - "syscall.ARPHRD_PPP": "syscall", - "syscall.ARPHRD_PRONET": "syscall", - "syscall.ARPHRD_RAWHDLC": "syscall", - "syscall.ARPHRD_ROSE": "syscall", - "syscall.ARPHRD_RSRVD": "syscall", - "syscall.ARPHRD_SIT": "syscall", - "syscall.ARPHRD_SKIP": "syscall", - "syscall.ARPHRD_SLIP": "syscall", - "syscall.ARPHRD_SLIP6": "syscall", - "syscall.ARPHRD_STRIP": "syscall", - "syscall.ARPHRD_TUNNEL": "syscall", - "syscall.ARPHRD_TUNNEL6": "syscall", - "syscall.ARPHRD_VOID": "syscall", - "syscall.ARPHRD_X25": "syscall", - "syscall.AUTHTYPE_CLIENT": "syscall", - "syscall.AUTHTYPE_SERVER": "syscall", - "syscall.Accept": "syscall", - "syscall.Accept4": "syscall", - "syscall.AcceptEx": "syscall", - "syscall.Access": "syscall", - "syscall.Acct": "syscall", - "syscall.AddrinfoW": "syscall", - "syscall.Adjtime": "syscall", - "syscall.Adjtimex": "syscall", - "syscall.AttachLsf": "syscall", - "syscall.B0": "syscall", - "syscall.B1000000": "syscall", - "syscall.B110": "syscall", - "syscall.B115200": "syscall", - "syscall.B1152000": "syscall", - "syscall.B1200": "syscall", - "syscall.B134": "syscall", - "syscall.B14400": "syscall", - "syscall.B150": "syscall", - "syscall.B1500000": "syscall", - "syscall.B1800": "syscall", - "syscall.B19200": "syscall", - "syscall.B200": "syscall", - "syscall.B2000000": "syscall", - "syscall.B230400": "syscall", - "syscall.B2400": "syscall", - "syscall.B2500000": "syscall", - "syscall.B28800": "syscall", - "syscall.B300": "syscall", - "syscall.B3000000": "syscall", - "syscall.B3500000": "syscall", - "syscall.B38400": "syscall", - "syscall.B4000000": "syscall", - "syscall.B460800": "syscall", - "syscall.B4800": "syscall", - "syscall.B50": "syscall", - "syscall.B500000": "syscall", - "syscall.B57600": "syscall", - "syscall.B576000": "syscall", - "syscall.B600": "syscall", - "syscall.B7200": "syscall", - "syscall.B75": "syscall", - "syscall.B76800": "syscall", - "syscall.B921600": "syscall", - "syscall.B9600": "syscall", - "syscall.BASE_PROTOCOL": "syscall", - "syscall.BIOCFEEDBACK": "syscall", - "syscall.BIOCFLUSH": "syscall", - "syscall.BIOCGBLEN": "syscall", - "syscall.BIOCGDIRECTION": "syscall", - "syscall.BIOCGDIRFILT": "syscall", - "syscall.BIOCGDLT": "syscall", - "syscall.BIOCGDLTLIST": "syscall", - "syscall.BIOCGETBUFMODE": "syscall", - "syscall.BIOCGETIF": "syscall", - "syscall.BIOCGETZMAX": "syscall", - "syscall.BIOCGFEEDBACK": "syscall", - "syscall.BIOCGFILDROP": "syscall", - "syscall.BIOCGHDRCMPLT": "syscall", - "syscall.BIOCGRSIG": "syscall", - "syscall.BIOCGRTIMEOUT": "syscall", - "syscall.BIOCGSEESENT": "syscall", - "syscall.BIOCGSTATS": "syscall", - "syscall.BIOCGSTATSOLD": "syscall", - "syscall.BIOCGTSTAMP": "syscall", - "syscall.BIOCIMMEDIATE": "syscall", - "syscall.BIOCLOCK": "syscall", - "syscall.BIOCPROMISC": "syscall", - "syscall.BIOCROTZBUF": "syscall", - "syscall.BIOCSBLEN": "syscall", - "syscall.BIOCSDIRECTION": "syscall", - "syscall.BIOCSDIRFILT": "syscall", - "syscall.BIOCSDLT": "syscall", - "syscall.BIOCSETBUFMODE": "syscall", - "syscall.BIOCSETF": "syscall", - "syscall.BIOCSETFNR": "syscall", - "syscall.BIOCSETIF": "syscall", - "syscall.BIOCSETWF": "syscall", - "syscall.BIOCSETZBUF": "syscall", - "syscall.BIOCSFEEDBACK": "syscall", - "syscall.BIOCSFILDROP": "syscall", - "syscall.BIOCSHDRCMPLT": "syscall", - "syscall.BIOCSRSIG": "syscall", - "syscall.BIOCSRTIMEOUT": "syscall", - "syscall.BIOCSSEESENT": "syscall", - "syscall.BIOCSTCPF": "syscall", - "syscall.BIOCSTSTAMP": "syscall", - "syscall.BIOCSUDPF": "syscall", - "syscall.BIOCVERSION": "syscall", - "syscall.BPF_A": "syscall", - "syscall.BPF_ABS": "syscall", - "syscall.BPF_ADD": "syscall", - "syscall.BPF_ALIGNMENT": "syscall", - "syscall.BPF_ALIGNMENT32": "syscall", - "syscall.BPF_ALU": "syscall", - "syscall.BPF_AND": "syscall", - "syscall.BPF_B": "syscall", - "syscall.BPF_BUFMODE_BUFFER": "syscall", - "syscall.BPF_BUFMODE_ZBUF": "syscall", - "syscall.BPF_DFLTBUFSIZE": "syscall", - "syscall.BPF_DIRECTION_IN": "syscall", - "syscall.BPF_DIRECTION_OUT": "syscall", - "syscall.BPF_DIV": "syscall", - "syscall.BPF_H": "syscall", - "syscall.BPF_IMM": "syscall", - "syscall.BPF_IND": "syscall", - "syscall.BPF_JA": "syscall", - "syscall.BPF_JEQ": "syscall", - "syscall.BPF_JGE": "syscall", - "syscall.BPF_JGT": "syscall", - "syscall.BPF_JMP": "syscall", - "syscall.BPF_JSET": "syscall", - "syscall.BPF_K": "syscall", - "syscall.BPF_LD": "syscall", - "syscall.BPF_LDX": "syscall", - "syscall.BPF_LEN": "syscall", - "syscall.BPF_LSH": "syscall", - "syscall.BPF_MAJOR_VERSION": "syscall", - "syscall.BPF_MAXBUFSIZE": "syscall", - "syscall.BPF_MAXINSNS": "syscall", - "syscall.BPF_MEM": "syscall", - "syscall.BPF_MEMWORDS": "syscall", - "syscall.BPF_MINBUFSIZE": "syscall", - "syscall.BPF_MINOR_VERSION": "syscall", - "syscall.BPF_MISC": "syscall", - "syscall.BPF_MSH": "syscall", - "syscall.BPF_MUL": "syscall", - "syscall.BPF_NEG": "syscall", - "syscall.BPF_OR": "syscall", - "syscall.BPF_RELEASE": "syscall", - "syscall.BPF_RET": "syscall", - "syscall.BPF_RSH": "syscall", - "syscall.BPF_ST": "syscall", - "syscall.BPF_STX": "syscall", - "syscall.BPF_SUB": "syscall", - "syscall.BPF_TAX": "syscall", - "syscall.BPF_TXA": "syscall", - "syscall.BPF_T_BINTIME": "syscall", - "syscall.BPF_T_BINTIME_FAST": "syscall", - "syscall.BPF_T_BINTIME_MONOTONIC": "syscall", - "syscall.BPF_T_BINTIME_MONOTONIC_FAST": "syscall", - "syscall.BPF_T_FAST": "syscall", - "syscall.BPF_T_FLAG_MASK": "syscall", - "syscall.BPF_T_FORMAT_MASK": "syscall", - "syscall.BPF_T_MICROTIME": "syscall", - "syscall.BPF_T_MICROTIME_FAST": "syscall", - "syscall.BPF_T_MICROTIME_MONOTONIC": "syscall", - "syscall.BPF_T_MICROTIME_MONOTONIC_FAST": "syscall", - "syscall.BPF_T_MONOTONIC": "syscall", - "syscall.BPF_T_MONOTONIC_FAST": "syscall", - "syscall.BPF_T_NANOTIME": "syscall", - "syscall.BPF_T_NANOTIME_FAST": "syscall", - "syscall.BPF_T_NANOTIME_MONOTONIC": "syscall", - "syscall.BPF_T_NANOTIME_MONOTONIC_FAST": "syscall", - "syscall.BPF_T_NONE": "syscall", - "syscall.BPF_T_NORMAL": "syscall", - "syscall.BPF_W": "syscall", - "syscall.BPF_X": "syscall", - "syscall.BRKINT": "syscall", - "syscall.Bind": "syscall", - "syscall.BindToDevice": "syscall", - "syscall.BpfBuflen": "syscall", - "syscall.BpfDatalink": "syscall", - "syscall.BpfHdr": "syscall", - "syscall.BpfHeadercmpl": "syscall", - "syscall.BpfInsn": "syscall", - "syscall.BpfInterface": "syscall", - "syscall.BpfJump": "syscall", - "syscall.BpfProgram": "syscall", - "syscall.BpfStat": "syscall", - "syscall.BpfStats": "syscall", - "syscall.BpfStmt": "syscall", - "syscall.BpfTimeout": "syscall", - "syscall.BpfTimeval": "syscall", - "syscall.BpfVersion": "syscall", - "syscall.BpfZbuf": "syscall", - "syscall.BpfZbufHeader": "syscall", - "syscall.ByHandleFileInformation": "syscall", - "syscall.BytePtrFromString": "syscall", - "syscall.ByteSliceFromString": "syscall", - "syscall.CCR0_FLUSH": "syscall", - "syscall.CERT_CHAIN_POLICY_AUTHENTICODE": "syscall", - "syscall.CERT_CHAIN_POLICY_AUTHENTICODE_TS": "syscall", - "syscall.CERT_CHAIN_POLICY_BASE": "syscall", - "syscall.CERT_CHAIN_POLICY_BASIC_CONSTRAINTS": "syscall", - "syscall.CERT_CHAIN_POLICY_EV": "syscall", - "syscall.CERT_CHAIN_POLICY_MICROSOFT_ROOT": "syscall", - "syscall.CERT_CHAIN_POLICY_NT_AUTH": "syscall", - "syscall.CERT_CHAIN_POLICY_SSL": "syscall", - "syscall.CERT_E_CN_NO_MATCH": "syscall", - "syscall.CERT_E_EXPIRED": "syscall", - "syscall.CERT_E_PURPOSE": "syscall", - "syscall.CERT_E_ROLE": "syscall", - "syscall.CERT_E_UNTRUSTEDROOT": "syscall", - "syscall.CERT_STORE_ADD_ALWAYS": "syscall", - "syscall.CERT_STORE_DEFER_CLOSE_UNTIL_LAST_FREE_FLAG": "syscall", - "syscall.CERT_STORE_PROV_MEMORY": "syscall", - "syscall.CERT_TRUST_HAS_EXCLUDED_NAME_CONSTRAINT": "syscall", - "syscall.CERT_TRUST_HAS_NOT_DEFINED_NAME_CONSTRAINT": "syscall", - "syscall.CERT_TRUST_HAS_NOT_PERMITTED_NAME_CONSTRAINT": "syscall", - "syscall.CERT_TRUST_HAS_NOT_SUPPORTED_CRITICAL_EXT": "syscall", - "syscall.CERT_TRUST_HAS_NOT_SUPPORTED_NAME_CONSTRAINT": "syscall", - "syscall.CERT_TRUST_INVALID_BASIC_CONSTRAINTS": "syscall", - "syscall.CERT_TRUST_INVALID_EXTENSION": "syscall", - "syscall.CERT_TRUST_INVALID_NAME_CONSTRAINTS": "syscall", - "syscall.CERT_TRUST_INVALID_POLICY_CONSTRAINTS": "syscall", - "syscall.CERT_TRUST_IS_CYCLIC": "syscall", - "syscall.CERT_TRUST_IS_EXPLICIT_DISTRUST": "syscall", - "syscall.CERT_TRUST_IS_NOT_SIGNATURE_VALID": "syscall", - "syscall.CERT_TRUST_IS_NOT_TIME_VALID": "syscall", - "syscall.CERT_TRUST_IS_NOT_VALID_FOR_USAGE": "syscall", - "syscall.CERT_TRUST_IS_OFFLINE_REVOCATION": "syscall", - "syscall.CERT_TRUST_IS_REVOKED": "syscall", - "syscall.CERT_TRUST_IS_UNTRUSTED_ROOT": "syscall", - "syscall.CERT_TRUST_NO_ERROR": "syscall", - "syscall.CERT_TRUST_NO_ISSUANCE_CHAIN_POLICY": "syscall", - "syscall.CERT_TRUST_REVOCATION_STATUS_UNKNOWN": "syscall", - "syscall.CFLUSH": "syscall", - "syscall.CLOCAL": "syscall", - "syscall.CLONE_CHILD_CLEARTID": "syscall", - "syscall.CLONE_CHILD_SETTID": "syscall", - "syscall.CLONE_CSIGNAL": "syscall", - "syscall.CLONE_DETACHED": "syscall", - "syscall.CLONE_FILES": "syscall", - "syscall.CLONE_FS": "syscall", - "syscall.CLONE_IO": "syscall", - "syscall.CLONE_NEWIPC": "syscall", - "syscall.CLONE_NEWNET": "syscall", - "syscall.CLONE_NEWNS": "syscall", - "syscall.CLONE_NEWPID": "syscall", - "syscall.CLONE_NEWUSER": "syscall", - "syscall.CLONE_NEWUTS": "syscall", - "syscall.CLONE_PARENT": "syscall", - "syscall.CLONE_PARENT_SETTID": "syscall", - "syscall.CLONE_PID": "syscall", - "syscall.CLONE_PTRACE": "syscall", - "syscall.CLONE_SETTLS": "syscall", - "syscall.CLONE_SIGHAND": "syscall", - "syscall.CLONE_SYSVSEM": "syscall", - "syscall.CLONE_THREAD": "syscall", - "syscall.CLONE_UNTRACED": "syscall", - "syscall.CLONE_VFORK": "syscall", - "syscall.CLONE_VM": "syscall", - "syscall.CPUID_CFLUSH": "syscall", - "syscall.CREAD": "syscall", - "syscall.CREATE_ALWAYS": "syscall", - "syscall.CREATE_NEW": "syscall", - "syscall.CREATE_NEW_PROCESS_GROUP": "syscall", - "syscall.CREATE_UNICODE_ENVIRONMENT": "syscall", - "syscall.CRYPT_DEFAULT_CONTAINER_OPTIONAL": "syscall", - "syscall.CRYPT_DELETEKEYSET": "syscall", - "syscall.CRYPT_MACHINE_KEYSET": "syscall", - "syscall.CRYPT_NEWKEYSET": "syscall", - "syscall.CRYPT_SILENT": "syscall", - "syscall.CRYPT_VERIFYCONTEXT": "syscall", - "syscall.CS5": "syscall", - "syscall.CS6": "syscall", - "syscall.CS7": "syscall", - "syscall.CS8": "syscall", - "syscall.CSIZE": "syscall", - "syscall.CSTART": "syscall", - "syscall.CSTATUS": "syscall", - "syscall.CSTOP": "syscall", - "syscall.CSTOPB": "syscall", - "syscall.CSUSP": "syscall", - "syscall.CTL_MAXNAME": "syscall", - "syscall.CTL_NET": "syscall", - "syscall.CTL_QUERY": "syscall", - "syscall.CTRL_BREAK_EVENT": "syscall", - "syscall.CTRL_C_EVENT": "syscall", - "syscall.CancelIo": "syscall", - "syscall.CancelIoEx": "syscall", - "syscall.CertAddCertificateContextToStore": "syscall", - "syscall.CertChainContext": "syscall", - "syscall.CertChainElement": "syscall", - "syscall.CertChainPara": "syscall", - "syscall.CertChainPolicyPara": "syscall", - "syscall.CertChainPolicyStatus": "syscall", - "syscall.CertCloseStore": "syscall", - "syscall.CertContext": "syscall", - "syscall.CertCreateCertificateContext": "syscall", - "syscall.CertEnhKeyUsage": "syscall", - "syscall.CertEnumCertificatesInStore": "syscall", - "syscall.CertFreeCertificateChain": "syscall", - "syscall.CertFreeCertificateContext": "syscall", - "syscall.CertGetCertificateChain": "syscall", - "syscall.CertOpenStore": "syscall", - "syscall.CertOpenSystemStore": "syscall", - "syscall.CertRevocationInfo": "syscall", - "syscall.CertSimpleChain": "syscall", - "syscall.CertTrustStatus": "syscall", - "syscall.CertUsageMatch": "syscall", - "syscall.CertVerifyCertificateChainPolicy": "syscall", - "syscall.Chdir": "syscall", - "syscall.CheckBpfVersion": "syscall", - "syscall.Chflags": "syscall", - "syscall.Chmod": "syscall", - "syscall.Chown": "syscall", - "syscall.Chroot": "syscall", - "syscall.Clearenv": "syscall", - "syscall.Close": "syscall", - "syscall.CloseHandle": "syscall", - "syscall.CloseOnExec": "syscall", - "syscall.Closesocket": "syscall", - "syscall.CmsgLen": "syscall", - "syscall.CmsgSpace": "syscall", - "syscall.Cmsghdr": "syscall", - "syscall.CommandLineToArgv": "syscall", - "syscall.ComputerName": "syscall", - "syscall.Conn": "syscall", - "syscall.Connect": "syscall", - "syscall.ConnectEx": "syscall", - "syscall.ConvertSidToStringSid": "syscall", - "syscall.ConvertStringSidToSid": "syscall", - "syscall.CopySid": "syscall", - "syscall.Creat": "syscall", - "syscall.CreateDirectory": "syscall", - "syscall.CreateFile": "syscall", - "syscall.CreateFileMapping": "syscall", - "syscall.CreateHardLink": "syscall", - "syscall.CreateIoCompletionPort": "syscall", - "syscall.CreatePipe": "syscall", - "syscall.CreateProcess": "syscall", - "syscall.CreateSymbolicLink": "syscall", - "syscall.CreateToolhelp32Snapshot": "syscall", - "syscall.Credential": "syscall", - "syscall.CryptAcquireContext": "syscall", - "syscall.CryptGenRandom": "syscall", - "syscall.CryptReleaseContext": "syscall", - "syscall.DIOCBSFLUSH": "syscall", - "syscall.DIOCOSFPFLUSH": "syscall", - "syscall.DLL": "syscall", - "syscall.DLLError": "syscall", - "syscall.DLT_A429": "syscall", - "syscall.DLT_A653_ICM": "syscall", - "syscall.DLT_AIRONET_HEADER": "syscall", - "syscall.DLT_AOS": "syscall", - "syscall.DLT_APPLE_IP_OVER_IEEE1394": "syscall", - "syscall.DLT_ARCNET": "syscall", - "syscall.DLT_ARCNET_LINUX": "syscall", - "syscall.DLT_ATM_CLIP": "syscall", - "syscall.DLT_ATM_RFC1483": "syscall", - "syscall.DLT_AURORA": "syscall", - "syscall.DLT_AX25": "syscall", - "syscall.DLT_AX25_KISS": "syscall", - "syscall.DLT_BACNET_MS_TP": "syscall", - "syscall.DLT_BLUETOOTH_HCI_H4": "syscall", - "syscall.DLT_BLUETOOTH_HCI_H4_WITH_PHDR": "syscall", - "syscall.DLT_CAN20B": "syscall", - "syscall.DLT_CAN_SOCKETCAN": "syscall", - "syscall.DLT_CHAOS": "syscall", - "syscall.DLT_CHDLC": "syscall", - "syscall.DLT_CISCO_IOS": "syscall", - "syscall.DLT_C_HDLC": "syscall", - "syscall.DLT_C_HDLC_WITH_DIR": "syscall", - "syscall.DLT_DBUS": "syscall", - "syscall.DLT_DECT": "syscall", - "syscall.DLT_DOCSIS": "syscall", - "syscall.DLT_DVB_CI": "syscall", - "syscall.DLT_ECONET": "syscall", - "syscall.DLT_EN10MB": "syscall", - "syscall.DLT_EN3MB": "syscall", - "syscall.DLT_ENC": "syscall", - "syscall.DLT_ERF": "syscall", - "syscall.DLT_ERF_ETH": "syscall", - "syscall.DLT_ERF_POS": "syscall", - "syscall.DLT_FC_2": "syscall", - "syscall.DLT_FC_2_WITH_FRAME_DELIMS": "syscall", - "syscall.DLT_FDDI": "syscall", - "syscall.DLT_FLEXRAY": "syscall", - "syscall.DLT_FRELAY": "syscall", - "syscall.DLT_FRELAY_WITH_DIR": "syscall", - "syscall.DLT_GCOM_SERIAL": "syscall", - "syscall.DLT_GCOM_T1E1": "syscall", - "syscall.DLT_GPF_F": "syscall", - "syscall.DLT_GPF_T": "syscall", - "syscall.DLT_GPRS_LLC": "syscall", - "syscall.DLT_GSMTAP_ABIS": "syscall", - "syscall.DLT_GSMTAP_UM": "syscall", - "syscall.DLT_HDLC": "syscall", - "syscall.DLT_HHDLC": "syscall", - "syscall.DLT_HIPPI": "syscall", - "syscall.DLT_IBM_SN": "syscall", - "syscall.DLT_IBM_SP": "syscall", - "syscall.DLT_IEEE802": "syscall", - "syscall.DLT_IEEE802_11": "syscall", - "syscall.DLT_IEEE802_11_RADIO": "syscall", - "syscall.DLT_IEEE802_11_RADIO_AVS": "syscall", - "syscall.DLT_IEEE802_15_4": "syscall", - "syscall.DLT_IEEE802_15_4_LINUX": "syscall", - "syscall.DLT_IEEE802_15_4_NOFCS": "syscall", - "syscall.DLT_IEEE802_15_4_NONASK_PHY": "syscall", - "syscall.DLT_IEEE802_16_MAC_CPS": "syscall", - "syscall.DLT_IEEE802_16_MAC_CPS_RADIO": "syscall", - "syscall.DLT_IPFILTER": "syscall", - "syscall.DLT_IPMB": "syscall", - "syscall.DLT_IPMB_LINUX": "syscall", - "syscall.DLT_IPNET": "syscall", - "syscall.DLT_IPOIB": "syscall", - "syscall.DLT_IPV4": "syscall", - "syscall.DLT_IPV6": "syscall", - "syscall.DLT_IP_OVER_FC": "syscall", - "syscall.DLT_JUNIPER_ATM1": "syscall", - "syscall.DLT_JUNIPER_ATM2": "syscall", - "syscall.DLT_JUNIPER_ATM_CEMIC": "syscall", - "syscall.DLT_JUNIPER_CHDLC": "syscall", - "syscall.DLT_JUNIPER_ES": "syscall", - "syscall.DLT_JUNIPER_ETHER": "syscall", - "syscall.DLT_JUNIPER_FIBRECHANNEL": "syscall", - "syscall.DLT_JUNIPER_FRELAY": "syscall", - "syscall.DLT_JUNIPER_GGSN": "syscall", - "syscall.DLT_JUNIPER_ISM": "syscall", - "syscall.DLT_JUNIPER_MFR": "syscall", - "syscall.DLT_JUNIPER_MLFR": "syscall", - "syscall.DLT_JUNIPER_MLPPP": "syscall", - "syscall.DLT_JUNIPER_MONITOR": "syscall", - "syscall.DLT_JUNIPER_PIC_PEER": "syscall", - "syscall.DLT_JUNIPER_PPP": "syscall", - "syscall.DLT_JUNIPER_PPPOE": "syscall", - "syscall.DLT_JUNIPER_PPPOE_ATM": "syscall", - "syscall.DLT_JUNIPER_SERVICES": "syscall", - "syscall.DLT_JUNIPER_SRX_E2E": "syscall", - "syscall.DLT_JUNIPER_ST": "syscall", - "syscall.DLT_JUNIPER_VP": "syscall", - "syscall.DLT_JUNIPER_VS": "syscall", - "syscall.DLT_LAPB_WITH_DIR": "syscall", - "syscall.DLT_LAPD": "syscall", - "syscall.DLT_LIN": "syscall", - "syscall.DLT_LINUX_EVDEV": "syscall", - "syscall.DLT_LINUX_IRDA": "syscall", - "syscall.DLT_LINUX_LAPD": "syscall", - "syscall.DLT_LINUX_PPP_WITHDIRECTION": "syscall", - "syscall.DLT_LINUX_SLL": "syscall", - "syscall.DLT_LOOP": "syscall", - "syscall.DLT_LTALK": "syscall", - "syscall.DLT_MATCHING_MAX": "syscall", - "syscall.DLT_MATCHING_MIN": "syscall", - "syscall.DLT_MFR": "syscall", - "syscall.DLT_MOST": "syscall", - "syscall.DLT_MPEG_2_TS": "syscall", - "syscall.DLT_MPLS": "syscall", - "syscall.DLT_MTP2": "syscall", - "syscall.DLT_MTP2_WITH_PHDR": "syscall", - "syscall.DLT_MTP3": "syscall", - "syscall.DLT_MUX27010": "syscall", - "syscall.DLT_NETANALYZER": "syscall", - "syscall.DLT_NETANALYZER_TRANSPARENT": "syscall", - "syscall.DLT_NFC_LLCP": "syscall", - "syscall.DLT_NFLOG": "syscall", - "syscall.DLT_NG40": "syscall", - "syscall.DLT_NULL": "syscall", - "syscall.DLT_PCI_EXP": "syscall", - "syscall.DLT_PFLOG": "syscall", - "syscall.DLT_PFSYNC": "syscall", - "syscall.DLT_PPI": "syscall", - "syscall.DLT_PPP": "syscall", - "syscall.DLT_PPP_BSDOS": "syscall", - "syscall.DLT_PPP_ETHER": "syscall", - "syscall.DLT_PPP_PPPD": "syscall", - "syscall.DLT_PPP_SERIAL": "syscall", - "syscall.DLT_PPP_WITH_DIR": "syscall", - "syscall.DLT_PPP_WITH_DIRECTION": "syscall", - "syscall.DLT_PRISM_HEADER": "syscall", - "syscall.DLT_PRONET": "syscall", - "syscall.DLT_RAIF1": "syscall", - "syscall.DLT_RAW": "syscall", - "syscall.DLT_RAWAF_MASK": "syscall", - "syscall.DLT_RIO": "syscall", - "syscall.DLT_SCCP": "syscall", - "syscall.DLT_SITA": "syscall", - "syscall.DLT_SLIP": "syscall", - "syscall.DLT_SLIP_BSDOS": "syscall", - "syscall.DLT_STANAG_5066_D_PDU": "syscall", - "syscall.DLT_SUNATM": "syscall", - "syscall.DLT_SYMANTEC_FIREWALL": "syscall", - "syscall.DLT_TZSP": "syscall", - "syscall.DLT_USB": "syscall", - "syscall.DLT_USB_LINUX": "syscall", - "syscall.DLT_USB_LINUX_MMAPPED": "syscall", - "syscall.DLT_USER0": "syscall", - "syscall.DLT_USER1": "syscall", - "syscall.DLT_USER10": "syscall", - "syscall.DLT_USER11": "syscall", - "syscall.DLT_USER12": "syscall", - "syscall.DLT_USER13": "syscall", - "syscall.DLT_USER14": "syscall", - "syscall.DLT_USER15": "syscall", - "syscall.DLT_USER2": "syscall", - "syscall.DLT_USER3": "syscall", - "syscall.DLT_USER4": "syscall", - "syscall.DLT_USER5": "syscall", - "syscall.DLT_USER6": "syscall", - "syscall.DLT_USER7": "syscall", - "syscall.DLT_USER8": "syscall", - "syscall.DLT_USER9": "syscall", - "syscall.DLT_WIHART": "syscall", - "syscall.DLT_X2E_SERIAL": "syscall", - "syscall.DLT_X2E_XORAYA": "syscall", - "syscall.DNSMXData": "syscall", - "syscall.DNSPTRData": "syscall", - "syscall.DNSRecord": "syscall", - "syscall.DNSSRVData": "syscall", - "syscall.DNSTXTData": "syscall", - "syscall.DNS_INFO_NO_RECORDS": "syscall", - "syscall.DNS_TYPE_A": "syscall", - "syscall.DNS_TYPE_A6": "syscall", - "syscall.DNS_TYPE_AAAA": "syscall", - "syscall.DNS_TYPE_ADDRS": "syscall", - "syscall.DNS_TYPE_AFSDB": "syscall", - "syscall.DNS_TYPE_ALL": "syscall", - "syscall.DNS_TYPE_ANY": "syscall", - "syscall.DNS_TYPE_ATMA": "syscall", - "syscall.DNS_TYPE_AXFR": "syscall", - "syscall.DNS_TYPE_CERT": "syscall", - "syscall.DNS_TYPE_CNAME": "syscall", - "syscall.DNS_TYPE_DHCID": "syscall", - "syscall.DNS_TYPE_DNAME": "syscall", - "syscall.DNS_TYPE_DNSKEY": "syscall", - "syscall.DNS_TYPE_DS": "syscall", - "syscall.DNS_TYPE_EID": "syscall", - "syscall.DNS_TYPE_GID": "syscall", - "syscall.DNS_TYPE_GPOS": "syscall", - "syscall.DNS_TYPE_HINFO": "syscall", - "syscall.DNS_TYPE_ISDN": "syscall", - "syscall.DNS_TYPE_IXFR": "syscall", - "syscall.DNS_TYPE_KEY": "syscall", - "syscall.DNS_TYPE_KX": "syscall", - "syscall.DNS_TYPE_LOC": "syscall", - "syscall.DNS_TYPE_MAILA": "syscall", - "syscall.DNS_TYPE_MAILB": "syscall", - "syscall.DNS_TYPE_MB": "syscall", - "syscall.DNS_TYPE_MD": "syscall", - "syscall.DNS_TYPE_MF": "syscall", - "syscall.DNS_TYPE_MG": "syscall", - "syscall.DNS_TYPE_MINFO": "syscall", - "syscall.DNS_TYPE_MR": "syscall", - "syscall.DNS_TYPE_MX": "syscall", - "syscall.DNS_TYPE_NAPTR": "syscall", - "syscall.DNS_TYPE_NBSTAT": "syscall", - "syscall.DNS_TYPE_NIMLOC": "syscall", - "syscall.DNS_TYPE_NS": "syscall", - "syscall.DNS_TYPE_NSAP": "syscall", - "syscall.DNS_TYPE_NSAPPTR": "syscall", - "syscall.DNS_TYPE_NSEC": "syscall", - "syscall.DNS_TYPE_NULL": "syscall", - "syscall.DNS_TYPE_NXT": "syscall", - "syscall.DNS_TYPE_OPT": "syscall", - "syscall.DNS_TYPE_PTR": "syscall", - "syscall.DNS_TYPE_PX": "syscall", - "syscall.DNS_TYPE_RP": "syscall", - "syscall.DNS_TYPE_RRSIG": "syscall", - "syscall.DNS_TYPE_RT": "syscall", - "syscall.DNS_TYPE_SIG": "syscall", - "syscall.DNS_TYPE_SINK": "syscall", - "syscall.DNS_TYPE_SOA": "syscall", - "syscall.DNS_TYPE_SRV": "syscall", - "syscall.DNS_TYPE_TEXT": "syscall", - "syscall.DNS_TYPE_TKEY": "syscall", - "syscall.DNS_TYPE_TSIG": "syscall", - "syscall.DNS_TYPE_UID": "syscall", - "syscall.DNS_TYPE_UINFO": "syscall", - "syscall.DNS_TYPE_UNSPEC": "syscall", - "syscall.DNS_TYPE_WINS": "syscall", - "syscall.DNS_TYPE_WINSR": "syscall", - "syscall.DNS_TYPE_WKS": "syscall", - "syscall.DNS_TYPE_X25": "syscall", - "syscall.DT_BLK": "syscall", - "syscall.DT_CHR": "syscall", - "syscall.DT_DIR": "syscall", - "syscall.DT_FIFO": "syscall", - "syscall.DT_LNK": "syscall", - "syscall.DT_REG": "syscall", - "syscall.DT_SOCK": "syscall", - "syscall.DT_UNKNOWN": "syscall", - "syscall.DT_WHT": "syscall", - "syscall.DUPLICATE_CLOSE_SOURCE": "syscall", - "syscall.DUPLICATE_SAME_ACCESS": "syscall", - "syscall.DeleteFile": "syscall", - "syscall.DetachLsf": "syscall", - "syscall.DeviceIoControl": "syscall", - "syscall.Dirent": "syscall", - "syscall.DnsNameCompare": "syscall", - "syscall.DnsQuery": "syscall", - "syscall.DnsRecordListFree": "syscall", - "syscall.DnsSectionAdditional": "syscall", - "syscall.DnsSectionAnswer": "syscall", - "syscall.DnsSectionAuthority": "syscall", - "syscall.DnsSectionQuestion": "syscall", - "syscall.Dup": "syscall", - "syscall.Dup2": "syscall", - "syscall.Dup3": "syscall", - "syscall.DuplicateHandle": "syscall", - "syscall.E2BIG": "syscall", - "syscall.EACCES": "syscall", - "syscall.EADDRINUSE": "syscall", - "syscall.EADDRNOTAVAIL": "syscall", - "syscall.EADV": "syscall", - "syscall.EAFNOSUPPORT": "syscall", - "syscall.EAGAIN": "syscall", - "syscall.EALREADY": "syscall", - "syscall.EAUTH": "syscall", - "syscall.EBADARCH": "syscall", - "syscall.EBADE": "syscall", - "syscall.EBADEXEC": "syscall", - "syscall.EBADF": "syscall", - "syscall.EBADFD": "syscall", - "syscall.EBADMACHO": "syscall", - "syscall.EBADMSG": "syscall", - "syscall.EBADR": "syscall", - "syscall.EBADRPC": "syscall", - "syscall.EBADRQC": "syscall", - "syscall.EBADSLT": "syscall", - "syscall.EBFONT": "syscall", - "syscall.EBUSY": "syscall", - "syscall.ECANCELED": "syscall", - "syscall.ECAPMODE": "syscall", - "syscall.ECHILD": "syscall", - "syscall.ECHO": "syscall", - "syscall.ECHOCTL": "syscall", - "syscall.ECHOE": "syscall", - "syscall.ECHOK": "syscall", - "syscall.ECHOKE": "syscall", - "syscall.ECHONL": "syscall", - "syscall.ECHOPRT": "syscall", - "syscall.ECHRNG": "syscall", - "syscall.ECOMM": "syscall", - "syscall.ECONNABORTED": "syscall", - "syscall.ECONNREFUSED": "syscall", - "syscall.ECONNRESET": "syscall", - "syscall.EDEADLK": "syscall", - "syscall.EDEADLOCK": "syscall", - "syscall.EDESTADDRREQ": "syscall", - "syscall.EDEVERR": "syscall", - "syscall.EDOM": "syscall", - "syscall.EDOOFUS": "syscall", - "syscall.EDOTDOT": "syscall", - "syscall.EDQUOT": "syscall", - "syscall.EEXIST": "syscall", - "syscall.EFAULT": "syscall", - "syscall.EFBIG": "syscall", - "syscall.EFER_LMA": "syscall", - "syscall.EFER_LME": "syscall", - "syscall.EFER_NXE": "syscall", - "syscall.EFER_SCE": "syscall", - "syscall.EFTYPE": "syscall", - "syscall.EHOSTDOWN": "syscall", - "syscall.EHOSTUNREACH": "syscall", - "syscall.EHWPOISON": "syscall", - "syscall.EIDRM": "syscall", - "syscall.EILSEQ": "syscall", - "syscall.EINPROGRESS": "syscall", - "syscall.EINTR": "syscall", - "syscall.EINVAL": "syscall", - "syscall.EIO": "syscall", - "syscall.EIPSEC": "syscall", - "syscall.EISCONN": "syscall", - "syscall.EISDIR": "syscall", - "syscall.EISNAM": "syscall", - "syscall.EKEYEXPIRED": "syscall", - "syscall.EKEYREJECTED": "syscall", - "syscall.EKEYREVOKED": "syscall", - "syscall.EL2HLT": "syscall", - "syscall.EL2NSYNC": "syscall", - "syscall.EL3HLT": "syscall", - "syscall.EL3RST": "syscall", - "syscall.ELAST": "syscall", - "syscall.ELF_NGREG": "syscall", - "syscall.ELF_PRARGSZ": "syscall", - "syscall.ELIBACC": "syscall", - "syscall.ELIBBAD": "syscall", - "syscall.ELIBEXEC": "syscall", - "syscall.ELIBMAX": "syscall", - "syscall.ELIBSCN": "syscall", - "syscall.ELNRNG": "syscall", - "syscall.ELOOP": "syscall", - "syscall.EMEDIUMTYPE": "syscall", - "syscall.EMFILE": "syscall", - "syscall.EMLINK": "syscall", - "syscall.EMSGSIZE": "syscall", - "syscall.EMT_TAGOVF": "syscall", - "syscall.EMULTIHOP": "syscall", - "syscall.EMUL_ENABLED": "syscall", - "syscall.EMUL_LINUX": "syscall", - "syscall.EMUL_LINUX32": "syscall", - "syscall.EMUL_MAXID": "syscall", - "syscall.EMUL_NATIVE": "syscall", - "syscall.ENAMETOOLONG": "syscall", - "syscall.ENAVAIL": "syscall", - "syscall.ENDRUNDISC": "syscall", - "syscall.ENEEDAUTH": "syscall", - "syscall.ENETDOWN": "syscall", - "syscall.ENETRESET": "syscall", - "syscall.ENETUNREACH": "syscall", - "syscall.ENFILE": "syscall", - "syscall.ENOANO": "syscall", - "syscall.ENOATTR": "syscall", - "syscall.ENOBUFS": "syscall", - "syscall.ENOCSI": "syscall", - "syscall.ENODATA": "syscall", - "syscall.ENODEV": "syscall", - "syscall.ENOENT": "syscall", - "syscall.ENOEXEC": "syscall", - "syscall.ENOKEY": "syscall", - "syscall.ENOLCK": "syscall", - "syscall.ENOLINK": "syscall", - "syscall.ENOMEDIUM": "syscall", - "syscall.ENOMEM": "syscall", - "syscall.ENOMSG": "syscall", - "syscall.ENONET": "syscall", - "syscall.ENOPKG": "syscall", - "syscall.ENOPOLICY": "syscall", - "syscall.ENOPROTOOPT": "syscall", - "syscall.ENOSPC": "syscall", - "syscall.ENOSR": "syscall", - "syscall.ENOSTR": "syscall", - "syscall.ENOSYS": "syscall", - "syscall.ENOTBLK": "syscall", - "syscall.ENOTCAPABLE": "syscall", - "syscall.ENOTCONN": "syscall", - "syscall.ENOTDIR": "syscall", - "syscall.ENOTEMPTY": "syscall", - "syscall.ENOTNAM": "syscall", - "syscall.ENOTRECOVERABLE": "syscall", - "syscall.ENOTSOCK": "syscall", - "syscall.ENOTSUP": "syscall", - "syscall.ENOTTY": "syscall", - "syscall.ENOTUNIQ": "syscall", - "syscall.ENXIO": "syscall", - "syscall.EN_SW_CTL_INF": "syscall", - "syscall.EN_SW_CTL_PREC": "syscall", - "syscall.EN_SW_CTL_ROUND": "syscall", - "syscall.EN_SW_DATACHAIN": "syscall", - "syscall.EN_SW_DENORM": "syscall", - "syscall.EN_SW_INVOP": "syscall", - "syscall.EN_SW_OVERFLOW": "syscall", - "syscall.EN_SW_PRECLOSS": "syscall", - "syscall.EN_SW_UNDERFLOW": "syscall", - "syscall.EN_SW_ZERODIV": "syscall", - "syscall.EOPNOTSUPP": "syscall", - "syscall.EOVERFLOW": "syscall", - "syscall.EOWNERDEAD": "syscall", - "syscall.EPERM": "syscall", - "syscall.EPFNOSUPPORT": "syscall", - "syscall.EPIPE": "syscall", - "syscall.EPOLLERR": "syscall", - "syscall.EPOLLET": "syscall", - "syscall.EPOLLHUP": "syscall", - "syscall.EPOLLIN": "syscall", - "syscall.EPOLLMSG": "syscall", - "syscall.EPOLLONESHOT": "syscall", - "syscall.EPOLLOUT": "syscall", - "syscall.EPOLLPRI": "syscall", - "syscall.EPOLLRDBAND": "syscall", - "syscall.EPOLLRDHUP": "syscall", - "syscall.EPOLLRDNORM": "syscall", - "syscall.EPOLLWRBAND": "syscall", - "syscall.EPOLLWRNORM": "syscall", - "syscall.EPOLL_CLOEXEC": "syscall", - "syscall.EPOLL_CTL_ADD": "syscall", - "syscall.EPOLL_CTL_DEL": "syscall", - "syscall.EPOLL_CTL_MOD": "syscall", - "syscall.EPOLL_NONBLOCK": "syscall", - "syscall.EPROCLIM": "syscall", - "syscall.EPROCUNAVAIL": "syscall", - "syscall.EPROGMISMATCH": "syscall", - "syscall.EPROGUNAVAIL": "syscall", - "syscall.EPROTO": "syscall", - "syscall.EPROTONOSUPPORT": "syscall", - "syscall.EPROTOTYPE": "syscall", - "syscall.EPWROFF": "syscall", - "syscall.ERANGE": "syscall", - "syscall.EREMCHG": "syscall", - "syscall.EREMOTE": "syscall", - "syscall.EREMOTEIO": "syscall", - "syscall.ERESTART": "syscall", - "syscall.ERFKILL": "syscall", - "syscall.EROFS": "syscall", - "syscall.ERPCMISMATCH": "syscall", - "syscall.ERROR_ACCESS_DENIED": "syscall", - "syscall.ERROR_ALREADY_EXISTS": "syscall", - "syscall.ERROR_BROKEN_PIPE": "syscall", - "syscall.ERROR_BUFFER_OVERFLOW": "syscall", - "syscall.ERROR_DIR_NOT_EMPTY": "syscall", - "syscall.ERROR_ENVVAR_NOT_FOUND": "syscall", - "syscall.ERROR_FILE_EXISTS": "syscall", - "syscall.ERROR_FILE_NOT_FOUND": "syscall", - "syscall.ERROR_HANDLE_EOF": "syscall", - "syscall.ERROR_INSUFFICIENT_BUFFER": "syscall", - "syscall.ERROR_IO_PENDING": "syscall", - "syscall.ERROR_MOD_NOT_FOUND": "syscall", - "syscall.ERROR_MORE_DATA": "syscall", - "syscall.ERROR_NETNAME_DELETED": "syscall", - "syscall.ERROR_NOT_FOUND": "syscall", - "syscall.ERROR_NO_MORE_FILES": "syscall", - "syscall.ERROR_OPERATION_ABORTED": "syscall", - "syscall.ERROR_PATH_NOT_FOUND": "syscall", - "syscall.ERROR_PRIVILEGE_NOT_HELD": "syscall", - "syscall.ERROR_PROC_NOT_FOUND": "syscall", - "syscall.ESHLIBVERS": "syscall", - "syscall.ESHUTDOWN": "syscall", - "syscall.ESOCKTNOSUPPORT": "syscall", - "syscall.ESPIPE": "syscall", - "syscall.ESRCH": "syscall", - "syscall.ESRMNT": "syscall", - "syscall.ESTALE": "syscall", - "syscall.ESTRPIPE": "syscall", - "syscall.ETHERCAP_JUMBO_MTU": "syscall", - "syscall.ETHERCAP_VLAN_HWTAGGING": "syscall", - "syscall.ETHERCAP_VLAN_MTU": "syscall", - "syscall.ETHERMIN": "syscall", - "syscall.ETHERMTU": "syscall", - "syscall.ETHERMTU_JUMBO": "syscall", - "syscall.ETHERTYPE_8023": "syscall", - "syscall.ETHERTYPE_AARP": "syscall", - "syscall.ETHERTYPE_ACCTON": "syscall", - "syscall.ETHERTYPE_AEONIC": "syscall", - "syscall.ETHERTYPE_ALPHA": "syscall", - "syscall.ETHERTYPE_AMBER": "syscall", - "syscall.ETHERTYPE_AMOEBA": "syscall", - "syscall.ETHERTYPE_AOE": "syscall", - "syscall.ETHERTYPE_APOLLO": "syscall", - "syscall.ETHERTYPE_APOLLODOMAIN": "syscall", - "syscall.ETHERTYPE_APPLETALK": "syscall", - "syscall.ETHERTYPE_APPLITEK": "syscall", - "syscall.ETHERTYPE_ARGONAUT": "syscall", - "syscall.ETHERTYPE_ARP": "syscall", - "syscall.ETHERTYPE_AT": "syscall", - "syscall.ETHERTYPE_ATALK": "syscall", - "syscall.ETHERTYPE_ATOMIC": "syscall", - "syscall.ETHERTYPE_ATT": "syscall", - "syscall.ETHERTYPE_ATTSTANFORD": "syscall", - "syscall.ETHERTYPE_AUTOPHON": "syscall", - "syscall.ETHERTYPE_AXIS": "syscall", - "syscall.ETHERTYPE_BCLOOP": "syscall", - "syscall.ETHERTYPE_BOFL": "syscall", - "syscall.ETHERTYPE_CABLETRON": "syscall", - "syscall.ETHERTYPE_CHAOS": "syscall", - "syscall.ETHERTYPE_COMDESIGN": "syscall", - "syscall.ETHERTYPE_COMPUGRAPHIC": "syscall", - "syscall.ETHERTYPE_COUNTERPOINT": "syscall", - "syscall.ETHERTYPE_CRONUS": "syscall", - "syscall.ETHERTYPE_CRONUSVLN": "syscall", - "syscall.ETHERTYPE_DCA": "syscall", - "syscall.ETHERTYPE_DDE": "syscall", - "syscall.ETHERTYPE_DEBNI": "syscall", - "syscall.ETHERTYPE_DECAM": "syscall", - "syscall.ETHERTYPE_DECCUST": "syscall", - "syscall.ETHERTYPE_DECDIAG": "syscall", - "syscall.ETHERTYPE_DECDNS": "syscall", - "syscall.ETHERTYPE_DECDTS": "syscall", - "syscall.ETHERTYPE_DECEXPER": "syscall", - "syscall.ETHERTYPE_DECLAST": "syscall", - "syscall.ETHERTYPE_DECLTM": "syscall", - "syscall.ETHERTYPE_DECMUMPS": "syscall", - "syscall.ETHERTYPE_DECNETBIOS": "syscall", - "syscall.ETHERTYPE_DELTACON": "syscall", - "syscall.ETHERTYPE_DIDDLE": "syscall", - "syscall.ETHERTYPE_DLOG1": "syscall", - "syscall.ETHERTYPE_DLOG2": "syscall", - "syscall.ETHERTYPE_DN": "syscall", - "syscall.ETHERTYPE_DOGFIGHT": "syscall", - "syscall.ETHERTYPE_DSMD": "syscall", - "syscall.ETHERTYPE_ECMA": "syscall", - "syscall.ETHERTYPE_ENCRYPT": "syscall", - "syscall.ETHERTYPE_ES": "syscall", - "syscall.ETHERTYPE_EXCELAN": "syscall", - "syscall.ETHERTYPE_EXPERDATA": "syscall", - "syscall.ETHERTYPE_FLIP": "syscall", - "syscall.ETHERTYPE_FLOWCONTROL": "syscall", - "syscall.ETHERTYPE_FRARP": "syscall", - "syscall.ETHERTYPE_GENDYN": "syscall", - "syscall.ETHERTYPE_HAYES": "syscall", - "syscall.ETHERTYPE_HIPPI_FP": "syscall", - "syscall.ETHERTYPE_HITACHI": "syscall", - "syscall.ETHERTYPE_HP": "syscall", - "syscall.ETHERTYPE_IEEEPUP": "syscall", - "syscall.ETHERTYPE_IEEEPUPAT": "syscall", - "syscall.ETHERTYPE_IMLBL": "syscall", - "syscall.ETHERTYPE_IMLBLDIAG": "syscall", - "syscall.ETHERTYPE_IP": "syscall", - "syscall.ETHERTYPE_IPAS": "syscall", - "syscall.ETHERTYPE_IPV6": "syscall", - "syscall.ETHERTYPE_IPX": "syscall", - "syscall.ETHERTYPE_IPXNEW": "syscall", - "syscall.ETHERTYPE_KALPANA": "syscall", - "syscall.ETHERTYPE_LANBRIDGE": "syscall", - "syscall.ETHERTYPE_LANPROBE": "syscall", - "syscall.ETHERTYPE_LAT": "syscall", - "syscall.ETHERTYPE_LBACK": "syscall", - "syscall.ETHERTYPE_LITTLE": "syscall", - "syscall.ETHERTYPE_LLDP": "syscall", - "syscall.ETHERTYPE_LOGICRAFT": "syscall", - "syscall.ETHERTYPE_LOOPBACK": "syscall", - "syscall.ETHERTYPE_MATRA": "syscall", - "syscall.ETHERTYPE_MAX": "syscall", - "syscall.ETHERTYPE_MERIT": "syscall", - "syscall.ETHERTYPE_MICP": "syscall", - "syscall.ETHERTYPE_MOPDL": "syscall", - "syscall.ETHERTYPE_MOPRC": "syscall", - "syscall.ETHERTYPE_MOTOROLA": "syscall", - "syscall.ETHERTYPE_MPLS": "syscall", - "syscall.ETHERTYPE_MPLS_MCAST": "syscall", - "syscall.ETHERTYPE_MUMPS": "syscall", - "syscall.ETHERTYPE_NBPCC": "syscall", - "syscall.ETHERTYPE_NBPCLAIM": "syscall", - "syscall.ETHERTYPE_NBPCLREQ": "syscall", - "syscall.ETHERTYPE_NBPCLRSP": "syscall", - "syscall.ETHERTYPE_NBPCREQ": "syscall", - "syscall.ETHERTYPE_NBPCRSP": "syscall", - "syscall.ETHERTYPE_NBPDG": "syscall", - "syscall.ETHERTYPE_NBPDGB": "syscall", - "syscall.ETHERTYPE_NBPDLTE": "syscall", - "syscall.ETHERTYPE_NBPRAR": "syscall", - "syscall.ETHERTYPE_NBPRAS": "syscall", - "syscall.ETHERTYPE_NBPRST": "syscall", - "syscall.ETHERTYPE_NBPSCD": "syscall", - "syscall.ETHERTYPE_NBPVCD": "syscall", - "syscall.ETHERTYPE_NBS": "syscall", - "syscall.ETHERTYPE_NCD": "syscall", - "syscall.ETHERTYPE_NESTAR": "syscall", - "syscall.ETHERTYPE_NETBEUI": "syscall", - "syscall.ETHERTYPE_NOVELL": "syscall", - "syscall.ETHERTYPE_NS": "syscall", - "syscall.ETHERTYPE_NSAT": "syscall", - "syscall.ETHERTYPE_NSCOMPAT": "syscall", - "syscall.ETHERTYPE_NTRAILER": "syscall", - "syscall.ETHERTYPE_OS9": "syscall", - "syscall.ETHERTYPE_OS9NET": "syscall", - "syscall.ETHERTYPE_PACER": "syscall", - "syscall.ETHERTYPE_PAE": "syscall", - "syscall.ETHERTYPE_PCS": "syscall", - "syscall.ETHERTYPE_PLANNING": "syscall", - "syscall.ETHERTYPE_PPP": "syscall", - "syscall.ETHERTYPE_PPPOE": "syscall", - "syscall.ETHERTYPE_PPPOEDISC": "syscall", - "syscall.ETHERTYPE_PRIMENTS": "syscall", - "syscall.ETHERTYPE_PUP": "syscall", - "syscall.ETHERTYPE_PUPAT": "syscall", - "syscall.ETHERTYPE_QINQ": "syscall", - "syscall.ETHERTYPE_RACAL": "syscall", - "syscall.ETHERTYPE_RATIONAL": "syscall", - "syscall.ETHERTYPE_RAWFR": "syscall", - "syscall.ETHERTYPE_RCL": "syscall", - "syscall.ETHERTYPE_RDP": "syscall", - "syscall.ETHERTYPE_RETIX": "syscall", - "syscall.ETHERTYPE_REVARP": "syscall", - "syscall.ETHERTYPE_SCA": "syscall", - "syscall.ETHERTYPE_SECTRA": "syscall", - "syscall.ETHERTYPE_SECUREDATA": "syscall", - "syscall.ETHERTYPE_SGITW": "syscall", - "syscall.ETHERTYPE_SG_BOUNCE": "syscall", - "syscall.ETHERTYPE_SG_DIAG": "syscall", - "syscall.ETHERTYPE_SG_NETGAMES": "syscall", - "syscall.ETHERTYPE_SG_RESV": "syscall", - "syscall.ETHERTYPE_SIMNET": "syscall", - "syscall.ETHERTYPE_SLOW": "syscall", - "syscall.ETHERTYPE_SLOWPROTOCOLS": "syscall", - "syscall.ETHERTYPE_SNA": "syscall", - "syscall.ETHERTYPE_SNMP": "syscall", - "syscall.ETHERTYPE_SONIX": "syscall", - "syscall.ETHERTYPE_SPIDER": "syscall", - "syscall.ETHERTYPE_SPRITE": "syscall", - "syscall.ETHERTYPE_STP": "syscall", - "syscall.ETHERTYPE_TALARIS": "syscall", - "syscall.ETHERTYPE_TALARISMC": "syscall", - "syscall.ETHERTYPE_TCPCOMP": "syscall", - "syscall.ETHERTYPE_TCPSM": "syscall", - "syscall.ETHERTYPE_TEC": "syscall", - "syscall.ETHERTYPE_TIGAN": "syscall", - "syscall.ETHERTYPE_TRAIL": "syscall", - "syscall.ETHERTYPE_TRANSETHER": "syscall", - "syscall.ETHERTYPE_TYMSHARE": "syscall", - "syscall.ETHERTYPE_UBBST": "syscall", - "syscall.ETHERTYPE_UBDEBUG": "syscall", - "syscall.ETHERTYPE_UBDIAGLOOP": "syscall", - "syscall.ETHERTYPE_UBDL": "syscall", - "syscall.ETHERTYPE_UBNIU": "syscall", - "syscall.ETHERTYPE_UBNMC": "syscall", - "syscall.ETHERTYPE_VALID": "syscall", - "syscall.ETHERTYPE_VARIAN": "syscall", - "syscall.ETHERTYPE_VAXELN": "syscall", - "syscall.ETHERTYPE_VEECO": "syscall", - "syscall.ETHERTYPE_VEXP": "syscall", - "syscall.ETHERTYPE_VGLAB": "syscall", - "syscall.ETHERTYPE_VINES": "syscall", - "syscall.ETHERTYPE_VINESECHO": "syscall", - "syscall.ETHERTYPE_VINESLOOP": "syscall", - "syscall.ETHERTYPE_VITAL": "syscall", - "syscall.ETHERTYPE_VLAN": "syscall", - "syscall.ETHERTYPE_VLTLMAN": "syscall", - "syscall.ETHERTYPE_VPROD": "syscall", - "syscall.ETHERTYPE_VURESERVED": "syscall", - "syscall.ETHERTYPE_WATERLOO": "syscall", - "syscall.ETHERTYPE_WELLFLEET": "syscall", - "syscall.ETHERTYPE_X25": "syscall", - "syscall.ETHERTYPE_X75": "syscall", - "syscall.ETHERTYPE_XNSSM": "syscall", - "syscall.ETHERTYPE_XTP": "syscall", - "syscall.ETHER_ADDR_LEN": "syscall", - "syscall.ETHER_ALIGN": "syscall", - "syscall.ETHER_CRC_LEN": "syscall", - "syscall.ETHER_CRC_POLY_BE": "syscall", - "syscall.ETHER_CRC_POLY_LE": "syscall", - "syscall.ETHER_HDR_LEN": "syscall", - "syscall.ETHER_MAX_DIX_LEN": "syscall", - "syscall.ETHER_MAX_LEN": "syscall", - "syscall.ETHER_MAX_LEN_JUMBO": "syscall", - "syscall.ETHER_MIN_LEN": "syscall", - "syscall.ETHER_PPPOE_ENCAP_LEN": "syscall", - "syscall.ETHER_TYPE_LEN": "syscall", - "syscall.ETHER_VLAN_ENCAP_LEN": "syscall", - "syscall.ETH_P_1588": "syscall", - "syscall.ETH_P_8021Q": "syscall", - "syscall.ETH_P_802_2": "syscall", - "syscall.ETH_P_802_3": "syscall", - "syscall.ETH_P_AARP": "syscall", - "syscall.ETH_P_ALL": "syscall", - "syscall.ETH_P_AOE": "syscall", - "syscall.ETH_P_ARCNET": "syscall", - "syscall.ETH_P_ARP": "syscall", - "syscall.ETH_P_ATALK": "syscall", - "syscall.ETH_P_ATMFATE": "syscall", - "syscall.ETH_P_ATMMPOA": "syscall", - "syscall.ETH_P_AX25": "syscall", - "syscall.ETH_P_BPQ": "syscall", - "syscall.ETH_P_CAIF": "syscall", - "syscall.ETH_P_CAN": "syscall", - "syscall.ETH_P_CONTROL": "syscall", - "syscall.ETH_P_CUST": "syscall", - "syscall.ETH_P_DDCMP": "syscall", - "syscall.ETH_P_DEC": "syscall", - "syscall.ETH_P_DIAG": "syscall", - "syscall.ETH_P_DNA_DL": "syscall", - "syscall.ETH_P_DNA_RC": "syscall", - "syscall.ETH_P_DNA_RT": "syscall", - "syscall.ETH_P_DSA": "syscall", - "syscall.ETH_P_ECONET": "syscall", - "syscall.ETH_P_EDSA": "syscall", - "syscall.ETH_P_FCOE": "syscall", - "syscall.ETH_P_FIP": "syscall", - "syscall.ETH_P_HDLC": "syscall", - "syscall.ETH_P_IEEE802154": "syscall", - "syscall.ETH_P_IEEEPUP": "syscall", - "syscall.ETH_P_IEEEPUPAT": "syscall", - "syscall.ETH_P_IP": "syscall", - "syscall.ETH_P_IPV6": "syscall", - "syscall.ETH_P_IPX": "syscall", - "syscall.ETH_P_IRDA": "syscall", - "syscall.ETH_P_LAT": "syscall", - "syscall.ETH_P_LINK_CTL": "syscall", - "syscall.ETH_P_LOCALTALK": "syscall", - "syscall.ETH_P_LOOP": "syscall", - "syscall.ETH_P_MOBITEX": "syscall", - "syscall.ETH_P_MPLS_MC": "syscall", - "syscall.ETH_P_MPLS_UC": "syscall", - "syscall.ETH_P_PAE": "syscall", - "syscall.ETH_P_PAUSE": "syscall", - "syscall.ETH_P_PHONET": "syscall", - "syscall.ETH_P_PPPTALK": "syscall", - "syscall.ETH_P_PPP_DISC": "syscall", - "syscall.ETH_P_PPP_MP": "syscall", - "syscall.ETH_P_PPP_SES": "syscall", - "syscall.ETH_P_PUP": "syscall", - "syscall.ETH_P_PUPAT": "syscall", - "syscall.ETH_P_RARP": "syscall", - "syscall.ETH_P_SCA": "syscall", - "syscall.ETH_P_SLOW": "syscall", - "syscall.ETH_P_SNAP": "syscall", - "syscall.ETH_P_TEB": "syscall", - "syscall.ETH_P_TIPC": "syscall", - "syscall.ETH_P_TRAILER": "syscall", - "syscall.ETH_P_TR_802_2": "syscall", - "syscall.ETH_P_WAN_PPP": "syscall", - "syscall.ETH_P_WCCP": "syscall", - "syscall.ETH_P_X25": "syscall", - "syscall.ETIME": "syscall", - "syscall.ETIMEDOUT": "syscall", - "syscall.ETOOMANYREFS": "syscall", - "syscall.ETXTBSY": "syscall", - "syscall.EUCLEAN": "syscall", - "syscall.EUNATCH": "syscall", - "syscall.EUSERS": "syscall", - "syscall.EVFILT_AIO": "syscall", - "syscall.EVFILT_FS": "syscall", - "syscall.EVFILT_LIO": "syscall", - "syscall.EVFILT_MACHPORT": "syscall", - "syscall.EVFILT_PROC": "syscall", - "syscall.EVFILT_READ": "syscall", - "syscall.EVFILT_SIGNAL": "syscall", - "syscall.EVFILT_SYSCOUNT": "syscall", - "syscall.EVFILT_THREADMARKER": "syscall", - "syscall.EVFILT_TIMER": "syscall", - "syscall.EVFILT_USER": "syscall", - "syscall.EVFILT_VM": "syscall", - "syscall.EVFILT_VNODE": "syscall", - "syscall.EVFILT_WRITE": "syscall", - "syscall.EV_ADD": "syscall", - "syscall.EV_CLEAR": "syscall", - "syscall.EV_DELETE": "syscall", - "syscall.EV_DISABLE": "syscall", - "syscall.EV_DISPATCH": "syscall", - "syscall.EV_DROP": "syscall", - "syscall.EV_ENABLE": "syscall", - "syscall.EV_EOF": "syscall", - "syscall.EV_ERROR": "syscall", - "syscall.EV_FLAG0": "syscall", - "syscall.EV_FLAG1": "syscall", - "syscall.EV_ONESHOT": "syscall", - "syscall.EV_OOBAND": "syscall", - "syscall.EV_POLL": "syscall", - "syscall.EV_RECEIPT": "syscall", - "syscall.EV_SYSFLAGS": "syscall", - "syscall.EWINDOWS": "syscall", - "syscall.EWOULDBLOCK": "syscall", - "syscall.EXDEV": "syscall", - "syscall.EXFULL": "syscall", - "syscall.EXTA": "syscall", - "syscall.EXTB": "syscall", - "syscall.EXTPROC": "syscall", - "syscall.Environ": "syscall", - "syscall.EpollCreate": "syscall", - "syscall.EpollCreate1": "syscall", - "syscall.EpollCtl": "syscall", - "syscall.EpollEvent": "syscall", - "syscall.EpollWait": "syscall", - "syscall.Errno": "syscall", - "syscall.EscapeArg": "syscall", - "syscall.Exchangedata": "syscall", - "syscall.Exec": "syscall", - "syscall.Exit": "syscall", - "syscall.ExitProcess": "syscall", - "syscall.FD_CLOEXEC": "syscall", - "syscall.FD_SETSIZE": "syscall", - "syscall.FILE_ACTION_ADDED": "syscall", - "syscall.FILE_ACTION_MODIFIED": "syscall", - "syscall.FILE_ACTION_REMOVED": "syscall", - "syscall.FILE_ACTION_RENAMED_NEW_NAME": "syscall", - "syscall.FILE_ACTION_RENAMED_OLD_NAME": "syscall", - "syscall.FILE_APPEND_DATA": "syscall", - "syscall.FILE_ATTRIBUTE_ARCHIVE": "syscall", - "syscall.FILE_ATTRIBUTE_DIRECTORY": "syscall", - "syscall.FILE_ATTRIBUTE_HIDDEN": "syscall", - "syscall.FILE_ATTRIBUTE_NORMAL": "syscall", - "syscall.FILE_ATTRIBUTE_READONLY": "syscall", - "syscall.FILE_ATTRIBUTE_REPARSE_POINT": "syscall", - "syscall.FILE_ATTRIBUTE_SYSTEM": "syscall", - "syscall.FILE_BEGIN": "syscall", - "syscall.FILE_CURRENT": "syscall", - "syscall.FILE_END": "syscall", - "syscall.FILE_FLAG_BACKUP_SEMANTICS": "syscall", - "syscall.FILE_FLAG_OPEN_REPARSE_POINT": "syscall", - "syscall.FILE_FLAG_OVERLAPPED": "syscall", - "syscall.FILE_LIST_DIRECTORY": "syscall", - "syscall.FILE_MAP_COPY": "syscall", - "syscall.FILE_MAP_EXECUTE": "syscall", - "syscall.FILE_MAP_READ": "syscall", - "syscall.FILE_MAP_WRITE": "syscall", - "syscall.FILE_NOTIFY_CHANGE_ATTRIBUTES": "syscall", - "syscall.FILE_NOTIFY_CHANGE_CREATION": "syscall", - "syscall.FILE_NOTIFY_CHANGE_DIR_NAME": "syscall", - "syscall.FILE_NOTIFY_CHANGE_FILE_NAME": "syscall", - "syscall.FILE_NOTIFY_CHANGE_LAST_ACCESS": "syscall", - "syscall.FILE_NOTIFY_CHANGE_LAST_WRITE": "syscall", - "syscall.FILE_NOTIFY_CHANGE_SIZE": "syscall", - "syscall.FILE_SHARE_DELETE": "syscall", - "syscall.FILE_SHARE_READ": "syscall", - "syscall.FILE_SHARE_WRITE": "syscall", - "syscall.FILE_SKIP_COMPLETION_PORT_ON_SUCCESS": "syscall", - "syscall.FILE_SKIP_SET_EVENT_ON_HANDLE": "syscall", - "syscall.FILE_TYPE_CHAR": "syscall", - "syscall.FILE_TYPE_DISK": "syscall", - "syscall.FILE_TYPE_PIPE": "syscall", - "syscall.FILE_TYPE_REMOTE": "syscall", - "syscall.FILE_TYPE_UNKNOWN": "syscall", - "syscall.FILE_WRITE_ATTRIBUTES": "syscall", - "syscall.FLUSHO": "syscall", - "syscall.FORMAT_MESSAGE_ALLOCATE_BUFFER": "syscall", - "syscall.FORMAT_MESSAGE_ARGUMENT_ARRAY": "syscall", - "syscall.FORMAT_MESSAGE_FROM_HMODULE": "syscall", - "syscall.FORMAT_MESSAGE_FROM_STRING": "syscall", - "syscall.FORMAT_MESSAGE_FROM_SYSTEM": "syscall", - "syscall.FORMAT_MESSAGE_IGNORE_INSERTS": "syscall", - "syscall.FORMAT_MESSAGE_MAX_WIDTH_MASK": "syscall", - "syscall.FSCTL_GET_REPARSE_POINT": "syscall", - "syscall.F_ADDFILESIGS": "syscall", - "syscall.F_ADDSIGS": "syscall", - "syscall.F_ALLOCATEALL": "syscall", - "syscall.F_ALLOCATECONTIG": "syscall", - "syscall.F_CANCEL": "syscall", - "syscall.F_CHKCLEAN": "syscall", - "syscall.F_CLOSEM": "syscall", - "syscall.F_DUP2FD": "syscall", - "syscall.F_DUP2FD_CLOEXEC": "syscall", - "syscall.F_DUPFD": "syscall", - "syscall.F_DUPFD_CLOEXEC": "syscall", - "syscall.F_EXLCK": "syscall", - "syscall.F_FLUSH_DATA": "syscall", - "syscall.F_FREEZE_FS": "syscall", - "syscall.F_FSCTL": "syscall", - "syscall.F_FSDIRMASK": "syscall", - "syscall.F_FSIN": "syscall", - "syscall.F_FSINOUT": "syscall", - "syscall.F_FSOUT": "syscall", - "syscall.F_FSPRIV": "syscall", - "syscall.F_FSVOID": "syscall", - "syscall.F_FULLFSYNC": "syscall", - "syscall.F_GETFD": "syscall", - "syscall.F_GETFL": "syscall", - "syscall.F_GETLEASE": "syscall", - "syscall.F_GETLK": "syscall", - "syscall.F_GETLK64": "syscall", - "syscall.F_GETLKPID": "syscall", - "syscall.F_GETNOSIGPIPE": "syscall", - "syscall.F_GETOWN": "syscall", - "syscall.F_GETOWN_EX": "syscall", - "syscall.F_GETPATH": "syscall", - "syscall.F_GETPATH_MTMINFO": "syscall", - "syscall.F_GETPIPE_SZ": "syscall", - "syscall.F_GETPROTECTIONCLASS": "syscall", - "syscall.F_GETSIG": "syscall", - "syscall.F_GLOBAL_NOCACHE": "syscall", - "syscall.F_LOCK": "syscall", - "syscall.F_LOG2PHYS": "syscall", - "syscall.F_LOG2PHYS_EXT": "syscall", - "syscall.F_MARKDEPENDENCY": "syscall", - "syscall.F_MAXFD": "syscall", - "syscall.F_NOCACHE": "syscall", - "syscall.F_NODIRECT": "syscall", - "syscall.F_NOTIFY": "syscall", - "syscall.F_OGETLK": "syscall", - "syscall.F_OK": "syscall", - "syscall.F_OSETLK": "syscall", - "syscall.F_OSETLKW": "syscall", - "syscall.F_PARAM_MASK": "syscall", - "syscall.F_PARAM_MAX": "syscall", - "syscall.F_PATHPKG_CHECK": "syscall", - "syscall.F_PEOFPOSMODE": "syscall", - "syscall.F_PREALLOCATE": "syscall", - "syscall.F_RDADVISE": "syscall", - "syscall.F_RDAHEAD": "syscall", - "syscall.F_RDLCK": "syscall", - "syscall.F_READAHEAD": "syscall", - "syscall.F_READBOOTSTRAP": "syscall", - "syscall.F_SETBACKINGSTORE": "syscall", - "syscall.F_SETFD": "syscall", - "syscall.F_SETFL": "syscall", - "syscall.F_SETLEASE": "syscall", - "syscall.F_SETLK": "syscall", - "syscall.F_SETLK64": "syscall", - "syscall.F_SETLKW": "syscall", - "syscall.F_SETLKW64": "syscall", - "syscall.F_SETLK_REMOTE": "syscall", - "syscall.F_SETNOSIGPIPE": "syscall", - "syscall.F_SETOWN": "syscall", - "syscall.F_SETOWN_EX": "syscall", - "syscall.F_SETPIPE_SZ": "syscall", - "syscall.F_SETPROTECTIONCLASS": "syscall", - "syscall.F_SETSIG": "syscall", - "syscall.F_SETSIZE": "syscall", - "syscall.F_SHLCK": "syscall", - "syscall.F_TEST": "syscall", - "syscall.F_THAW_FS": "syscall", - "syscall.F_TLOCK": "syscall", - "syscall.F_ULOCK": "syscall", - "syscall.F_UNLCK": "syscall", - "syscall.F_UNLCKSYS": "syscall", - "syscall.F_VOLPOSMODE": "syscall", - "syscall.F_WRITEBOOTSTRAP": "syscall", - "syscall.F_WRLCK": "syscall", - "syscall.Faccessat": "syscall", - "syscall.Fallocate": "syscall", - "syscall.Fbootstraptransfer_t": "syscall", - "syscall.Fchdir": "syscall", - "syscall.Fchflags": "syscall", - "syscall.Fchmod": "syscall", - "syscall.Fchmodat": "syscall", - "syscall.Fchown": "syscall", - "syscall.Fchownat": "syscall", - "syscall.FcntlFlock": "syscall", - "syscall.FdSet": "syscall", - "syscall.Fdatasync": "syscall", - "syscall.FileNotifyInformation": "syscall", - "syscall.Filetime": "syscall", - "syscall.FindClose": "syscall", - "syscall.FindFirstFile": "syscall", - "syscall.FindNextFile": "syscall", - "syscall.Flock": "syscall", - "syscall.Flock_t": "syscall", - "syscall.FlushBpf": "syscall", - "syscall.FlushFileBuffers": "syscall", - "syscall.FlushViewOfFile": "syscall", - "syscall.ForkExec": "syscall", - "syscall.ForkLock": "syscall", - "syscall.FormatMessage": "syscall", - "syscall.Fpathconf": "syscall", - "syscall.FreeAddrInfoW": "syscall", - "syscall.FreeEnvironmentStrings": "syscall", - "syscall.FreeLibrary": "syscall", - "syscall.Fsid": "syscall", - "syscall.Fstat": "syscall", - "syscall.Fstatfs": "syscall", - "syscall.Fstore_t": "syscall", - "syscall.Fsync": "syscall", - "syscall.Ftruncate": "syscall", - "syscall.FullPath": "syscall", - "syscall.Futimes": "syscall", - "syscall.Futimesat": "syscall", - "syscall.GENERIC_ALL": "syscall", - "syscall.GENERIC_EXECUTE": "syscall", - "syscall.GENERIC_READ": "syscall", - "syscall.GENERIC_WRITE": "syscall", - "syscall.GUID": "syscall", - "syscall.GetAcceptExSockaddrs": "syscall", - "syscall.GetAdaptersInfo": "syscall", - "syscall.GetAddrInfoW": "syscall", - "syscall.GetCommandLine": "syscall", - "syscall.GetComputerName": "syscall", - "syscall.GetConsoleMode": "syscall", - "syscall.GetCurrentDirectory": "syscall", - "syscall.GetCurrentProcess": "syscall", - "syscall.GetEnvironmentStrings": "syscall", - "syscall.GetEnvironmentVariable": "syscall", - "syscall.GetExitCodeProcess": "syscall", - "syscall.GetFileAttributes": "syscall", - "syscall.GetFileAttributesEx": "syscall", - "syscall.GetFileExInfoStandard": "syscall", - "syscall.GetFileExMaxInfoLevel": "syscall", - "syscall.GetFileInformationByHandle": "syscall", - "syscall.GetFileType": "syscall", - "syscall.GetFullPathName": "syscall", - "syscall.GetHostByName": "syscall", - "syscall.GetIfEntry": "syscall", - "syscall.GetLastError": "syscall", - "syscall.GetLengthSid": "syscall", - "syscall.GetLongPathName": "syscall", - "syscall.GetProcAddress": "syscall", - "syscall.GetProcessTimes": "syscall", - "syscall.GetProtoByName": "syscall", - "syscall.GetQueuedCompletionStatus": "syscall", - "syscall.GetServByName": "syscall", - "syscall.GetShortPathName": "syscall", - "syscall.GetStartupInfo": "syscall", - "syscall.GetStdHandle": "syscall", - "syscall.GetSystemTimeAsFileTime": "syscall", - "syscall.GetTempPath": "syscall", - "syscall.GetTimeZoneInformation": "syscall", - "syscall.GetTokenInformation": "syscall", - "syscall.GetUserNameEx": "syscall", - "syscall.GetUserProfileDirectory": "syscall", - "syscall.GetVersion": "syscall", - "syscall.Getcwd": "syscall", - "syscall.Getdents": "syscall", - "syscall.Getdirentries": "syscall", - "syscall.Getdtablesize": "syscall", - "syscall.Getegid": "syscall", - "syscall.Getenv": "syscall", - "syscall.Geteuid": "syscall", - "syscall.Getfsstat": "syscall", - "syscall.Getgid": "syscall", - "syscall.Getgroups": "syscall", - "syscall.Getpagesize": "syscall", - "syscall.Getpeername": "syscall", - "syscall.Getpgid": "syscall", - "syscall.Getpgrp": "syscall", - "syscall.Getpid": "syscall", - "syscall.Getppid": "syscall", - "syscall.Getpriority": "syscall", - "syscall.Getrlimit": "syscall", - "syscall.Getrusage": "syscall", - "syscall.Getsid": "syscall", - "syscall.Getsockname": "syscall", - "syscall.Getsockopt": "syscall", - "syscall.GetsockoptByte": "syscall", - "syscall.GetsockoptICMPv6Filter": "syscall", - "syscall.GetsockoptIPMreq": "syscall", - "syscall.GetsockoptIPMreqn": "syscall", - "syscall.GetsockoptIPv6MTUInfo": "syscall", - "syscall.GetsockoptIPv6Mreq": "syscall", - "syscall.GetsockoptInet4Addr": "syscall", - "syscall.GetsockoptInt": "syscall", - "syscall.GetsockoptUcred": "syscall", - "syscall.Gettid": "syscall", - "syscall.Gettimeofday": "syscall", - "syscall.Getuid": "syscall", - "syscall.Getwd": "syscall", - "syscall.Getxattr": "syscall", - "syscall.HANDLE_FLAG_INHERIT": "syscall", - "syscall.HKEY_CLASSES_ROOT": "syscall", - "syscall.HKEY_CURRENT_CONFIG": "syscall", - "syscall.HKEY_CURRENT_USER": "syscall", - "syscall.HKEY_DYN_DATA": "syscall", - "syscall.HKEY_LOCAL_MACHINE": "syscall", - "syscall.HKEY_PERFORMANCE_DATA": "syscall", - "syscall.HKEY_USERS": "syscall", - "syscall.HUPCL": "syscall", - "syscall.Handle": "syscall", - "syscall.Hostent": "syscall", - "syscall.ICANON": "syscall", - "syscall.ICMP6_FILTER": "syscall", - "syscall.ICMPV6_FILTER": "syscall", - "syscall.ICMPv6Filter": "syscall", - "syscall.ICRNL": "syscall", - "syscall.IEXTEN": "syscall", - "syscall.IFAN_ARRIVAL": "syscall", - "syscall.IFAN_DEPARTURE": "syscall", - "syscall.IFA_ADDRESS": "syscall", - "syscall.IFA_ANYCAST": "syscall", - "syscall.IFA_BROADCAST": "syscall", - "syscall.IFA_CACHEINFO": "syscall", - "syscall.IFA_F_DADFAILED": "syscall", - "syscall.IFA_F_DEPRECATED": "syscall", - "syscall.IFA_F_HOMEADDRESS": "syscall", - "syscall.IFA_F_NODAD": "syscall", - "syscall.IFA_F_OPTIMISTIC": "syscall", - "syscall.IFA_F_PERMANENT": "syscall", - "syscall.IFA_F_SECONDARY": "syscall", - "syscall.IFA_F_TEMPORARY": "syscall", - "syscall.IFA_F_TENTATIVE": "syscall", - "syscall.IFA_LABEL": "syscall", - "syscall.IFA_LOCAL": "syscall", - "syscall.IFA_MAX": "syscall", - "syscall.IFA_MULTICAST": "syscall", - "syscall.IFA_ROUTE": "syscall", - "syscall.IFA_UNSPEC": "syscall", - "syscall.IFF_ALLMULTI": "syscall", - "syscall.IFF_ALTPHYS": "syscall", - "syscall.IFF_AUTOMEDIA": "syscall", - "syscall.IFF_BROADCAST": "syscall", - "syscall.IFF_CANTCHANGE": "syscall", - "syscall.IFF_CANTCONFIG": "syscall", - "syscall.IFF_DEBUG": "syscall", - "syscall.IFF_DRV_OACTIVE": "syscall", - "syscall.IFF_DRV_RUNNING": "syscall", - "syscall.IFF_DYING": "syscall", - "syscall.IFF_DYNAMIC": "syscall", - "syscall.IFF_LINK0": "syscall", - "syscall.IFF_LINK1": "syscall", - "syscall.IFF_LINK2": "syscall", - "syscall.IFF_LOOPBACK": "syscall", - "syscall.IFF_MASTER": "syscall", - "syscall.IFF_MONITOR": "syscall", - "syscall.IFF_MULTICAST": "syscall", - "syscall.IFF_NOARP": "syscall", - "syscall.IFF_NOTRAILERS": "syscall", - "syscall.IFF_NO_PI": "syscall", - "syscall.IFF_OACTIVE": "syscall", - "syscall.IFF_ONE_QUEUE": "syscall", - "syscall.IFF_POINTOPOINT": "syscall", - "syscall.IFF_POINTTOPOINT": "syscall", - "syscall.IFF_PORTSEL": "syscall", - "syscall.IFF_PPROMISC": "syscall", - "syscall.IFF_PROMISC": "syscall", - "syscall.IFF_RENAMING": "syscall", - "syscall.IFF_RUNNING": "syscall", - "syscall.IFF_SIMPLEX": "syscall", - "syscall.IFF_SLAVE": "syscall", - "syscall.IFF_SMART": "syscall", - "syscall.IFF_STATICARP": "syscall", - "syscall.IFF_TAP": "syscall", - "syscall.IFF_TUN": "syscall", - "syscall.IFF_TUN_EXCL": "syscall", - "syscall.IFF_UP": "syscall", - "syscall.IFF_VNET_HDR": "syscall", - "syscall.IFLA_ADDRESS": "syscall", - "syscall.IFLA_BROADCAST": "syscall", - "syscall.IFLA_COST": "syscall", - "syscall.IFLA_IFALIAS": "syscall", - "syscall.IFLA_IFNAME": "syscall", - "syscall.IFLA_LINK": "syscall", - "syscall.IFLA_LINKINFO": "syscall", - "syscall.IFLA_LINKMODE": "syscall", - "syscall.IFLA_MAP": "syscall", - "syscall.IFLA_MASTER": "syscall", - "syscall.IFLA_MAX": "syscall", - "syscall.IFLA_MTU": "syscall", - "syscall.IFLA_NET_NS_PID": "syscall", - "syscall.IFLA_OPERSTATE": "syscall", - "syscall.IFLA_PRIORITY": "syscall", - "syscall.IFLA_PROTINFO": "syscall", - "syscall.IFLA_QDISC": "syscall", - "syscall.IFLA_STATS": "syscall", - "syscall.IFLA_TXQLEN": "syscall", - "syscall.IFLA_UNSPEC": "syscall", - "syscall.IFLA_WEIGHT": "syscall", - "syscall.IFLA_WIRELESS": "syscall", - "syscall.IFNAMSIZ": "syscall", - "syscall.IFT_1822": "syscall", - "syscall.IFT_A12MPPSWITCH": "syscall", - "syscall.IFT_AAL2": "syscall", - "syscall.IFT_AAL5": "syscall", - "syscall.IFT_ADSL": "syscall", - "syscall.IFT_AFLANE8023": "syscall", - "syscall.IFT_AFLANE8025": "syscall", - "syscall.IFT_ARAP": "syscall", - "syscall.IFT_ARCNET": "syscall", - "syscall.IFT_ARCNETPLUS": "syscall", - "syscall.IFT_ASYNC": "syscall", - "syscall.IFT_ATM": "syscall", - "syscall.IFT_ATMDXI": "syscall", - "syscall.IFT_ATMFUNI": "syscall", - "syscall.IFT_ATMIMA": "syscall", - "syscall.IFT_ATMLOGICAL": "syscall", - "syscall.IFT_ATMRADIO": "syscall", - "syscall.IFT_ATMSUBINTERFACE": "syscall", - "syscall.IFT_ATMVCIENDPT": "syscall", - "syscall.IFT_ATMVIRTUAL": "syscall", - "syscall.IFT_BGPPOLICYACCOUNTING": "syscall", - "syscall.IFT_BLUETOOTH": "syscall", - "syscall.IFT_BRIDGE": "syscall", - "syscall.IFT_BSC": "syscall", - "syscall.IFT_CARP": "syscall", - "syscall.IFT_CCTEMUL": "syscall", - "syscall.IFT_CELLULAR": "syscall", - "syscall.IFT_CEPT": "syscall", - "syscall.IFT_CES": "syscall", - "syscall.IFT_CHANNEL": "syscall", - "syscall.IFT_CNR": "syscall", - "syscall.IFT_COFFEE": "syscall", - "syscall.IFT_COMPOSITELINK": "syscall", - "syscall.IFT_DCN": "syscall", - "syscall.IFT_DIGITALPOWERLINE": "syscall", - "syscall.IFT_DIGITALWRAPPEROVERHEADCHANNEL": "syscall", - "syscall.IFT_DLSW": "syscall", - "syscall.IFT_DOCSCABLEDOWNSTREAM": "syscall", - "syscall.IFT_DOCSCABLEMACLAYER": "syscall", - "syscall.IFT_DOCSCABLEUPSTREAM": "syscall", - "syscall.IFT_DOCSCABLEUPSTREAMCHANNEL": "syscall", - "syscall.IFT_DS0": "syscall", - "syscall.IFT_DS0BUNDLE": "syscall", - "syscall.IFT_DS1FDL": "syscall", - "syscall.IFT_DS3": "syscall", - "syscall.IFT_DTM": "syscall", - "syscall.IFT_DUMMY": "syscall", - "syscall.IFT_DVBASILN": "syscall", - "syscall.IFT_DVBASIOUT": "syscall", - "syscall.IFT_DVBRCCDOWNSTREAM": "syscall", - "syscall.IFT_DVBRCCMACLAYER": "syscall", - "syscall.IFT_DVBRCCUPSTREAM": "syscall", - "syscall.IFT_ECONET": "syscall", - "syscall.IFT_ENC": "syscall", - "syscall.IFT_EON": "syscall", - "syscall.IFT_EPLRS": "syscall", - "syscall.IFT_ESCON": "syscall", - "syscall.IFT_ETHER": "syscall", - "syscall.IFT_FAITH": "syscall", - "syscall.IFT_FAST": "syscall", - "syscall.IFT_FASTETHER": "syscall", - "syscall.IFT_FASTETHERFX": "syscall", - "syscall.IFT_FDDI": "syscall", - "syscall.IFT_FIBRECHANNEL": "syscall", - "syscall.IFT_FRAMERELAYINTERCONNECT": "syscall", - "syscall.IFT_FRAMERELAYMPI": "syscall", - "syscall.IFT_FRDLCIENDPT": "syscall", - "syscall.IFT_FRELAY": "syscall", - "syscall.IFT_FRELAYDCE": "syscall", - "syscall.IFT_FRF16MFRBUNDLE": "syscall", - "syscall.IFT_FRFORWARD": "syscall", - "syscall.IFT_G703AT2MB": "syscall", - "syscall.IFT_G703AT64K": "syscall", - "syscall.IFT_GIF": "syscall", - "syscall.IFT_GIGABITETHERNET": "syscall", - "syscall.IFT_GR303IDT": "syscall", - "syscall.IFT_GR303RDT": "syscall", - "syscall.IFT_H323GATEKEEPER": "syscall", - "syscall.IFT_H323PROXY": "syscall", - "syscall.IFT_HDH1822": "syscall", - "syscall.IFT_HDLC": "syscall", - "syscall.IFT_HDSL2": "syscall", - "syscall.IFT_HIPERLAN2": "syscall", - "syscall.IFT_HIPPI": "syscall", - "syscall.IFT_HIPPIINTERFACE": "syscall", - "syscall.IFT_HOSTPAD": "syscall", - "syscall.IFT_HSSI": "syscall", - "syscall.IFT_HY": "syscall", - "syscall.IFT_IBM370PARCHAN": "syscall", - "syscall.IFT_IDSL": "syscall", - "syscall.IFT_IEEE1394": "syscall", - "syscall.IFT_IEEE80211": "syscall", - "syscall.IFT_IEEE80212": "syscall", - "syscall.IFT_IEEE8023ADLAG": "syscall", - "syscall.IFT_IFGSN": "syscall", - "syscall.IFT_IMT": "syscall", - "syscall.IFT_INFINIBAND": "syscall", - "syscall.IFT_INTERLEAVE": "syscall", - "syscall.IFT_IP": "syscall", - "syscall.IFT_IPFORWARD": "syscall", - "syscall.IFT_IPOVERATM": "syscall", - "syscall.IFT_IPOVERCDLC": "syscall", - "syscall.IFT_IPOVERCLAW": "syscall", - "syscall.IFT_IPSWITCH": "syscall", - "syscall.IFT_IPXIP": "syscall", - "syscall.IFT_ISDN": "syscall", - "syscall.IFT_ISDNBASIC": "syscall", - "syscall.IFT_ISDNPRIMARY": "syscall", - "syscall.IFT_ISDNS": "syscall", - "syscall.IFT_ISDNU": "syscall", - "syscall.IFT_ISO88022LLC": "syscall", - "syscall.IFT_ISO88023": "syscall", - "syscall.IFT_ISO88024": "syscall", - "syscall.IFT_ISO88025": "syscall", - "syscall.IFT_ISO88025CRFPINT": "syscall", - "syscall.IFT_ISO88025DTR": "syscall", - "syscall.IFT_ISO88025FIBER": "syscall", - "syscall.IFT_ISO88026": "syscall", - "syscall.IFT_ISUP": "syscall", - "syscall.IFT_L2VLAN": "syscall", - "syscall.IFT_L3IPVLAN": "syscall", - "syscall.IFT_L3IPXVLAN": "syscall", - "syscall.IFT_LAPB": "syscall", - "syscall.IFT_LAPD": "syscall", - "syscall.IFT_LAPF": "syscall", - "syscall.IFT_LINEGROUP": "syscall", - "syscall.IFT_LOCALTALK": "syscall", - "syscall.IFT_LOOP": "syscall", - "syscall.IFT_MEDIAMAILOVERIP": "syscall", - "syscall.IFT_MFSIGLINK": "syscall", - "syscall.IFT_MIOX25": "syscall", - "syscall.IFT_MODEM": "syscall", - "syscall.IFT_MPC": "syscall", - "syscall.IFT_MPLS": "syscall", - "syscall.IFT_MPLSTUNNEL": "syscall", - "syscall.IFT_MSDSL": "syscall", - "syscall.IFT_MVL": "syscall", - "syscall.IFT_MYRINET": "syscall", - "syscall.IFT_NFAS": "syscall", - "syscall.IFT_NSIP": "syscall", - "syscall.IFT_OPTICALCHANNEL": "syscall", - "syscall.IFT_OPTICALTRANSPORT": "syscall", - "syscall.IFT_OTHER": "syscall", - "syscall.IFT_P10": "syscall", - "syscall.IFT_P80": "syscall", - "syscall.IFT_PARA": "syscall", - "syscall.IFT_PDP": "syscall", - "syscall.IFT_PFLOG": "syscall", - "syscall.IFT_PFLOW": "syscall", - "syscall.IFT_PFSYNC": "syscall", - "syscall.IFT_PLC": "syscall", - "syscall.IFT_PON155": "syscall", - "syscall.IFT_PON622": "syscall", - "syscall.IFT_POS": "syscall", - "syscall.IFT_PPP": "syscall", - "syscall.IFT_PPPMULTILINKBUNDLE": "syscall", - "syscall.IFT_PROPATM": "syscall", - "syscall.IFT_PROPBWAP2MP": "syscall", - "syscall.IFT_PROPCNLS": "syscall", - "syscall.IFT_PROPDOCSWIRELESSDOWNSTREAM": "syscall", - "syscall.IFT_PROPDOCSWIRELESSMACLAYER": "syscall", - "syscall.IFT_PROPDOCSWIRELESSUPSTREAM": "syscall", - "syscall.IFT_PROPMUX": "syscall", - "syscall.IFT_PROPVIRTUAL": "syscall", - "syscall.IFT_PROPWIRELESSP2P": "syscall", - "syscall.IFT_PTPSERIAL": "syscall", - "syscall.IFT_PVC": "syscall", - "syscall.IFT_Q2931": "syscall", - "syscall.IFT_QLLC": "syscall", - "syscall.IFT_RADIOMAC": "syscall", - "syscall.IFT_RADSL": "syscall", - "syscall.IFT_REACHDSL": "syscall", - "syscall.IFT_RFC1483": "syscall", - "syscall.IFT_RS232": "syscall", - "syscall.IFT_RSRB": "syscall", - "syscall.IFT_SDLC": "syscall", - "syscall.IFT_SDSL": "syscall", - "syscall.IFT_SHDSL": "syscall", - "syscall.IFT_SIP": "syscall", - "syscall.IFT_SIPSIG": "syscall", - "syscall.IFT_SIPTG": "syscall", - "syscall.IFT_SLIP": "syscall", - "syscall.IFT_SMDSDXI": "syscall", - "syscall.IFT_SMDSICIP": "syscall", - "syscall.IFT_SONET": "syscall", - "syscall.IFT_SONETOVERHEADCHANNEL": "syscall", - "syscall.IFT_SONETPATH": "syscall", - "syscall.IFT_SONETVT": "syscall", - "syscall.IFT_SRP": "syscall", - "syscall.IFT_SS7SIGLINK": "syscall", - "syscall.IFT_STACKTOSTACK": "syscall", - "syscall.IFT_STARLAN": "syscall", - "syscall.IFT_STF": "syscall", - "syscall.IFT_T1": "syscall", - "syscall.IFT_TDLC": "syscall", - "syscall.IFT_TELINK": "syscall", - "syscall.IFT_TERMPAD": "syscall", - "syscall.IFT_TR008": "syscall", - "syscall.IFT_TRANSPHDLC": "syscall", - "syscall.IFT_TUNNEL": "syscall", - "syscall.IFT_ULTRA": "syscall", - "syscall.IFT_USB": "syscall", - "syscall.IFT_V11": "syscall", - "syscall.IFT_V35": "syscall", - "syscall.IFT_V36": "syscall", - "syscall.IFT_V37": "syscall", - "syscall.IFT_VDSL": "syscall", - "syscall.IFT_VIRTUALIPADDRESS": "syscall", - "syscall.IFT_VIRTUALTG": "syscall", - "syscall.IFT_VOICEDID": "syscall", - "syscall.IFT_VOICEEM": "syscall", - "syscall.IFT_VOICEEMFGD": "syscall", - "syscall.IFT_VOICEENCAP": "syscall", - "syscall.IFT_VOICEFGDEANA": "syscall", - "syscall.IFT_VOICEFXO": "syscall", - "syscall.IFT_VOICEFXS": "syscall", - "syscall.IFT_VOICEOVERATM": "syscall", - "syscall.IFT_VOICEOVERCABLE": "syscall", - "syscall.IFT_VOICEOVERFRAMERELAY": "syscall", - "syscall.IFT_VOICEOVERIP": "syscall", - "syscall.IFT_X213": "syscall", - "syscall.IFT_X25": "syscall", - "syscall.IFT_X25DDN": "syscall", - "syscall.IFT_X25HUNTGROUP": "syscall", - "syscall.IFT_X25MLP": "syscall", - "syscall.IFT_X25PLE": "syscall", - "syscall.IFT_XETHER": "syscall", - "syscall.IGNBRK": "syscall", - "syscall.IGNCR": "syscall", - "syscall.IGNORE": "syscall", - "syscall.IGNPAR": "syscall", - "syscall.IMAXBEL": "syscall", - "syscall.INFINITE": "syscall", - "syscall.INLCR": "syscall", - "syscall.INPCK": "syscall", - "syscall.INVALID_FILE_ATTRIBUTES": "syscall", - "syscall.IN_ACCESS": "syscall", - "syscall.IN_ALL_EVENTS": "syscall", - "syscall.IN_ATTRIB": "syscall", - "syscall.IN_CLASSA_HOST": "syscall", - "syscall.IN_CLASSA_MAX": "syscall", - "syscall.IN_CLASSA_NET": "syscall", - "syscall.IN_CLASSA_NSHIFT": "syscall", - "syscall.IN_CLASSB_HOST": "syscall", - "syscall.IN_CLASSB_MAX": "syscall", - "syscall.IN_CLASSB_NET": "syscall", - "syscall.IN_CLASSB_NSHIFT": "syscall", - "syscall.IN_CLASSC_HOST": "syscall", - "syscall.IN_CLASSC_NET": "syscall", - "syscall.IN_CLASSC_NSHIFT": "syscall", - "syscall.IN_CLASSD_HOST": "syscall", - "syscall.IN_CLASSD_NET": "syscall", - "syscall.IN_CLASSD_NSHIFT": "syscall", - "syscall.IN_CLOEXEC": "syscall", - "syscall.IN_CLOSE": "syscall", - "syscall.IN_CLOSE_NOWRITE": "syscall", - "syscall.IN_CLOSE_WRITE": "syscall", - "syscall.IN_CREATE": "syscall", - "syscall.IN_DELETE": "syscall", - "syscall.IN_DELETE_SELF": "syscall", - "syscall.IN_DONT_FOLLOW": "syscall", - "syscall.IN_EXCL_UNLINK": "syscall", - "syscall.IN_IGNORED": "syscall", - "syscall.IN_ISDIR": "syscall", - "syscall.IN_LINKLOCALNETNUM": "syscall", - "syscall.IN_LOOPBACKNET": "syscall", - "syscall.IN_MASK_ADD": "syscall", - "syscall.IN_MODIFY": "syscall", - "syscall.IN_MOVE": "syscall", - "syscall.IN_MOVED_FROM": "syscall", - "syscall.IN_MOVED_TO": "syscall", - "syscall.IN_MOVE_SELF": "syscall", - "syscall.IN_NONBLOCK": "syscall", - "syscall.IN_ONESHOT": "syscall", - "syscall.IN_ONLYDIR": "syscall", - "syscall.IN_OPEN": "syscall", - "syscall.IN_Q_OVERFLOW": "syscall", - "syscall.IN_RFC3021_HOST": "syscall", - "syscall.IN_RFC3021_MASK": "syscall", - "syscall.IN_RFC3021_NET": "syscall", - "syscall.IN_RFC3021_NSHIFT": "syscall", - "syscall.IN_UNMOUNT": "syscall", - "syscall.IOC_IN": "syscall", - "syscall.IOC_INOUT": "syscall", - "syscall.IOC_OUT": "syscall", - "syscall.IOC_VENDOR": "syscall", - "syscall.IOC_WS2": "syscall", - "syscall.IO_REPARSE_TAG_SYMLINK": "syscall", - "syscall.IPMreq": "syscall", - "syscall.IPMreqn": "syscall", - "syscall.IPPROTO_3PC": "syscall", - "syscall.IPPROTO_ADFS": "syscall", - "syscall.IPPROTO_AH": "syscall", - "syscall.IPPROTO_AHIP": "syscall", - "syscall.IPPROTO_APES": "syscall", - "syscall.IPPROTO_ARGUS": "syscall", - "syscall.IPPROTO_AX25": "syscall", - "syscall.IPPROTO_BHA": "syscall", - "syscall.IPPROTO_BLT": "syscall", - "syscall.IPPROTO_BRSATMON": "syscall", - "syscall.IPPROTO_CARP": "syscall", - "syscall.IPPROTO_CFTP": "syscall", - "syscall.IPPROTO_CHAOS": "syscall", - "syscall.IPPROTO_CMTP": "syscall", - "syscall.IPPROTO_COMP": "syscall", - "syscall.IPPROTO_CPHB": "syscall", - "syscall.IPPROTO_CPNX": "syscall", - "syscall.IPPROTO_DCCP": "syscall", - "syscall.IPPROTO_DDP": "syscall", - "syscall.IPPROTO_DGP": "syscall", - "syscall.IPPROTO_DIVERT": "syscall", - "syscall.IPPROTO_DIVERT_INIT": "syscall", - "syscall.IPPROTO_DIVERT_RESP": "syscall", - "syscall.IPPROTO_DONE": "syscall", - "syscall.IPPROTO_DSTOPTS": "syscall", - "syscall.IPPROTO_EGP": "syscall", - "syscall.IPPROTO_EMCON": "syscall", - "syscall.IPPROTO_ENCAP": "syscall", - "syscall.IPPROTO_EON": "syscall", - "syscall.IPPROTO_ESP": "syscall", - "syscall.IPPROTO_ETHERIP": "syscall", - "syscall.IPPROTO_FRAGMENT": "syscall", - "syscall.IPPROTO_GGP": "syscall", - "syscall.IPPROTO_GMTP": "syscall", - "syscall.IPPROTO_GRE": "syscall", - "syscall.IPPROTO_HELLO": "syscall", - "syscall.IPPROTO_HMP": "syscall", - "syscall.IPPROTO_HOPOPTS": "syscall", - "syscall.IPPROTO_ICMP": "syscall", - "syscall.IPPROTO_ICMPV6": "syscall", - "syscall.IPPROTO_IDP": "syscall", - "syscall.IPPROTO_IDPR": "syscall", - "syscall.IPPROTO_IDRP": "syscall", - "syscall.IPPROTO_IGMP": "syscall", - "syscall.IPPROTO_IGP": "syscall", - "syscall.IPPROTO_IGRP": "syscall", - "syscall.IPPROTO_IL": "syscall", - "syscall.IPPROTO_INLSP": "syscall", - "syscall.IPPROTO_INP": "syscall", - "syscall.IPPROTO_IP": "syscall", - "syscall.IPPROTO_IPCOMP": "syscall", - "syscall.IPPROTO_IPCV": "syscall", - "syscall.IPPROTO_IPEIP": "syscall", - "syscall.IPPROTO_IPIP": "syscall", - "syscall.IPPROTO_IPPC": "syscall", - "syscall.IPPROTO_IPV4": "syscall", - "syscall.IPPROTO_IPV6": "syscall", - "syscall.IPPROTO_IPV6_ICMP": "syscall", - "syscall.IPPROTO_IRTP": "syscall", - "syscall.IPPROTO_KRYPTOLAN": "syscall", - "syscall.IPPROTO_LARP": "syscall", - "syscall.IPPROTO_LEAF1": "syscall", - "syscall.IPPROTO_LEAF2": "syscall", - "syscall.IPPROTO_MAX": "syscall", - "syscall.IPPROTO_MAXID": "syscall", - "syscall.IPPROTO_MEAS": "syscall", - "syscall.IPPROTO_MH": "syscall", - "syscall.IPPROTO_MHRP": "syscall", - "syscall.IPPROTO_MICP": "syscall", - "syscall.IPPROTO_MOBILE": "syscall", - "syscall.IPPROTO_MPLS": "syscall", - "syscall.IPPROTO_MTP": "syscall", - "syscall.IPPROTO_MUX": "syscall", - "syscall.IPPROTO_ND": "syscall", - "syscall.IPPROTO_NHRP": "syscall", - "syscall.IPPROTO_NONE": "syscall", - "syscall.IPPROTO_NSP": "syscall", - "syscall.IPPROTO_NVPII": "syscall", - "syscall.IPPROTO_OLD_DIVERT": "syscall", - "syscall.IPPROTO_OSPFIGP": "syscall", - "syscall.IPPROTO_PFSYNC": "syscall", - "syscall.IPPROTO_PGM": "syscall", - "syscall.IPPROTO_PIGP": "syscall", - "syscall.IPPROTO_PIM": "syscall", - "syscall.IPPROTO_PRM": "syscall", - "syscall.IPPROTO_PUP": "syscall", - "syscall.IPPROTO_PVP": "syscall", - "syscall.IPPROTO_RAW": "syscall", - "syscall.IPPROTO_RCCMON": "syscall", - "syscall.IPPROTO_RDP": "syscall", - "syscall.IPPROTO_ROUTING": "syscall", - "syscall.IPPROTO_RSVP": "syscall", - "syscall.IPPROTO_RVD": "syscall", - "syscall.IPPROTO_SATEXPAK": "syscall", - "syscall.IPPROTO_SATMON": "syscall", - "syscall.IPPROTO_SCCSP": "syscall", - "syscall.IPPROTO_SCTP": "syscall", - "syscall.IPPROTO_SDRP": "syscall", - "syscall.IPPROTO_SEND": "syscall", - "syscall.IPPROTO_SEP": "syscall", - "syscall.IPPROTO_SKIP": "syscall", - "syscall.IPPROTO_SPACER": "syscall", - "syscall.IPPROTO_SRPC": "syscall", - "syscall.IPPROTO_ST": "syscall", - "syscall.IPPROTO_SVMTP": "syscall", - "syscall.IPPROTO_SWIPE": "syscall", - "syscall.IPPROTO_TCF": "syscall", - "syscall.IPPROTO_TCP": "syscall", - "syscall.IPPROTO_TLSP": "syscall", - "syscall.IPPROTO_TP": "syscall", - "syscall.IPPROTO_TPXX": "syscall", - "syscall.IPPROTO_TRUNK1": "syscall", - "syscall.IPPROTO_TRUNK2": "syscall", - "syscall.IPPROTO_TTP": "syscall", - "syscall.IPPROTO_UDP": "syscall", - "syscall.IPPROTO_UDPLITE": "syscall", - "syscall.IPPROTO_VINES": "syscall", - "syscall.IPPROTO_VISA": "syscall", - "syscall.IPPROTO_VMTP": "syscall", - "syscall.IPPROTO_VRRP": "syscall", - "syscall.IPPROTO_WBEXPAK": "syscall", - "syscall.IPPROTO_WBMON": "syscall", - "syscall.IPPROTO_WSN": "syscall", - "syscall.IPPROTO_XNET": "syscall", - "syscall.IPPROTO_XTP": "syscall", - "syscall.IPV6_2292DSTOPTS": "syscall", - "syscall.IPV6_2292HOPLIMIT": "syscall", - "syscall.IPV6_2292HOPOPTS": "syscall", - "syscall.IPV6_2292NEXTHOP": "syscall", - "syscall.IPV6_2292PKTINFO": "syscall", - "syscall.IPV6_2292PKTOPTIONS": "syscall", - "syscall.IPV6_2292RTHDR": "syscall", - "syscall.IPV6_ADDRFORM": "syscall", - "syscall.IPV6_ADD_MEMBERSHIP": "syscall", - "syscall.IPV6_AUTHHDR": "syscall", - "syscall.IPV6_AUTH_LEVEL": "syscall", - "syscall.IPV6_AUTOFLOWLABEL": "syscall", - "syscall.IPV6_BINDANY": "syscall", - "syscall.IPV6_BINDV6ONLY": "syscall", - "syscall.IPV6_BOUND_IF": "syscall", - "syscall.IPV6_CHECKSUM": "syscall", - "syscall.IPV6_DEFAULT_MULTICAST_HOPS": "syscall", - "syscall.IPV6_DEFAULT_MULTICAST_LOOP": "syscall", - "syscall.IPV6_DEFHLIM": "syscall", - "syscall.IPV6_DONTFRAG": "syscall", - "syscall.IPV6_DROP_MEMBERSHIP": "syscall", - "syscall.IPV6_DSTOPTS": "syscall", - "syscall.IPV6_ESP_NETWORK_LEVEL": "syscall", - "syscall.IPV6_ESP_TRANS_LEVEL": "syscall", - "syscall.IPV6_FAITH": "syscall", - "syscall.IPV6_FLOWINFO_MASK": "syscall", - "syscall.IPV6_FLOWLABEL_MASK": "syscall", - "syscall.IPV6_FRAGTTL": "syscall", - "syscall.IPV6_FW_ADD": "syscall", - "syscall.IPV6_FW_DEL": "syscall", - "syscall.IPV6_FW_FLUSH": "syscall", - "syscall.IPV6_FW_GET": "syscall", - "syscall.IPV6_FW_ZERO": "syscall", - "syscall.IPV6_HLIMDEC": "syscall", - "syscall.IPV6_HOPLIMIT": "syscall", - "syscall.IPV6_HOPOPTS": "syscall", - "syscall.IPV6_IPCOMP_LEVEL": "syscall", - "syscall.IPV6_IPSEC_POLICY": "syscall", - "syscall.IPV6_JOIN_ANYCAST": "syscall", - "syscall.IPV6_JOIN_GROUP": "syscall", - "syscall.IPV6_LEAVE_ANYCAST": "syscall", - "syscall.IPV6_LEAVE_GROUP": "syscall", - "syscall.IPV6_MAXHLIM": "syscall", - "syscall.IPV6_MAXOPTHDR": "syscall", - "syscall.IPV6_MAXPACKET": "syscall", - "syscall.IPV6_MAX_GROUP_SRC_FILTER": "syscall", - "syscall.IPV6_MAX_MEMBERSHIPS": "syscall", - "syscall.IPV6_MAX_SOCK_SRC_FILTER": "syscall", - "syscall.IPV6_MIN_MEMBERSHIPS": "syscall", - "syscall.IPV6_MMTU": "syscall", - "syscall.IPV6_MSFILTER": "syscall", - "syscall.IPV6_MTU": "syscall", - "syscall.IPV6_MTU_DISCOVER": "syscall", - "syscall.IPV6_MULTICAST_HOPS": "syscall", - "syscall.IPV6_MULTICAST_IF": "syscall", - "syscall.IPV6_MULTICAST_LOOP": "syscall", - "syscall.IPV6_NEXTHOP": "syscall", - "syscall.IPV6_OPTIONS": "syscall", - "syscall.IPV6_PATHMTU": "syscall", - "syscall.IPV6_PIPEX": "syscall", - "syscall.IPV6_PKTINFO": "syscall", - "syscall.IPV6_PMTUDISC_DO": "syscall", - "syscall.IPV6_PMTUDISC_DONT": "syscall", - "syscall.IPV6_PMTUDISC_PROBE": "syscall", - "syscall.IPV6_PMTUDISC_WANT": "syscall", - "syscall.IPV6_PORTRANGE": "syscall", - "syscall.IPV6_PORTRANGE_DEFAULT": "syscall", - "syscall.IPV6_PORTRANGE_HIGH": "syscall", - "syscall.IPV6_PORTRANGE_LOW": "syscall", - "syscall.IPV6_PREFER_TEMPADDR": "syscall", - "syscall.IPV6_RECVDSTOPTS": "syscall", - "syscall.IPV6_RECVDSTPORT": "syscall", - "syscall.IPV6_RECVERR": "syscall", - "syscall.IPV6_RECVHOPLIMIT": "syscall", - "syscall.IPV6_RECVHOPOPTS": "syscall", - "syscall.IPV6_RECVPATHMTU": "syscall", - "syscall.IPV6_RECVPKTINFO": "syscall", - "syscall.IPV6_RECVRTHDR": "syscall", - "syscall.IPV6_RECVTCLASS": "syscall", - "syscall.IPV6_ROUTER_ALERT": "syscall", - "syscall.IPV6_RTABLE": "syscall", - "syscall.IPV6_RTHDR": "syscall", - "syscall.IPV6_RTHDRDSTOPTS": "syscall", - "syscall.IPV6_RTHDR_LOOSE": "syscall", - "syscall.IPV6_RTHDR_STRICT": "syscall", - "syscall.IPV6_RTHDR_TYPE_0": "syscall", - "syscall.IPV6_RXDSTOPTS": "syscall", - "syscall.IPV6_RXHOPOPTS": "syscall", - "syscall.IPV6_SOCKOPT_RESERVED1": "syscall", - "syscall.IPV6_TCLASS": "syscall", - "syscall.IPV6_UNICAST_HOPS": "syscall", - "syscall.IPV6_USE_MIN_MTU": "syscall", - "syscall.IPV6_V6ONLY": "syscall", - "syscall.IPV6_VERSION": "syscall", - "syscall.IPV6_VERSION_MASK": "syscall", - "syscall.IPV6_XFRM_POLICY": "syscall", - "syscall.IP_ADD_MEMBERSHIP": "syscall", - "syscall.IP_ADD_SOURCE_MEMBERSHIP": "syscall", - "syscall.IP_AUTH_LEVEL": "syscall", - "syscall.IP_BINDANY": "syscall", - "syscall.IP_BLOCK_SOURCE": "syscall", - "syscall.IP_BOUND_IF": "syscall", - "syscall.IP_DEFAULT_MULTICAST_LOOP": "syscall", - "syscall.IP_DEFAULT_MULTICAST_TTL": "syscall", - "syscall.IP_DF": "syscall", - "syscall.IP_DIVERTFL": "syscall", - "syscall.IP_DONTFRAG": "syscall", - "syscall.IP_DROP_MEMBERSHIP": "syscall", - "syscall.IP_DROP_SOURCE_MEMBERSHIP": "syscall", - "syscall.IP_DUMMYNET3": "syscall", - "syscall.IP_DUMMYNET_CONFIGURE": "syscall", - "syscall.IP_DUMMYNET_DEL": "syscall", - "syscall.IP_DUMMYNET_FLUSH": "syscall", - "syscall.IP_DUMMYNET_GET": "syscall", - "syscall.IP_EF": "syscall", - "syscall.IP_ERRORMTU": "syscall", - "syscall.IP_ESP_NETWORK_LEVEL": "syscall", - "syscall.IP_ESP_TRANS_LEVEL": "syscall", - "syscall.IP_FAITH": "syscall", - "syscall.IP_FREEBIND": "syscall", - "syscall.IP_FW3": "syscall", - "syscall.IP_FW_ADD": "syscall", - "syscall.IP_FW_DEL": "syscall", - "syscall.IP_FW_FLUSH": "syscall", - "syscall.IP_FW_GET": "syscall", - "syscall.IP_FW_NAT_CFG": "syscall", - "syscall.IP_FW_NAT_DEL": "syscall", - "syscall.IP_FW_NAT_GET_CONFIG": "syscall", - "syscall.IP_FW_NAT_GET_LOG": "syscall", - "syscall.IP_FW_RESETLOG": "syscall", - "syscall.IP_FW_TABLE_ADD": "syscall", - "syscall.IP_FW_TABLE_DEL": "syscall", - "syscall.IP_FW_TABLE_FLUSH": "syscall", - "syscall.IP_FW_TABLE_GETSIZE": "syscall", - "syscall.IP_FW_TABLE_LIST": "syscall", - "syscall.IP_FW_ZERO": "syscall", - "syscall.IP_HDRINCL": "syscall", - "syscall.IP_IPCOMP_LEVEL": "syscall", - "syscall.IP_IPSECFLOWINFO": "syscall", - "syscall.IP_IPSEC_LOCAL_AUTH": "syscall", - "syscall.IP_IPSEC_LOCAL_CRED": "syscall", - "syscall.IP_IPSEC_LOCAL_ID": "syscall", - "syscall.IP_IPSEC_POLICY": "syscall", - "syscall.IP_IPSEC_REMOTE_AUTH": "syscall", - "syscall.IP_IPSEC_REMOTE_CRED": "syscall", - "syscall.IP_IPSEC_REMOTE_ID": "syscall", - "syscall.IP_MAXPACKET": "syscall", - "syscall.IP_MAX_GROUP_SRC_FILTER": "syscall", - "syscall.IP_MAX_MEMBERSHIPS": "syscall", - "syscall.IP_MAX_SOCK_MUTE_FILTER": "syscall", - "syscall.IP_MAX_SOCK_SRC_FILTER": "syscall", - "syscall.IP_MAX_SOURCE_FILTER": "syscall", - "syscall.IP_MF": "syscall", - "syscall.IP_MINFRAGSIZE": "syscall", - "syscall.IP_MINTTL": "syscall", - "syscall.IP_MIN_MEMBERSHIPS": "syscall", - "syscall.IP_MSFILTER": "syscall", - "syscall.IP_MSS": "syscall", - "syscall.IP_MTU": "syscall", - "syscall.IP_MTU_DISCOVER": "syscall", - "syscall.IP_MULTICAST_IF": "syscall", - "syscall.IP_MULTICAST_IFINDEX": "syscall", - "syscall.IP_MULTICAST_LOOP": "syscall", - "syscall.IP_MULTICAST_TTL": "syscall", - "syscall.IP_MULTICAST_VIF": "syscall", - "syscall.IP_NAT__XXX": "syscall", - "syscall.IP_OFFMASK": "syscall", - "syscall.IP_OLD_FW_ADD": "syscall", - "syscall.IP_OLD_FW_DEL": "syscall", - "syscall.IP_OLD_FW_FLUSH": "syscall", - "syscall.IP_OLD_FW_GET": "syscall", - "syscall.IP_OLD_FW_RESETLOG": "syscall", - "syscall.IP_OLD_FW_ZERO": "syscall", - "syscall.IP_ONESBCAST": "syscall", - "syscall.IP_OPTIONS": "syscall", - "syscall.IP_ORIGDSTADDR": "syscall", - "syscall.IP_PASSSEC": "syscall", - "syscall.IP_PIPEX": "syscall", - "syscall.IP_PKTINFO": "syscall", - "syscall.IP_PKTOPTIONS": "syscall", - "syscall.IP_PMTUDISC": "syscall", - "syscall.IP_PMTUDISC_DO": "syscall", - "syscall.IP_PMTUDISC_DONT": "syscall", - "syscall.IP_PMTUDISC_PROBE": "syscall", - "syscall.IP_PMTUDISC_WANT": "syscall", - "syscall.IP_PORTRANGE": "syscall", - "syscall.IP_PORTRANGE_DEFAULT": "syscall", - "syscall.IP_PORTRANGE_HIGH": "syscall", - "syscall.IP_PORTRANGE_LOW": "syscall", - "syscall.IP_RECVDSTADDR": "syscall", - "syscall.IP_RECVDSTPORT": "syscall", - "syscall.IP_RECVERR": "syscall", - "syscall.IP_RECVIF": "syscall", - "syscall.IP_RECVOPTS": "syscall", - "syscall.IP_RECVORIGDSTADDR": "syscall", - "syscall.IP_RECVPKTINFO": "syscall", - "syscall.IP_RECVRETOPTS": "syscall", - "syscall.IP_RECVRTABLE": "syscall", - "syscall.IP_RECVTOS": "syscall", - "syscall.IP_RECVTTL": "syscall", - "syscall.IP_RETOPTS": "syscall", - "syscall.IP_RF": "syscall", - "syscall.IP_ROUTER_ALERT": "syscall", - "syscall.IP_RSVP_OFF": "syscall", - "syscall.IP_RSVP_ON": "syscall", - "syscall.IP_RSVP_VIF_OFF": "syscall", - "syscall.IP_RSVP_VIF_ON": "syscall", - "syscall.IP_RTABLE": "syscall", - "syscall.IP_SENDSRCADDR": "syscall", - "syscall.IP_STRIPHDR": "syscall", - "syscall.IP_TOS": "syscall", - "syscall.IP_TRAFFIC_MGT_BACKGROUND": "syscall", - "syscall.IP_TRANSPARENT": "syscall", - "syscall.IP_TTL": "syscall", - "syscall.IP_UNBLOCK_SOURCE": "syscall", - "syscall.IP_XFRM_POLICY": "syscall", - "syscall.IPv6MTUInfo": "syscall", - "syscall.IPv6Mreq": "syscall", - "syscall.ISIG": "syscall", - "syscall.ISTRIP": "syscall", - "syscall.IUCLC": "syscall", - "syscall.IUTF8": "syscall", - "syscall.IXANY": "syscall", - "syscall.IXOFF": "syscall", - "syscall.IXON": "syscall", - "syscall.IfAddrmsg": "syscall", - "syscall.IfAnnounceMsghdr": "syscall", - "syscall.IfData": "syscall", - "syscall.IfInfomsg": "syscall", - "syscall.IfMsghdr": "syscall", - "syscall.IfaMsghdr": "syscall", - "syscall.IfmaMsghdr": "syscall", - "syscall.IfmaMsghdr2": "syscall", - "syscall.ImplementsGetwd": "syscall", - "syscall.Inet4Pktinfo": "syscall", - "syscall.Inet6Pktinfo": "syscall", - "syscall.InotifyAddWatch": "syscall", - "syscall.InotifyEvent": "syscall", - "syscall.InotifyInit": "syscall", - "syscall.InotifyInit1": "syscall", - "syscall.InotifyRmWatch": "syscall", - "syscall.InterfaceAddrMessage": "syscall", - "syscall.InterfaceAnnounceMessage": "syscall", - "syscall.InterfaceInfo": "syscall", - "syscall.InterfaceMessage": "syscall", - "syscall.InterfaceMulticastAddrMessage": "syscall", - "syscall.InvalidHandle": "syscall", - "syscall.Ioperm": "syscall", - "syscall.Iopl": "syscall", - "syscall.Iovec": "syscall", - "syscall.IpAdapterInfo": "syscall", - "syscall.IpAddrString": "syscall", - "syscall.IpAddressString": "syscall", - "syscall.IpMaskString": "syscall", - "syscall.Issetugid": "syscall", - "syscall.KEY_ALL_ACCESS": "syscall", - "syscall.KEY_CREATE_LINK": "syscall", - "syscall.KEY_CREATE_SUB_KEY": "syscall", - "syscall.KEY_ENUMERATE_SUB_KEYS": "syscall", - "syscall.KEY_EXECUTE": "syscall", - "syscall.KEY_NOTIFY": "syscall", - "syscall.KEY_QUERY_VALUE": "syscall", - "syscall.KEY_READ": "syscall", - "syscall.KEY_SET_VALUE": "syscall", - "syscall.KEY_WOW64_32KEY": "syscall", - "syscall.KEY_WOW64_64KEY": "syscall", - "syscall.KEY_WRITE": "syscall", - "syscall.Kevent": "syscall", - "syscall.Kevent_t": "syscall", - "syscall.Kill": "syscall", - "syscall.Klogctl": "syscall", - "syscall.Kqueue": "syscall", - "syscall.LANG_ENGLISH": "syscall", - "syscall.LAYERED_PROTOCOL": "syscall", - "syscall.LCNT_OVERLOAD_FLUSH": "syscall", - "syscall.LINUX_REBOOT_CMD_CAD_OFF": "syscall", - "syscall.LINUX_REBOOT_CMD_CAD_ON": "syscall", - "syscall.LINUX_REBOOT_CMD_HALT": "syscall", - "syscall.LINUX_REBOOT_CMD_KEXEC": "syscall", - "syscall.LINUX_REBOOT_CMD_POWER_OFF": "syscall", - "syscall.LINUX_REBOOT_CMD_RESTART": "syscall", - "syscall.LINUX_REBOOT_CMD_RESTART2": "syscall", - "syscall.LINUX_REBOOT_CMD_SW_SUSPEND": "syscall", - "syscall.LINUX_REBOOT_MAGIC1": "syscall", - "syscall.LINUX_REBOOT_MAGIC2": "syscall", - "syscall.LOCK_EX": "syscall", - "syscall.LOCK_NB": "syscall", - "syscall.LOCK_SH": "syscall", - "syscall.LOCK_UN": "syscall", - "syscall.LazyDLL": "syscall", - "syscall.LazyProc": "syscall", - "syscall.Lchown": "syscall", - "syscall.Linger": "syscall", - "syscall.Link": "syscall", - "syscall.Listen": "syscall", - "syscall.Listxattr": "syscall", - "syscall.LoadCancelIoEx": "syscall", - "syscall.LoadConnectEx": "syscall", - "syscall.LoadCreateSymbolicLink": "syscall", - "syscall.LoadDLL": "syscall", - "syscall.LoadGetAddrInfo": "syscall", - "syscall.LoadLibrary": "syscall", - "syscall.LoadSetFileCompletionNotificationModes": "syscall", - "syscall.LocalFree": "syscall", - "syscall.Log2phys_t": "syscall", - "syscall.LookupAccountName": "syscall", - "syscall.LookupAccountSid": "syscall", - "syscall.LookupSID": "syscall", - "syscall.LsfJump": "syscall", - "syscall.LsfSocket": "syscall", - "syscall.LsfStmt": "syscall", - "syscall.Lstat": "syscall", - "syscall.MADV_AUTOSYNC": "syscall", - "syscall.MADV_CAN_REUSE": "syscall", - "syscall.MADV_CORE": "syscall", - "syscall.MADV_DOFORK": "syscall", - "syscall.MADV_DONTFORK": "syscall", - "syscall.MADV_DONTNEED": "syscall", - "syscall.MADV_FREE": "syscall", - "syscall.MADV_FREE_REUSABLE": "syscall", - "syscall.MADV_FREE_REUSE": "syscall", - "syscall.MADV_HUGEPAGE": "syscall", - "syscall.MADV_HWPOISON": "syscall", - "syscall.MADV_MERGEABLE": "syscall", - "syscall.MADV_NOCORE": "syscall", - "syscall.MADV_NOHUGEPAGE": "syscall", - "syscall.MADV_NORMAL": "syscall", - "syscall.MADV_NOSYNC": "syscall", - "syscall.MADV_PROTECT": "syscall", - "syscall.MADV_RANDOM": "syscall", - "syscall.MADV_REMOVE": "syscall", - "syscall.MADV_SEQUENTIAL": "syscall", - "syscall.MADV_SPACEAVAIL": "syscall", - "syscall.MADV_UNMERGEABLE": "syscall", - "syscall.MADV_WILLNEED": "syscall", - "syscall.MADV_ZERO_WIRED_PAGES": "syscall", - "syscall.MAP_32BIT": "syscall", - "syscall.MAP_ALIGNED_SUPER": "syscall", - "syscall.MAP_ALIGNMENT_16MB": "syscall", - "syscall.MAP_ALIGNMENT_1TB": "syscall", - "syscall.MAP_ALIGNMENT_256TB": "syscall", - "syscall.MAP_ALIGNMENT_4GB": "syscall", - "syscall.MAP_ALIGNMENT_64KB": "syscall", - "syscall.MAP_ALIGNMENT_64PB": "syscall", - "syscall.MAP_ALIGNMENT_MASK": "syscall", - "syscall.MAP_ALIGNMENT_SHIFT": "syscall", - "syscall.MAP_ANON": "syscall", - "syscall.MAP_ANONYMOUS": "syscall", - "syscall.MAP_COPY": "syscall", - "syscall.MAP_DENYWRITE": "syscall", - "syscall.MAP_EXECUTABLE": "syscall", - "syscall.MAP_FILE": "syscall", - "syscall.MAP_FIXED": "syscall", - "syscall.MAP_FLAGMASK": "syscall", - "syscall.MAP_GROWSDOWN": "syscall", - "syscall.MAP_HASSEMAPHORE": "syscall", - "syscall.MAP_HUGETLB": "syscall", - "syscall.MAP_INHERIT": "syscall", - "syscall.MAP_INHERIT_COPY": "syscall", - "syscall.MAP_INHERIT_DEFAULT": "syscall", - "syscall.MAP_INHERIT_DONATE_COPY": "syscall", - "syscall.MAP_INHERIT_NONE": "syscall", - "syscall.MAP_INHERIT_SHARE": "syscall", - "syscall.MAP_JIT": "syscall", - "syscall.MAP_LOCKED": "syscall", - "syscall.MAP_NOCACHE": "syscall", - "syscall.MAP_NOCORE": "syscall", - "syscall.MAP_NOEXTEND": "syscall", - "syscall.MAP_NONBLOCK": "syscall", - "syscall.MAP_NORESERVE": "syscall", - "syscall.MAP_NOSYNC": "syscall", - "syscall.MAP_POPULATE": "syscall", - "syscall.MAP_PREFAULT_READ": "syscall", - "syscall.MAP_PRIVATE": "syscall", - "syscall.MAP_RENAME": "syscall", - "syscall.MAP_RESERVED0080": "syscall", - "syscall.MAP_RESERVED0100": "syscall", - "syscall.MAP_SHARED": "syscall", - "syscall.MAP_STACK": "syscall", - "syscall.MAP_TRYFIXED": "syscall", - "syscall.MAP_TYPE": "syscall", - "syscall.MAP_WIRED": "syscall", - "syscall.MAXIMUM_REPARSE_DATA_BUFFER_SIZE": "syscall", - "syscall.MAXLEN_IFDESCR": "syscall", - "syscall.MAXLEN_PHYSADDR": "syscall", - "syscall.MAX_ADAPTER_ADDRESS_LENGTH": "syscall", - "syscall.MAX_ADAPTER_DESCRIPTION_LENGTH": "syscall", - "syscall.MAX_ADAPTER_NAME_LENGTH": "syscall", - "syscall.MAX_COMPUTERNAME_LENGTH": "syscall", - "syscall.MAX_INTERFACE_NAME_LEN": "syscall", - "syscall.MAX_LONG_PATH": "syscall", - "syscall.MAX_PATH": "syscall", - "syscall.MAX_PROTOCOL_CHAIN": "syscall", - "syscall.MCL_CURRENT": "syscall", - "syscall.MCL_FUTURE": "syscall", - "syscall.MNT_DETACH": "syscall", - "syscall.MNT_EXPIRE": "syscall", - "syscall.MNT_FORCE": "syscall", - "syscall.MSG_BCAST": "syscall", - "syscall.MSG_CMSG_CLOEXEC": "syscall", - "syscall.MSG_COMPAT": "syscall", - "syscall.MSG_CONFIRM": "syscall", - "syscall.MSG_CONTROLMBUF": "syscall", - "syscall.MSG_CTRUNC": "syscall", - "syscall.MSG_DONTROUTE": "syscall", - "syscall.MSG_DONTWAIT": "syscall", - "syscall.MSG_EOF": "syscall", - "syscall.MSG_EOR": "syscall", - "syscall.MSG_ERRQUEUE": "syscall", - "syscall.MSG_FASTOPEN": "syscall", - "syscall.MSG_FIN": "syscall", - "syscall.MSG_FLUSH": "syscall", - "syscall.MSG_HAVEMORE": "syscall", - "syscall.MSG_HOLD": "syscall", - "syscall.MSG_IOVUSRSPACE": "syscall", - "syscall.MSG_LENUSRSPACE": "syscall", - "syscall.MSG_MCAST": "syscall", - "syscall.MSG_MORE": "syscall", - "syscall.MSG_NAMEMBUF": "syscall", - "syscall.MSG_NBIO": "syscall", - "syscall.MSG_NEEDSA": "syscall", - "syscall.MSG_NOSIGNAL": "syscall", - "syscall.MSG_NOTIFICATION": "syscall", - "syscall.MSG_OOB": "syscall", - "syscall.MSG_PEEK": "syscall", - "syscall.MSG_PROXY": "syscall", - "syscall.MSG_RCVMORE": "syscall", - "syscall.MSG_RST": "syscall", - "syscall.MSG_SEND": "syscall", - "syscall.MSG_SYN": "syscall", - "syscall.MSG_TRUNC": "syscall", - "syscall.MSG_TRYHARD": "syscall", - "syscall.MSG_USERFLAGS": "syscall", - "syscall.MSG_WAITALL": "syscall", - "syscall.MSG_WAITFORONE": "syscall", - "syscall.MSG_WAITSTREAM": "syscall", - "syscall.MS_ACTIVE": "syscall", - "syscall.MS_ASYNC": "syscall", - "syscall.MS_BIND": "syscall", - "syscall.MS_DEACTIVATE": "syscall", - "syscall.MS_DIRSYNC": "syscall", - "syscall.MS_INVALIDATE": "syscall", - "syscall.MS_I_VERSION": "syscall", - "syscall.MS_KERNMOUNT": "syscall", - "syscall.MS_KILLPAGES": "syscall", - "syscall.MS_MANDLOCK": "syscall", - "syscall.MS_MGC_MSK": "syscall", - "syscall.MS_MGC_VAL": "syscall", - "syscall.MS_MOVE": "syscall", - "syscall.MS_NOATIME": "syscall", - "syscall.MS_NODEV": "syscall", - "syscall.MS_NODIRATIME": "syscall", - "syscall.MS_NOEXEC": "syscall", - "syscall.MS_NOSUID": "syscall", - "syscall.MS_NOUSER": "syscall", - "syscall.MS_POSIXACL": "syscall", - "syscall.MS_PRIVATE": "syscall", - "syscall.MS_RDONLY": "syscall", - "syscall.MS_REC": "syscall", - "syscall.MS_RELATIME": "syscall", - "syscall.MS_REMOUNT": "syscall", - "syscall.MS_RMT_MASK": "syscall", - "syscall.MS_SHARED": "syscall", - "syscall.MS_SILENT": "syscall", - "syscall.MS_SLAVE": "syscall", - "syscall.MS_STRICTATIME": "syscall", - "syscall.MS_SYNC": "syscall", - "syscall.MS_SYNCHRONOUS": "syscall", - "syscall.MS_UNBINDABLE": "syscall", - "syscall.Madvise": "syscall", - "syscall.MapViewOfFile": "syscall", - "syscall.MaxTokenInfoClass": "syscall", - "syscall.Mclpool": "syscall", - "syscall.MibIfRow": "syscall", - "syscall.Mkdir": "syscall", - "syscall.Mkdirat": "syscall", - "syscall.Mkfifo": "syscall", - "syscall.Mknod": "syscall", - "syscall.Mknodat": "syscall", - "syscall.Mlock": "syscall", - "syscall.Mlockall": "syscall", - "syscall.Mmap": "syscall", - "syscall.Mount": "syscall", - "syscall.MoveFile": "syscall", - "syscall.Mprotect": "syscall", - "syscall.Msghdr": "syscall", - "syscall.Munlock": "syscall", - "syscall.Munlockall": "syscall", - "syscall.Munmap": "syscall", - "syscall.MustLoadDLL": "syscall", - "syscall.NAME_MAX": "syscall", - "syscall.NETLINK_ADD_MEMBERSHIP": "syscall", - "syscall.NETLINK_AUDIT": "syscall", - "syscall.NETLINK_BROADCAST_ERROR": "syscall", - "syscall.NETLINK_CONNECTOR": "syscall", - "syscall.NETLINK_DNRTMSG": "syscall", - "syscall.NETLINK_DROP_MEMBERSHIP": "syscall", - "syscall.NETLINK_ECRYPTFS": "syscall", - "syscall.NETLINK_FIB_LOOKUP": "syscall", - "syscall.NETLINK_FIREWALL": "syscall", - "syscall.NETLINK_GENERIC": "syscall", - "syscall.NETLINK_INET_DIAG": "syscall", - "syscall.NETLINK_IP6_FW": "syscall", - "syscall.NETLINK_ISCSI": "syscall", - "syscall.NETLINK_KOBJECT_UEVENT": "syscall", - "syscall.NETLINK_NETFILTER": "syscall", - "syscall.NETLINK_NFLOG": "syscall", - "syscall.NETLINK_NO_ENOBUFS": "syscall", - "syscall.NETLINK_PKTINFO": "syscall", - "syscall.NETLINK_RDMA": "syscall", - "syscall.NETLINK_ROUTE": "syscall", - "syscall.NETLINK_SCSITRANSPORT": "syscall", - "syscall.NETLINK_SELINUX": "syscall", - "syscall.NETLINK_UNUSED": "syscall", - "syscall.NETLINK_USERSOCK": "syscall", - "syscall.NETLINK_XFRM": "syscall", - "syscall.NET_RT_DUMP": "syscall", - "syscall.NET_RT_DUMP2": "syscall", - "syscall.NET_RT_FLAGS": "syscall", - "syscall.NET_RT_IFLIST": "syscall", - "syscall.NET_RT_IFLIST2": "syscall", - "syscall.NET_RT_IFLISTL": "syscall", - "syscall.NET_RT_IFMALIST": "syscall", - "syscall.NET_RT_MAXID": "syscall", - "syscall.NET_RT_OIFLIST": "syscall", - "syscall.NET_RT_OOIFLIST": "syscall", - "syscall.NET_RT_STAT": "syscall", - "syscall.NET_RT_STATS": "syscall", - "syscall.NET_RT_TABLE": "syscall", - "syscall.NET_RT_TRASH": "syscall", - "syscall.NLA_ALIGNTO": "syscall", - "syscall.NLA_F_NESTED": "syscall", - "syscall.NLA_F_NET_BYTEORDER": "syscall", - "syscall.NLA_HDRLEN": "syscall", - "syscall.NLMSG_ALIGNTO": "syscall", - "syscall.NLMSG_DONE": "syscall", - "syscall.NLMSG_ERROR": "syscall", - "syscall.NLMSG_HDRLEN": "syscall", - "syscall.NLMSG_MIN_TYPE": "syscall", - "syscall.NLMSG_NOOP": "syscall", - "syscall.NLMSG_OVERRUN": "syscall", - "syscall.NLM_F_ACK": "syscall", - "syscall.NLM_F_APPEND": "syscall", - "syscall.NLM_F_ATOMIC": "syscall", - "syscall.NLM_F_CREATE": "syscall", - "syscall.NLM_F_DUMP": "syscall", - "syscall.NLM_F_ECHO": "syscall", - "syscall.NLM_F_EXCL": "syscall", - "syscall.NLM_F_MATCH": "syscall", - "syscall.NLM_F_MULTI": "syscall", - "syscall.NLM_F_REPLACE": "syscall", - "syscall.NLM_F_REQUEST": "syscall", - "syscall.NLM_F_ROOT": "syscall", - "syscall.NOFLSH": "syscall", - "syscall.NOTE_ABSOLUTE": "syscall", - "syscall.NOTE_ATTRIB": "syscall", - "syscall.NOTE_CHILD": "syscall", - "syscall.NOTE_DELETE": "syscall", - "syscall.NOTE_EOF": "syscall", - "syscall.NOTE_EXEC": "syscall", - "syscall.NOTE_EXIT": "syscall", - "syscall.NOTE_EXITSTATUS": "syscall", - "syscall.NOTE_EXTEND": "syscall", - "syscall.NOTE_FFAND": "syscall", - "syscall.NOTE_FFCOPY": "syscall", - "syscall.NOTE_FFCTRLMASK": "syscall", - "syscall.NOTE_FFLAGSMASK": "syscall", - "syscall.NOTE_FFNOP": "syscall", - "syscall.NOTE_FFOR": "syscall", - "syscall.NOTE_FORK": "syscall", - "syscall.NOTE_LINK": "syscall", - "syscall.NOTE_LOWAT": "syscall", - "syscall.NOTE_NONE": "syscall", - "syscall.NOTE_NSECONDS": "syscall", - "syscall.NOTE_PCTRLMASK": "syscall", - "syscall.NOTE_PDATAMASK": "syscall", - "syscall.NOTE_REAP": "syscall", - "syscall.NOTE_RENAME": "syscall", - "syscall.NOTE_RESOURCEEND": "syscall", - "syscall.NOTE_REVOKE": "syscall", - "syscall.NOTE_SECONDS": "syscall", - "syscall.NOTE_SIGNAL": "syscall", - "syscall.NOTE_TRACK": "syscall", - "syscall.NOTE_TRACKERR": "syscall", - "syscall.NOTE_TRIGGER": "syscall", - "syscall.NOTE_TRUNCATE": "syscall", - "syscall.NOTE_USECONDS": "syscall", - "syscall.NOTE_VM_ERROR": "syscall", - "syscall.NOTE_VM_PRESSURE": "syscall", - "syscall.NOTE_VM_PRESSURE_SUDDEN_TERMINATE": "syscall", - "syscall.NOTE_VM_PRESSURE_TERMINATE": "syscall", - "syscall.NOTE_WRITE": "syscall", - "syscall.NameCanonical": "syscall", - "syscall.NameCanonicalEx": "syscall", - "syscall.NameDisplay": "syscall", - "syscall.NameDnsDomain": "syscall", - "syscall.NameFullyQualifiedDN": "syscall", - "syscall.NameSamCompatible": "syscall", - "syscall.NameServicePrincipal": "syscall", - "syscall.NameUniqueId": "syscall", - "syscall.NameUnknown": "syscall", - "syscall.NameUserPrincipal": "syscall", - "syscall.Nanosleep": "syscall", - "syscall.NetApiBufferFree": "syscall", - "syscall.NetGetJoinInformation": "syscall", - "syscall.NetSetupDomainName": "syscall", - "syscall.NetSetupUnjoined": "syscall", - "syscall.NetSetupUnknownStatus": "syscall", - "syscall.NetSetupWorkgroupName": "syscall", - "syscall.NetUserGetInfo": "syscall", - "syscall.NetlinkMessage": "syscall", - "syscall.NetlinkRIB": "syscall", - "syscall.NetlinkRouteAttr": "syscall", - "syscall.NetlinkRouteRequest": "syscall", - "syscall.NewCallback": "syscall", - "syscall.NewCallbackCDecl": "syscall", - "syscall.NewLazyDLL": "syscall", - "syscall.NlAttr": "syscall", - "syscall.NlMsgerr": "syscall", - "syscall.NlMsghdr": "syscall", - "syscall.NsecToFiletime": "syscall", - "syscall.NsecToTimespec": "syscall", - "syscall.NsecToTimeval": "syscall", - "syscall.Ntohs": "syscall", - "syscall.OCRNL": "syscall", - "syscall.OFDEL": "syscall", - "syscall.OFILL": "syscall", - "syscall.OFIOGETBMAP": "syscall", - "syscall.OID_PKIX_KP_SERVER_AUTH": "syscall", - "syscall.OID_SERVER_GATED_CRYPTO": "syscall", - "syscall.OID_SGC_NETSCAPE": "syscall", - "syscall.OLCUC": "syscall", - "syscall.ONLCR": "syscall", - "syscall.ONLRET": "syscall", - "syscall.ONOCR": "syscall", - "syscall.ONOEOT": "syscall", - "syscall.OPEN_ALWAYS": "syscall", - "syscall.OPEN_EXISTING": "syscall", - "syscall.OPOST": "syscall", - "syscall.O_ACCMODE": "syscall", - "syscall.O_ALERT": "syscall", - "syscall.O_ALT_IO": "syscall", - "syscall.O_APPEND": "syscall", - "syscall.O_ASYNC": "syscall", - "syscall.O_CLOEXEC": "syscall", - "syscall.O_CREAT": "syscall", - "syscall.O_DIRECT": "syscall", - "syscall.O_DIRECTORY": "syscall", - "syscall.O_DSYNC": "syscall", - "syscall.O_EVTONLY": "syscall", - "syscall.O_EXCL": "syscall", - "syscall.O_EXEC": "syscall", - "syscall.O_EXLOCK": "syscall", - "syscall.O_FSYNC": "syscall", - "syscall.O_LARGEFILE": "syscall", - "syscall.O_NDELAY": "syscall", - "syscall.O_NOATIME": "syscall", - "syscall.O_NOCTTY": "syscall", - "syscall.O_NOFOLLOW": "syscall", - "syscall.O_NONBLOCK": "syscall", - "syscall.O_NOSIGPIPE": "syscall", - "syscall.O_POPUP": "syscall", - "syscall.O_RDONLY": "syscall", - "syscall.O_RDWR": "syscall", - "syscall.O_RSYNC": "syscall", - "syscall.O_SHLOCK": "syscall", - "syscall.O_SYMLINK": "syscall", - "syscall.O_SYNC": "syscall", - "syscall.O_TRUNC": "syscall", - "syscall.O_TTY_INIT": "syscall", - "syscall.O_WRONLY": "syscall", - "syscall.Open": "syscall", - "syscall.OpenCurrentProcessToken": "syscall", - "syscall.OpenProcess": "syscall", - "syscall.OpenProcessToken": "syscall", - "syscall.Openat": "syscall", - "syscall.Overlapped": "syscall", - "syscall.PACKET_ADD_MEMBERSHIP": "syscall", - "syscall.PACKET_BROADCAST": "syscall", - "syscall.PACKET_DROP_MEMBERSHIP": "syscall", - "syscall.PACKET_FASTROUTE": "syscall", - "syscall.PACKET_HOST": "syscall", - "syscall.PACKET_LOOPBACK": "syscall", - "syscall.PACKET_MR_ALLMULTI": "syscall", - "syscall.PACKET_MR_MULTICAST": "syscall", - "syscall.PACKET_MR_PROMISC": "syscall", - "syscall.PACKET_MULTICAST": "syscall", - "syscall.PACKET_OTHERHOST": "syscall", - "syscall.PACKET_OUTGOING": "syscall", - "syscall.PACKET_RECV_OUTPUT": "syscall", - "syscall.PACKET_RX_RING": "syscall", - "syscall.PACKET_STATISTICS": "syscall", - "syscall.PAGE_EXECUTE_READ": "syscall", - "syscall.PAGE_EXECUTE_READWRITE": "syscall", - "syscall.PAGE_EXECUTE_WRITECOPY": "syscall", - "syscall.PAGE_READONLY": "syscall", - "syscall.PAGE_READWRITE": "syscall", - "syscall.PAGE_WRITECOPY": "syscall", - "syscall.PARENB": "syscall", - "syscall.PARMRK": "syscall", - "syscall.PARODD": "syscall", - "syscall.PENDIN": "syscall", - "syscall.PFL_HIDDEN": "syscall", - "syscall.PFL_MATCHES_PROTOCOL_ZERO": "syscall", - "syscall.PFL_MULTIPLE_PROTO_ENTRIES": "syscall", - "syscall.PFL_NETWORKDIRECT_PROVIDER": "syscall", - "syscall.PFL_RECOMMENDED_PROTO_ENTRY": "syscall", - "syscall.PF_FLUSH": "syscall", - "syscall.PKCS_7_ASN_ENCODING": "syscall", - "syscall.PMC5_PIPELINE_FLUSH": "syscall", - "syscall.PRIO_PGRP": "syscall", - "syscall.PRIO_PROCESS": "syscall", - "syscall.PRIO_USER": "syscall", - "syscall.PRI_IOFLUSH": "syscall", - "syscall.PROCESS_QUERY_INFORMATION": "syscall", - "syscall.PROCESS_TERMINATE": "syscall", - "syscall.PROT_EXEC": "syscall", - "syscall.PROT_GROWSDOWN": "syscall", - "syscall.PROT_GROWSUP": "syscall", - "syscall.PROT_NONE": "syscall", - "syscall.PROT_READ": "syscall", - "syscall.PROT_WRITE": "syscall", - "syscall.PROV_DH_SCHANNEL": "syscall", - "syscall.PROV_DSS": "syscall", - "syscall.PROV_DSS_DH": "syscall", - "syscall.PROV_EC_ECDSA_FULL": "syscall", - "syscall.PROV_EC_ECDSA_SIG": "syscall", - "syscall.PROV_EC_ECNRA_FULL": "syscall", - "syscall.PROV_EC_ECNRA_SIG": "syscall", - "syscall.PROV_FORTEZZA": "syscall", - "syscall.PROV_INTEL_SEC": "syscall", - "syscall.PROV_MS_EXCHANGE": "syscall", - "syscall.PROV_REPLACE_OWF": "syscall", - "syscall.PROV_RNG": "syscall", - "syscall.PROV_RSA_AES": "syscall", - "syscall.PROV_RSA_FULL": "syscall", - "syscall.PROV_RSA_SCHANNEL": "syscall", - "syscall.PROV_RSA_SIG": "syscall", - "syscall.PROV_SPYRUS_LYNKS": "syscall", - "syscall.PROV_SSL": "syscall", - "syscall.PR_CAPBSET_DROP": "syscall", - "syscall.PR_CAPBSET_READ": "syscall", - "syscall.PR_CLEAR_SECCOMP_FILTER": "syscall", - "syscall.PR_ENDIAN_BIG": "syscall", - "syscall.PR_ENDIAN_LITTLE": "syscall", - "syscall.PR_ENDIAN_PPC_LITTLE": "syscall", - "syscall.PR_FPEMU_NOPRINT": "syscall", - "syscall.PR_FPEMU_SIGFPE": "syscall", - "syscall.PR_FP_EXC_ASYNC": "syscall", - "syscall.PR_FP_EXC_DISABLED": "syscall", - "syscall.PR_FP_EXC_DIV": "syscall", - "syscall.PR_FP_EXC_INV": "syscall", - "syscall.PR_FP_EXC_NONRECOV": "syscall", - "syscall.PR_FP_EXC_OVF": "syscall", - "syscall.PR_FP_EXC_PRECISE": "syscall", - "syscall.PR_FP_EXC_RES": "syscall", - "syscall.PR_FP_EXC_SW_ENABLE": "syscall", - "syscall.PR_FP_EXC_UND": "syscall", - "syscall.PR_GET_DUMPABLE": "syscall", - "syscall.PR_GET_ENDIAN": "syscall", - "syscall.PR_GET_FPEMU": "syscall", - "syscall.PR_GET_FPEXC": "syscall", - "syscall.PR_GET_KEEPCAPS": "syscall", - "syscall.PR_GET_NAME": "syscall", - "syscall.PR_GET_PDEATHSIG": "syscall", - "syscall.PR_GET_SECCOMP": "syscall", - "syscall.PR_GET_SECCOMP_FILTER": "syscall", - "syscall.PR_GET_SECUREBITS": "syscall", - "syscall.PR_GET_TIMERSLACK": "syscall", - "syscall.PR_GET_TIMING": "syscall", - "syscall.PR_GET_TSC": "syscall", - "syscall.PR_GET_UNALIGN": "syscall", - "syscall.PR_MCE_KILL": "syscall", - "syscall.PR_MCE_KILL_CLEAR": "syscall", - "syscall.PR_MCE_KILL_DEFAULT": "syscall", - "syscall.PR_MCE_KILL_EARLY": "syscall", - "syscall.PR_MCE_KILL_GET": "syscall", - "syscall.PR_MCE_KILL_LATE": "syscall", - "syscall.PR_MCE_KILL_SET": "syscall", - "syscall.PR_SECCOMP_FILTER_EVENT": "syscall", - "syscall.PR_SECCOMP_FILTER_SYSCALL": "syscall", - "syscall.PR_SET_DUMPABLE": "syscall", - "syscall.PR_SET_ENDIAN": "syscall", - "syscall.PR_SET_FPEMU": "syscall", - "syscall.PR_SET_FPEXC": "syscall", - "syscall.PR_SET_KEEPCAPS": "syscall", - "syscall.PR_SET_NAME": "syscall", - "syscall.PR_SET_PDEATHSIG": "syscall", - "syscall.PR_SET_PTRACER": "syscall", - "syscall.PR_SET_SECCOMP": "syscall", - "syscall.PR_SET_SECCOMP_FILTER": "syscall", - "syscall.PR_SET_SECUREBITS": "syscall", - "syscall.PR_SET_TIMERSLACK": "syscall", - "syscall.PR_SET_TIMING": "syscall", - "syscall.PR_SET_TSC": "syscall", - "syscall.PR_SET_UNALIGN": "syscall", - "syscall.PR_TASK_PERF_EVENTS_DISABLE": "syscall", - "syscall.PR_TASK_PERF_EVENTS_ENABLE": "syscall", - "syscall.PR_TIMING_STATISTICAL": "syscall", - "syscall.PR_TIMING_TIMESTAMP": "syscall", - "syscall.PR_TSC_ENABLE": "syscall", - "syscall.PR_TSC_SIGSEGV": "syscall", - "syscall.PR_UNALIGN_NOPRINT": "syscall", - "syscall.PR_UNALIGN_SIGBUS": "syscall", - "syscall.PTRACE_ARCH_PRCTL": "syscall", - "syscall.PTRACE_ATTACH": "syscall", - "syscall.PTRACE_CONT": "syscall", - "syscall.PTRACE_DETACH": "syscall", - "syscall.PTRACE_EVENT_CLONE": "syscall", - "syscall.PTRACE_EVENT_EXEC": "syscall", - "syscall.PTRACE_EVENT_EXIT": "syscall", - "syscall.PTRACE_EVENT_FORK": "syscall", - "syscall.PTRACE_EVENT_VFORK": "syscall", - "syscall.PTRACE_EVENT_VFORK_DONE": "syscall", - "syscall.PTRACE_GETCRUNCHREGS": "syscall", - "syscall.PTRACE_GETEVENTMSG": "syscall", - "syscall.PTRACE_GETFPREGS": "syscall", - "syscall.PTRACE_GETFPXREGS": "syscall", - "syscall.PTRACE_GETHBPREGS": "syscall", - "syscall.PTRACE_GETREGS": "syscall", - "syscall.PTRACE_GETREGSET": "syscall", - "syscall.PTRACE_GETSIGINFO": "syscall", - "syscall.PTRACE_GETVFPREGS": "syscall", - "syscall.PTRACE_GETWMMXREGS": "syscall", - "syscall.PTRACE_GET_THREAD_AREA": "syscall", - "syscall.PTRACE_KILL": "syscall", - "syscall.PTRACE_OLDSETOPTIONS": "syscall", - "syscall.PTRACE_O_MASK": "syscall", - "syscall.PTRACE_O_TRACECLONE": "syscall", - "syscall.PTRACE_O_TRACEEXEC": "syscall", - "syscall.PTRACE_O_TRACEEXIT": "syscall", - "syscall.PTRACE_O_TRACEFORK": "syscall", - "syscall.PTRACE_O_TRACESYSGOOD": "syscall", - "syscall.PTRACE_O_TRACEVFORK": "syscall", - "syscall.PTRACE_O_TRACEVFORKDONE": "syscall", - "syscall.PTRACE_PEEKDATA": "syscall", - "syscall.PTRACE_PEEKTEXT": "syscall", - "syscall.PTRACE_PEEKUSR": "syscall", - "syscall.PTRACE_POKEDATA": "syscall", - "syscall.PTRACE_POKETEXT": "syscall", - "syscall.PTRACE_POKEUSR": "syscall", - "syscall.PTRACE_SETCRUNCHREGS": "syscall", - "syscall.PTRACE_SETFPREGS": "syscall", - "syscall.PTRACE_SETFPXREGS": "syscall", - "syscall.PTRACE_SETHBPREGS": "syscall", - "syscall.PTRACE_SETOPTIONS": "syscall", - "syscall.PTRACE_SETREGS": "syscall", - "syscall.PTRACE_SETREGSET": "syscall", - "syscall.PTRACE_SETSIGINFO": "syscall", - "syscall.PTRACE_SETVFPREGS": "syscall", - "syscall.PTRACE_SETWMMXREGS": "syscall", - "syscall.PTRACE_SET_SYSCALL": "syscall", - "syscall.PTRACE_SET_THREAD_AREA": "syscall", - "syscall.PTRACE_SINGLEBLOCK": "syscall", - "syscall.PTRACE_SINGLESTEP": "syscall", - "syscall.PTRACE_SYSCALL": "syscall", - "syscall.PTRACE_SYSEMU": "syscall", - "syscall.PTRACE_SYSEMU_SINGLESTEP": "syscall", - "syscall.PTRACE_TRACEME": "syscall", - "syscall.PT_ATTACH": "syscall", - "syscall.PT_ATTACHEXC": "syscall", - "syscall.PT_CONTINUE": "syscall", - "syscall.PT_DATA_ADDR": "syscall", - "syscall.PT_DENY_ATTACH": "syscall", - "syscall.PT_DETACH": "syscall", - "syscall.PT_FIRSTMACH": "syscall", - "syscall.PT_FORCEQUOTA": "syscall", - "syscall.PT_KILL": "syscall", - "syscall.PT_MASK": "syscall", - "syscall.PT_READ_D": "syscall", - "syscall.PT_READ_I": "syscall", - "syscall.PT_READ_U": "syscall", - "syscall.PT_SIGEXC": "syscall", - "syscall.PT_STEP": "syscall", - "syscall.PT_TEXT_ADDR": "syscall", - "syscall.PT_TEXT_END_ADDR": "syscall", - "syscall.PT_THUPDATE": "syscall", - "syscall.PT_TRACE_ME": "syscall", - "syscall.PT_WRITE_D": "syscall", - "syscall.PT_WRITE_I": "syscall", - "syscall.PT_WRITE_U": "syscall", - "syscall.ParseDirent": "syscall", - "syscall.ParseNetlinkMessage": "syscall", - "syscall.ParseNetlinkRouteAttr": "syscall", - "syscall.ParseRoutingMessage": "syscall", - "syscall.ParseRoutingSockaddr": "syscall", - "syscall.ParseSocketControlMessage": "syscall", - "syscall.ParseUnixCredentials": "syscall", - "syscall.ParseUnixRights": "syscall", - "syscall.PathMax": "syscall", - "syscall.Pathconf": "syscall", - "syscall.Pause": "syscall", - "syscall.Pipe": "syscall", - "syscall.Pipe2": "syscall", - "syscall.PivotRoot": "syscall", - "syscall.PostQueuedCompletionStatus": "syscall", - "syscall.Pread": "syscall", - "syscall.Proc": "syscall", - "syscall.ProcAttr": "syscall", - "syscall.Process32First": "syscall", - "syscall.Process32Next": "syscall", - "syscall.ProcessEntry32": "syscall", - "syscall.ProcessInformation": "syscall", - "syscall.Protoent": "syscall", - "syscall.PtraceAttach": "syscall", - "syscall.PtraceCont": "syscall", - "syscall.PtraceDetach": "syscall", - "syscall.PtraceGetEventMsg": "syscall", - "syscall.PtraceGetRegs": "syscall", - "syscall.PtracePeekData": "syscall", - "syscall.PtracePeekText": "syscall", - "syscall.PtracePokeData": "syscall", - "syscall.PtracePokeText": "syscall", - "syscall.PtraceRegs": "syscall", - "syscall.PtraceSetOptions": "syscall", - "syscall.PtraceSetRegs": "syscall", - "syscall.PtraceSingleStep": "syscall", - "syscall.PtraceSyscall": "syscall", - "syscall.Pwrite": "syscall", - "syscall.REG_BINARY": "syscall", - "syscall.REG_DWORD": "syscall", - "syscall.REG_DWORD_BIG_ENDIAN": "syscall", - "syscall.REG_DWORD_LITTLE_ENDIAN": "syscall", - "syscall.REG_EXPAND_SZ": "syscall", - "syscall.REG_FULL_RESOURCE_DESCRIPTOR": "syscall", - "syscall.REG_LINK": "syscall", - "syscall.REG_MULTI_SZ": "syscall", - "syscall.REG_NONE": "syscall", - "syscall.REG_QWORD": "syscall", - "syscall.REG_QWORD_LITTLE_ENDIAN": "syscall", - "syscall.REG_RESOURCE_LIST": "syscall", - "syscall.REG_RESOURCE_REQUIREMENTS_LIST": "syscall", - "syscall.REG_SZ": "syscall", - "syscall.RLIMIT_AS": "syscall", - "syscall.RLIMIT_CORE": "syscall", - "syscall.RLIMIT_CPU": "syscall", - "syscall.RLIMIT_DATA": "syscall", - "syscall.RLIMIT_FSIZE": "syscall", - "syscall.RLIMIT_NOFILE": "syscall", - "syscall.RLIMIT_STACK": "syscall", - "syscall.RLIM_INFINITY": "syscall", - "syscall.RTAX_ADVMSS": "syscall", - "syscall.RTAX_AUTHOR": "syscall", - "syscall.RTAX_BRD": "syscall", - "syscall.RTAX_CWND": "syscall", - "syscall.RTAX_DST": "syscall", - "syscall.RTAX_FEATURES": "syscall", - "syscall.RTAX_FEATURE_ALLFRAG": "syscall", - "syscall.RTAX_FEATURE_ECN": "syscall", - "syscall.RTAX_FEATURE_SACK": "syscall", - "syscall.RTAX_FEATURE_TIMESTAMP": "syscall", - "syscall.RTAX_GATEWAY": "syscall", - "syscall.RTAX_GENMASK": "syscall", - "syscall.RTAX_HOPLIMIT": "syscall", - "syscall.RTAX_IFA": "syscall", - "syscall.RTAX_IFP": "syscall", - "syscall.RTAX_INITCWND": "syscall", - "syscall.RTAX_INITRWND": "syscall", - "syscall.RTAX_LABEL": "syscall", - "syscall.RTAX_LOCK": "syscall", - "syscall.RTAX_MAX": "syscall", - "syscall.RTAX_MTU": "syscall", - "syscall.RTAX_NETMASK": "syscall", - "syscall.RTAX_REORDERING": "syscall", - "syscall.RTAX_RTO_MIN": "syscall", - "syscall.RTAX_RTT": "syscall", - "syscall.RTAX_RTTVAR": "syscall", - "syscall.RTAX_SRC": "syscall", - "syscall.RTAX_SRCMASK": "syscall", - "syscall.RTAX_SSTHRESH": "syscall", - "syscall.RTAX_TAG": "syscall", - "syscall.RTAX_UNSPEC": "syscall", - "syscall.RTAX_WINDOW": "syscall", - "syscall.RTA_ALIGNTO": "syscall", - "syscall.RTA_AUTHOR": "syscall", - "syscall.RTA_BRD": "syscall", - "syscall.RTA_CACHEINFO": "syscall", - "syscall.RTA_DST": "syscall", - "syscall.RTA_FLOW": "syscall", - "syscall.RTA_GATEWAY": "syscall", - "syscall.RTA_GENMASK": "syscall", - "syscall.RTA_IFA": "syscall", - "syscall.RTA_IFP": "syscall", - "syscall.RTA_IIF": "syscall", - "syscall.RTA_LABEL": "syscall", - "syscall.RTA_MAX": "syscall", - "syscall.RTA_METRICS": "syscall", - "syscall.RTA_MULTIPATH": "syscall", - "syscall.RTA_NETMASK": "syscall", - "syscall.RTA_OIF": "syscall", - "syscall.RTA_PREFSRC": "syscall", - "syscall.RTA_PRIORITY": "syscall", - "syscall.RTA_SRC": "syscall", - "syscall.RTA_SRCMASK": "syscall", - "syscall.RTA_TABLE": "syscall", - "syscall.RTA_TAG": "syscall", - "syscall.RTA_UNSPEC": "syscall", - "syscall.RTCF_DIRECTSRC": "syscall", - "syscall.RTCF_DOREDIRECT": "syscall", - "syscall.RTCF_LOG": "syscall", - "syscall.RTCF_MASQ": "syscall", - "syscall.RTCF_NAT": "syscall", - "syscall.RTCF_VALVE": "syscall", - "syscall.RTF_ADDRCLASSMASK": "syscall", - "syscall.RTF_ADDRCONF": "syscall", - "syscall.RTF_ALLONLINK": "syscall", - "syscall.RTF_ANNOUNCE": "syscall", - "syscall.RTF_BLACKHOLE": "syscall", - "syscall.RTF_BROADCAST": "syscall", - "syscall.RTF_CACHE": "syscall", - "syscall.RTF_CLONED": "syscall", - "syscall.RTF_CLONING": "syscall", - "syscall.RTF_CONDEMNED": "syscall", - "syscall.RTF_DEFAULT": "syscall", - "syscall.RTF_DELCLONE": "syscall", - "syscall.RTF_DONE": "syscall", - "syscall.RTF_DYNAMIC": "syscall", - "syscall.RTF_FLOW": "syscall", - "syscall.RTF_FMASK": "syscall", - "syscall.RTF_GATEWAY": "syscall", - "syscall.RTF_GWFLAG_COMPAT": "syscall", - "syscall.RTF_HOST": "syscall", - "syscall.RTF_IFREF": "syscall", - "syscall.RTF_IFSCOPE": "syscall", - "syscall.RTF_INTERFACE": "syscall", - "syscall.RTF_IRTT": "syscall", - "syscall.RTF_LINKRT": "syscall", - "syscall.RTF_LLDATA": "syscall", - "syscall.RTF_LLINFO": "syscall", - "syscall.RTF_LOCAL": "syscall", - "syscall.RTF_MASK": "syscall", - "syscall.RTF_MODIFIED": "syscall", - "syscall.RTF_MPATH": "syscall", - "syscall.RTF_MPLS": "syscall", - "syscall.RTF_MSS": "syscall", - "syscall.RTF_MTU": "syscall", - "syscall.RTF_MULTICAST": "syscall", - "syscall.RTF_NAT": "syscall", - "syscall.RTF_NOFORWARD": "syscall", - "syscall.RTF_NONEXTHOP": "syscall", - "syscall.RTF_NOPMTUDISC": "syscall", - "syscall.RTF_PERMANENT_ARP": "syscall", - "syscall.RTF_PINNED": "syscall", - "syscall.RTF_POLICY": "syscall", - "syscall.RTF_PRCLONING": "syscall", - "syscall.RTF_PROTO1": "syscall", - "syscall.RTF_PROTO2": "syscall", - "syscall.RTF_PROTO3": "syscall", - "syscall.RTF_REINSTATE": "syscall", - "syscall.RTF_REJECT": "syscall", - "syscall.RTF_RNH_LOCKED": "syscall", - "syscall.RTF_SOURCE": "syscall", - "syscall.RTF_SRC": "syscall", - "syscall.RTF_STATIC": "syscall", - "syscall.RTF_STICKY": "syscall", - "syscall.RTF_THROW": "syscall", - "syscall.RTF_TUNNEL": "syscall", - "syscall.RTF_UP": "syscall", - "syscall.RTF_USETRAILERS": "syscall", - "syscall.RTF_WASCLONED": "syscall", - "syscall.RTF_WINDOW": "syscall", - "syscall.RTF_XRESOLVE": "syscall", - "syscall.RTM_ADD": "syscall", - "syscall.RTM_BASE": "syscall", - "syscall.RTM_CHANGE": "syscall", - "syscall.RTM_CHGADDR": "syscall", - "syscall.RTM_DELACTION": "syscall", - "syscall.RTM_DELADDR": "syscall", - "syscall.RTM_DELADDRLABEL": "syscall", - "syscall.RTM_DELETE": "syscall", - "syscall.RTM_DELLINK": "syscall", - "syscall.RTM_DELMADDR": "syscall", - "syscall.RTM_DELNEIGH": "syscall", - "syscall.RTM_DELQDISC": "syscall", - "syscall.RTM_DELROUTE": "syscall", - "syscall.RTM_DELRULE": "syscall", - "syscall.RTM_DELTCLASS": "syscall", - "syscall.RTM_DELTFILTER": "syscall", - "syscall.RTM_DESYNC": "syscall", - "syscall.RTM_F_CLONED": "syscall", - "syscall.RTM_F_EQUALIZE": "syscall", - "syscall.RTM_F_NOTIFY": "syscall", - "syscall.RTM_F_PREFIX": "syscall", - "syscall.RTM_GET": "syscall", - "syscall.RTM_GET2": "syscall", - "syscall.RTM_GETACTION": "syscall", - "syscall.RTM_GETADDR": "syscall", - "syscall.RTM_GETADDRLABEL": "syscall", - "syscall.RTM_GETANYCAST": "syscall", - "syscall.RTM_GETDCB": "syscall", - "syscall.RTM_GETLINK": "syscall", - "syscall.RTM_GETMULTICAST": "syscall", - "syscall.RTM_GETNEIGH": "syscall", - "syscall.RTM_GETNEIGHTBL": "syscall", - "syscall.RTM_GETQDISC": "syscall", - "syscall.RTM_GETROUTE": "syscall", - "syscall.RTM_GETRULE": "syscall", - "syscall.RTM_GETTCLASS": "syscall", - "syscall.RTM_GETTFILTER": "syscall", - "syscall.RTM_IEEE80211": "syscall", - "syscall.RTM_IFANNOUNCE": "syscall", - "syscall.RTM_IFINFO": "syscall", - "syscall.RTM_IFINFO2": "syscall", - "syscall.RTM_LLINFO_UPD": "syscall", - "syscall.RTM_LOCK": "syscall", - "syscall.RTM_LOSING": "syscall", - "syscall.RTM_MAX": "syscall", - "syscall.RTM_MAXSIZE": "syscall", - "syscall.RTM_MISS": "syscall", - "syscall.RTM_NEWACTION": "syscall", - "syscall.RTM_NEWADDR": "syscall", - "syscall.RTM_NEWADDRLABEL": "syscall", - "syscall.RTM_NEWLINK": "syscall", - "syscall.RTM_NEWMADDR": "syscall", - "syscall.RTM_NEWMADDR2": "syscall", - "syscall.RTM_NEWNDUSEROPT": "syscall", - "syscall.RTM_NEWNEIGH": "syscall", - "syscall.RTM_NEWNEIGHTBL": "syscall", - "syscall.RTM_NEWPREFIX": "syscall", - "syscall.RTM_NEWQDISC": "syscall", - "syscall.RTM_NEWROUTE": "syscall", - "syscall.RTM_NEWRULE": "syscall", - "syscall.RTM_NEWTCLASS": "syscall", - "syscall.RTM_NEWTFILTER": "syscall", - "syscall.RTM_NR_FAMILIES": "syscall", - "syscall.RTM_NR_MSGTYPES": "syscall", - "syscall.RTM_OIFINFO": "syscall", - "syscall.RTM_OLDADD": "syscall", - "syscall.RTM_OLDDEL": "syscall", - "syscall.RTM_OOIFINFO": "syscall", - "syscall.RTM_REDIRECT": "syscall", - "syscall.RTM_RESOLVE": "syscall", - "syscall.RTM_RTTUNIT": "syscall", - "syscall.RTM_SETDCB": "syscall", - "syscall.RTM_SETGATE": "syscall", - "syscall.RTM_SETLINK": "syscall", - "syscall.RTM_SETNEIGHTBL": "syscall", - "syscall.RTM_VERSION": "syscall", - "syscall.RTNH_ALIGNTO": "syscall", - "syscall.RTNH_F_DEAD": "syscall", - "syscall.RTNH_F_ONLINK": "syscall", - "syscall.RTNH_F_PERVASIVE": "syscall", - "syscall.RTNLGRP_IPV4_IFADDR": "syscall", - "syscall.RTNLGRP_IPV4_MROUTE": "syscall", - "syscall.RTNLGRP_IPV4_ROUTE": "syscall", - "syscall.RTNLGRP_IPV4_RULE": "syscall", - "syscall.RTNLGRP_IPV6_IFADDR": "syscall", - "syscall.RTNLGRP_IPV6_IFINFO": "syscall", - "syscall.RTNLGRP_IPV6_MROUTE": "syscall", - "syscall.RTNLGRP_IPV6_PREFIX": "syscall", - "syscall.RTNLGRP_IPV6_ROUTE": "syscall", - "syscall.RTNLGRP_IPV6_RULE": "syscall", - "syscall.RTNLGRP_LINK": "syscall", - "syscall.RTNLGRP_ND_USEROPT": "syscall", - "syscall.RTNLGRP_NEIGH": "syscall", - "syscall.RTNLGRP_NONE": "syscall", - "syscall.RTNLGRP_NOTIFY": "syscall", - "syscall.RTNLGRP_TC": "syscall", - "syscall.RTN_ANYCAST": "syscall", - "syscall.RTN_BLACKHOLE": "syscall", - "syscall.RTN_BROADCAST": "syscall", - "syscall.RTN_LOCAL": "syscall", - "syscall.RTN_MAX": "syscall", - "syscall.RTN_MULTICAST": "syscall", - "syscall.RTN_NAT": "syscall", - "syscall.RTN_PROHIBIT": "syscall", - "syscall.RTN_THROW": "syscall", - "syscall.RTN_UNICAST": "syscall", - "syscall.RTN_UNREACHABLE": "syscall", - "syscall.RTN_UNSPEC": "syscall", - "syscall.RTN_XRESOLVE": "syscall", - "syscall.RTPROT_BIRD": "syscall", - "syscall.RTPROT_BOOT": "syscall", - "syscall.RTPROT_DHCP": "syscall", - "syscall.RTPROT_DNROUTED": "syscall", - "syscall.RTPROT_GATED": "syscall", - "syscall.RTPROT_KERNEL": "syscall", - "syscall.RTPROT_MRT": "syscall", - "syscall.RTPROT_NTK": "syscall", - "syscall.RTPROT_RA": "syscall", - "syscall.RTPROT_REDIRECT": "syscall", - "syscall.RTPROT_STATIC": "syscall", - "syscall.RTPROT_UNSPEC": "syscall", - "syscall.RTPROT_XORP": "syscall", - "syscall.RTPROT_ZEBRA": "syscall", - "syscall.RTV_EXPIRE": "syscall", - "syscall.RTV_HOPCOUNT": "syscall", - "syscall.RTV_MTU": "syscall", - "syscall.RTV_RPIPE": "syscall", - "syscall.RTV_RTT": "syscall", - "syscall.RTV_RTTVAR": "syscall", - "syscall.RTV_SPIPE": "syscall", - "syscall.RTV_SSTHRESH": "syscall", - "syscall.RTV_WEIGHT": "syscall", - "syscall.RT_CACHING_CONTEXT": "syscall", - "syscall.RT_CLASS_DEFAULT": "syscall", - "syscall.RT_CLASS_LOCAL": "syscall", - "syscall.RT_CLASS_MAIN": "syscall", - "syscall.RT_CLASS_MAX": "syscall", - "syscall.RT_CLASS_UNSPEC": "syscall", - "syscall.RT_DEFAULT_FIB": "syscall", - "syscall.RT_NORTREF": "syscall", - "syscall.RT_SCOPE_HOST": "syscall", - "syscall.RT_SCOPE_LINK": "syscall", - "syscall.RT_SCOPE_NOWHERE": "syscall", - "syscall.RT_SCOPE_SITE": "syscall", - "syscall.RT_SCOPE_UNIVERSE": "syscall", - "syscall.RT_TABLEID_MAX": "syscall", - "syscall.RT_TABLE_COMPAT": "syscall", - "syscall.RT_TABLE_DEFAULT": "syscall", - "syscall.RT_TABLE_LOCAL": "syscall", - "syscall.RT_TABLE_MAIN": "syscall", - "syscall.RT_TABLE_MAX": "syscall", - "syscall.RT_TABLE_UNSPEC": "syscall", - "syscall.RUSAGE_CHILDREN": "syscall", - "syscall.RUSAGE_SELF": "syscall", - "syscall.RUSAGE_THREAD": "syscall", - "syscall.Radvisory_t": "syscall", - "syscall.RawConn": "syscall", - "syscall.RawSockaddr": "syscall", - "syscall.RawSockaddrAny": "syscall", - "syscall.RawSockaddrDatalink": "syscall", - "syscall.RawSockaddrInet4": "syscall", - "syscall.RawSockaddrInet6": "syscall", - "syscall.RawSockaddrLinklayer": "syscall", - "syscall.RawSockaddrNetlink": "syscall", - "syscall.RawSockaddrUnix": "syscall", - "syscall.RawSyscall": "syscall", - "syscall.RawSyscall6": "syscall", - "syscall.Read": "syscall", - "syscall.ReadConsole": "syscall", - "syscall.ReadDirectoryChanges": "syscall", - "syscall.ReadDirent": "syscall", - "syscall.ReadFile": "syscall", - "syscall.Readlink": "syscall", - "syscall.Reboot": "syscall", - "syscall.Recvfrom": "syscall", - "syscall.Recvmsg": "syscall", - "syscall.RegCloseKey": "syscall", - "syscall.RegEnumKeyEx": "syscall", - "syscall.RegOpenKeyEx": "syscall", - "syscall.RegQueryInfoKey": "syscall", - "syscall.RegQueryValueEx": "syscall", - "syscall.RemoveDirectory": "syscall", - "syscall.Removexattr": "syscall", - "syscall.Rename": "syscall", - "syscall.Renameat": "syscall", - "syscall.Revoke": "syscall", - "syscall.Rlimit": "syscall", - "syscall.Rmdir": "syscall", - "syscall.RouteMessage": "syscall", - "syscall.RouteRIB": "syscall", - "syscall.RtAttr": "syscall", - "syscall.RtGenmsg": "syscall", - "syscall.RtMetrics": "syscall", - "syscall.RtMsg": "syscall", - "syscall.RtMsghdr": "syscall", - "syscall.RtNexthop": "syscall", - "syscall.Rusage": "syscall", - "syscall.SCM_BINTIME": "syscall", - "syscall.SCM_CREDENTIALS": "syscall", - "syscall.SCM_CREDS": "syscall", - "syscall.SCM_RIGHTS": "syscall", - "syscall.SCM_TIMESTAMP": "syscall", - "syscall.SCM_TIMESTAMPING": "syscall", - "syscall.SCM_TIMESTAMPNS": "syscall", - "syscall.SCM_TIMESTAMP_MONOTONIC": "syscall", - "syscall.SHUT_RD": "syscall", - "syscall.SHUT_RDWR": "syscall", - "syscall.SHUT_WR": "syscall", - "syscall.SID": "syscall", - "syscall.SIDAndAttributes": "syscall", - "syscall.SIGABRT": "syscall", - "syscall.SIGALRM": "syscall", - "syscall.SIGBUS": "syscall", - "syscall.SIGCHLD": "syscall", - "syscall.SIGCLD": "syscall", - "syscall.SIGCONT": "syscall", - "syscall.SIGEMT": "syscall", - "syscall.SIGFPE": "syscall", - "syscall.SIGHUP": "syscall", - "syscall.SIGILL": "syscall", - "syscall.SIGINFO": "syscall", - "syscall.SIGINT": "syscall", - "syscall.SIGIO": "syscall", - "syscall.SIGIOT": "syscall", - "syscall.SIGKILL": "syscall", - "syscall.SIGLIBRT": "syscall", - "syscall.SIGLWP": "syscall", - "syscall.SIGPIPE": "syscall", - "syscall.SIGPOLL": "syscall", - "syscall.SIGPROF": "syscall", - "syscall.SIGPWR": "syscall", - "syscall.SIGQUIT": "syscall", - "syscall.SIGSEGV": "syscall", - "syscall.SIGSTKFLT": "syscall", - "syscall.SIGSTOP": "syscall", - "syscall.SIGSYS": "syscall", - "syscall.SIGTERM": "syscall", - "syscall.SIGTHR": "syscall", - "syscall.SIGTRAP": "syscall", - "syscall.SIGTSTP": "syscall", - "syscall.SIGTTIN": "syscall", - "syscall.SIGTTOU": "syscall", - "syscall.SIGUNUSED": "syscall", - "syscall.SIGURG": "syscall", - "syscall.SIGUSR1": "syscall", - "syscall.SIGUSR2": "syscall", - "syscall.SIGVTALRM": "syscall", - "syscall.SIGWINCH": "syscall", - "syscall.SIGXCPU": "syscall", - "syscall.SIGXFSZ": "syscall", - "syscall.SIOCADDDLCI": "syscall", - "syscall.SIOCADDMULTI": "syscall", - "syscall.SIOCADDRT": "syscall", - "syscall.SIOCAIFADDR": "syscall", - "syscall.SIOCAIFGROUP": "syscall", - "syscall.SIOCALIFADDR": "syscall", - "syscall.SIOCARPIPLL": "syscall", - "syscall.SIOCATMARK": "syscall", - "syscall.SIOCAUTOADDR": "syscall", - "syscall.SIOCAUTONETMASK": "syscall", - "syscall.SIOCBRDGADD": "syscall", - "syscall.SIOCBRDGADDS": "syscall", - "syscall.SIOCBRDGARL": "syscall", - "syscall.SIOCBRDGDADDR": "syscall", - "syscall.SIOCBRDGDEL": "syscall", - "syscall.SIOCBRDGDELS": "syscall", - "syscall.SIOCBRDGFLUSH": "syscall", - "syscall.SIOCBRDGFRL": "syscall", - "syscall.SIOCBRDGGCACHE": "syscall", - "syscall.SIOCBRDGGFD": "syscall", - "syscall.SIOCBRDGGHT": "syscall", - "syscall.SIOCBRDGGIFFLGS": "syscall", - "syscall.SIOCBRDGGMA": "syscall", - "syscall.SIOCBRDGGPARAM": "syscall", - "syscall.SIOCBRDGGPRI": "syscall", - "syscall.SIOCBRDGGRL": "syscall", - "syscall.SIOCBRDGGSIFS": "syscall", - "syscall.SIOCBRDGGTO": "syscall", - "syscall.SIOCBRDGIFS": "syscall", - "syscall.SIOCBRDGRTS": "syscall", - "syscall.SIOCBRDGSADDR": "syscall", - "syscall.SIOCBRDGSCACHE": "syscall", - "syscall.SIOCBRDGSFD": "syscall", - "syscall.SIOCBRDGSHT": "syscall", - "syscall.SIOCBRDGSIFCOST": "syscall", - "syscall.SIOCBRDGSIFFLGS": "syscall", - "syscall.SIOCBRDGSIFPRIO": "syscall", - "syscall.SIOCBRDGSMA": "syscall", - "syscall.SIOCBRDGSPRI": "syscall", - "syscall.SIOCBRDGSPROTO": "syscall", - "syscall.SIOCBRDGSTO": "syscall", - "syscall.SIOCBRDGSTXHC": "syscall", - "syscall.SIOCDARP": "syscall", - "syscall.SIOCDELDLCI": "syscall", - "syscall.SIOCDELMULTI": "syscall", - "syscall.SIOCDELRT": "syscall", - "syscall.SIOCDEVPRIVATE": "syscall", - "syscall.SIOCDIFADDR": "syscall", - "syscall.SIOCDIFGROUP": "syscall", - "syscall.SIOCDIFPHYADDR": "syscall", - "syscall.SIOCDLIFADDR": "syscall", - "syscall.SIOCDRARP": "syscall", - "syscall.SIOCGARP": "syscall", - "syscall.SIOCGDRVSPEC": "syscall", - "syscall.SIOCGETKALIVE": "syscall", - "syscall.SIOCGETLABEL": "syscall", - "syscall.SIOCGETPFLOW": "syscall", - "syscall.SIOCGETPFSYNC": "syscall", - "syscall.SIOCGETSGCNT": "syscall", - "syscall.SIOCGETVIFCNT": "syscall", - "syscall.SIOCGETVLAN": "syscall", - "syscall.SIOCGHIWAT": "syscall", - "syscall.SIOCGIFADDR": "syscall", - "syscall.SIOCGIFADDRPREF": "syscall", - "syscall.SIOCGIFALIAS": "syscall", - "syscall.SIOCGIFALTMTU": "syscall", - "syscall.SIOCGIFASYNCMAP": "syscall", - "syscall.SIOCGIFBOND": "syscall", - "syscall.SIOCGIFBR": "syscall", - "syscall.SIOCGIFBRDADDR": "syscall", - "syscall.SIOCGIFCAP": "syscall", - "syscall.SIOCGIFCONF": "syscall", - "syscall.SIOCGIFCOUNT": "syscall", - "syscall.SIOCGIFDATA": "syscall", - "syscall.SIOCGIFDESCR": "syscall", - "syscall.SIOCGIFDEVMTU": "syscall", - "syscall.SIOCGIFDLT": "syscall", - "syscall.SIOCGIFDSTADDR": "syscall", - "syscall.SIOCGIFENCAP": "syscall", - "syscall.SIOCGIFFIB": "syscall", - "syscall.SIOCGIFFLAGS": "syscall", - "syscall.SIOCGIFGATTR": "syscall", - "syscall.SIOCGIFGENERIC": "syscall", - "syscall.SIOCGIFGMEMB": "syscall", - "syscall.SIOCGIFGROUP": "syscall", - "syscall.SIOCGIFHARDMTU": "syscall", - "syscall.SIOCGIFHWADDR": "syscall", - "syscall.SIOCGIFINDEX": "syscall", - "syscall.SIOCGIFKPI": "syscall", - "syscall.SIOCGIFMAC": "syscall", - "syscall.SIOCGIFMAP": "syscall", - "syscall.SIOCGIFMEDIA": "syscall", - "syscall.SIOCGIFMEM": "syscall", - "syscall.SIOCGIFMETRIC": "syscall", - "syscall.SIOCGIFMTU": "syscall", - "syscall.SIOCGIFNAME": "syscall", - "syscall.SIOCGIFNETMASK": "syscall", - "syscall.SIOCGIFPDSTADDR": "syscall", - "syscall.SIOCGIFPFLAGS": "syscall", - "syscall.SIOCGIFPHYS": "syscall", - "syscall.SIOCGIFPRIORITY": "syscall", - "syscall.SIOCGIFPSRCADDR": "syscall", - "syscall.SIOCGIFRDOMAIN": "syscall", - "syscall.SIOCGIFRTLABEL": "syscall", - "syscall.SIOCGIFSLAVE": "syscall", - "syscall.SIOCGIFSTATUS": "syscall", - "syscall.SIOCGIFTIMESLOT": "syscall", - "syscall.SIOCGIFTXQLEN": "syscall", - "syscall.SIOCGIFVLAN": "syscall", - "syscall.SIOCGIFWAKEFLAGS": "syscall", - "syscall.SIOCGIFXFLAGS": "syscall", - "syscall.SIOCGLIFADDR": "syscall", - "syscall.SIOCGLIFPHYADDR": "syscall", - "syscall.SIOCGLIFPHYRTABLE": "syscall", - "syscall.SIOCGLIFPHYTTL": "syscall", - "syscall.SIOCGLINKSTR": "syscall", - "syscall.SIOCGLOWAT": "syscall", - "syscall.SIOCGPGRP": "syscall", - "syscall.SIOCGPRIVATE_0": "syscall", - "syscall.SIOCGPRIVATE_1": "syscall", - "syscall.SIOCGRARP": "syscall", - "syscall.SIOCGSPPPPARAMS": "syscall", - "syscall.SIOCGSTAMP": "syscall", - "syscall.SIOCGSTAMPNS": "syscall", - "syscall.SIOCGVH": "syscall", - "syscall.SIOCGVNETID": "syscall", - "syscall.SIOCIFCREATE": "syscall", - "syscall.SIOCIFCREATE2": "syscall", - "syscall.SIOCIFDESTROY": "syscall", - "syscall.SIOCIFGCLONERS": "syscall", - "syscall.SIOCINITIFADDR": "syscall", - "syscall.SIOCPROTOPRIVATE": "syscall", - "syscall.SIOCRSLVMULTI": "syscall", - "syscall.SIOCRTMSG": "syscall", - "syscall.SIOCSARP": "syscall", - "syscall.SIOCSDRVSPEC": "syscall", - "syscall.SIOCSETKALIVE": "syscall", - "syscall.SIOCSETLABEL": "syscall", - "syscall.SIOCSETPFLOW": "syscall", - "syscall.SIOCSETPFSYNC": "syscall", - "syscall.SIOCSETVLAN": "syscall", - "syscall.SIOCSHIWAT": "syscall", - "syscall.SIOCSIFADDR": "syscall", - "syscall.SIOCSIFADDRPREF": "syscall", - "syscall.SIOCSIFALTMTU": "syscall", - "syscall.SIOCSIFASYNCMAP": "syscall", - "syscall.SIOCSIFBOND": "syscall", - "syscall.SIOCSIFBR": "syscall", - "syscall.SIOCSIFBRDADDR": "syscall", - "syscall.SIOCSIFCAP": "syscall", - "syscall.SIOCSIFDESCR": "syscall", - "syscall.SIOCSIFDSTADDR": "syscall", - "syscall.SIOCSIFENCAP": "syscall", - "syscall.SIOCSIFFIB": "syscall", - "syscall.SIOCSIFFLAGS": "syscall", - "syscall.SIOCSIFGATTR": "syscall", - "syscall.SIOCSIFGENERIC": "syscall", - "syscall.SIOCSIFHWADDR": "syscall", - "syscall.SIOCSIFHWBROADCAST": "syscall", - "syscall.SIOCSIFKPI": "syscall", - "syscall.SIOCSIFLINK": "syscall", - "syscall.SIOCSIFLLADDR": "syscall", - "syscall.SIOCSIFMAC": "syscall", - "syscall.SIOCSIFMAP": "syscall", - "syscall.SIOCSIFMEDIA": "syscall", - "syscall.SIOCSIFMEM": "syscall", - "syscall.SIOCSIFMETRIC": "syscall", - "syscall.SIOCSIFMTU": "syscall", - "syscall.SIOCSIFNAME": "syscall", - "syscall.SIOCSIFNETMASK": "syscall", - "syscall.SIOCSIFPFLAGS": "syscall", - "syscall.SIOCSIFPHYADDR": "syscall", - "syscall.SIOCSIFPHYS": "syscall", - "syscall.SIOCSIFPRIORITY": "syscall", - "syscall.SIOCSIFRDOMAIN": "syscall", - "syscall.SIOCSIFRTLABEL": "syscall", - "syscall.SIOCSIFRVNET": "syscall", - "syscall.SIOCSIFSLAVE": "syscall", - "syscall.SIOCSIFTIMESLOT": "syscall", - "syscall.SIOCSIFTXQLEN": "syscall", - "syscall.SIOCSIFVLAN": "syscall", - "syscall.SIOCSIFVNET": "syscall", - "syscall.SIOCSIFXFLAGS": "syscall", - "syscall.SIOCSLIFPHYADDR": "syscall", - "syscall.SIOCSLIFPHYRTABLE": "syscall", - "syscall.SIOCSLIFPHYTTL": "syscall", - "syscall.SIOCSLINKSTR": "syscall", - "syscall.SIOCSLOWAT": "syscall", - "syscall.SIOCSPGRP": "syscall", - "syscall.SIOCSRARP": "syscall", - "syscall.SIOCSSPPPPARAMS": "syscall", - "syscall.SIOCSVH": "syscall", - "syscall.SIOCSVNETID": "syscall", - "syscall.SIOCZIFDATA": "syscall", - "syscall.SIO_GET_EXTENSION_FUNCTION_POINTER": "syscall", - "syscall.SIO_GET_INTERFACE_LIST": "syscall", - "syscall.SIO_KEEPALIVE_VALS": "syscall", - "syscall.SIO_UDP_CONNRESET": "syscall", - "syscall.SOCK_CLOEXEC": "syscall", - "syscall.SOCK_DCCP": "syscall", - "syscall.SOCK_DGRAM": "syscall", - "syscall.SOCK_FLAGS_MASK": "syscall", - "syscall.SOCK_MAXADDRLEN": "syscall", - "syscall.SOCK_NONBLOCK": "syscall", - "syscall.SOCK_NOSIGPIPE": "syscall", - "syscall.SOCK_PACKET": "syscall", - "syscall.SOCK_RAW": "syscall", - "syscall.SOCK_RDM": "syscall", - "syscall.SOCK_SEQPACKET": "syscall", - "syscall.SOCK_STREAM": "syscall", - "syscall.SOL_AAL": "syscall", - "syscall.SOL_ATM": "syscall", - "syscall.SOL_DECNET": "syscall", - "syscall.SOL_ICMPV6": "syscall", - "syscall.SOL_IP": "syscall", - "syscall.SOL_IPV6": "syscall", - "syscall.SOL_IRDA": "syscall", - "syscall.SOL_PACKET": "syscall", - "syscall.SOL_RAW": "syscall", - "syscall.SOL_SOCKET": "syscall", - "syscall.SOL_TCP": "syscall", - "syscall.SOL_X25": "syscall", - "syscall.SOMAXCONN": "syscall", - "syscall.SO_ACCEPTCONN": "syscall", - "syscall.SO_ACCEPTFILTER": "syscall", - "syscall.SO_ATTACH_FILTER": "syscall", - "syscall.SO_BINDANY": "syscall", - "syscall.SO_BINDTODEVICE": "syscall", - "syscall.SO_BINTIME": "syscall", - "syscall.SO_BROADCAST": "syscall", - "syscall.SO_BSDCOMPAT": "syscall", - "syscall.SO_DEBUG": "syscall", - "syscall.SO_DETACH_FILTER": "syscall", - "syscall.SO_DOMAIN": "syscall", - "syscall.SO_DONTROUTE": "syscall", - "syscall.SO_DONTTRUNC": "syscall", - "syscall.SO_ERROR": "syscall", - "syscall.SO_KEEPALIVE": "syscall", - "syscall.SO_LABEL": "syscall", - "syscall.SO_LINGER": "syscall", - "syscall.SO_LINGER_SEC": "syscall", - "syscall.SO_LISTENINCQLEN": "syscall", - "syscall.SO_LISTENQLEN": "syscall", - "syscall.SO_LISTENQLIMIT": "syscall", - "syscall.SO_MARK": "syscall", - "syscall.SO_NETPROC": "syscall", - "syscall.SO_NKE": "syscall", - "syscall.SO_NOADDRERR": "syscall", - "syscall.SO_NOHEADER": "syscall", - "syscall.SO_NOSIGPIPE": "syscall", - "syscall.SO_NOTIFYCONFLICT": "syscall", - "syscall.SO_NO_CHECK": "syscall", - "syscall.SO_NO_DDP": "syscall", - "syscall.SO_NO_OFFLOAD": "syscall", - "syscall.SO_NP_EXTENSIONS": "syscall", - "syscall.SO_NREAD": "syscall", - "syscall.SO_NWRITE": "syscall", - "syscall.SO_OOBINLINE": "syscall", - "syscall.SO_OVERFLOWED": "syscall", - "syscall.SO_PASSCRED": "syscall", - "syscall.SO_PASSSEC": "syscall", - "syscall.SO_PEERCRED": "syscall", - "syscall.SO_PEERLABEL": "syscall", - "syscall.SO_PEERNAME": "syscall", - "syscall.SO_PEERSEC": "syscall", - "syscall.SO_PRIORITY": "syscall", - "syscall.SO_PROTOCOL": "syscall", - "syscall.SO_PROTOTYPE": "syscall", - "syscall.SO_RANDOMPORT": "syscall", - "syscall.SO_RCVBUF": "syscall", - "syscall.SO_RCVBUFFORCE": "syscall", - "syscall.SO_RCVLOWAT": "syscall", - "syscall.SO_RCVTIMEO": "syscall", - "syscall.SO_RESTRICTIONS": "syscall", - "syscall.SO_RESTRICT_DENYIN": "syscall", - "syscall.SO_RESTRICT_DENYOUT": "syscall", - "syscall.SO_RESTRICT_DENYSET": "syscall", - "syscall.SO_REUSEADDR": "syscall", - "syscall.SO_REUSEPORT": "syscall", - "syscall.SO_REUSESHAREUID": "syscall", - "syscall.SO_RTABLE": "syscall", - "syscall.SO_RXQ_OVFL": "syscall", - "syscall.SO_SECURITY_AUTHENTICATION": "syscall", - "syscall.SO_SECURITY_ENCRYPTION_NETWORK": "syscall", - "syscall.SO_SECURITY_ENCRYPTION_TRANSPORT": "syscall", - "syscall.SO_SETFIB": "syscall", - "syscall.SO_SNDBUF": "syscall", - "syscall.SO_SNDBUFFORCE": "syscall", - "syscall.SO_SNDLOWAT": "syscall", - "syscall.SO_SNDTIMEO": "syscall", - "syscall.SO_SPLICE": "syscall", - "syscall.SO_TIMESTAMP": "syscall", - "syscall.SO_TIMESTAMPING": "syscall", - "syscall.SO_TIMESTAMPNS": "syscall", - "syscall.SO_TIMESTAMP_MONOTONIC": "syscall", - "syscall.SO_TYPE": "syscall", - "syscall.SO_UPCALLCLOSEWAIT": "syscall", - "syscall.SO_UPDATE_ACCEPT_CONTEXT": "syscall", - "syscall.SO_UPDATE_CONNECT_CONTEXT": "syscall", - "syscall.SO_USELOOPBACK": "syscall", - "syscall.SO_USER_COOKIE": "syscall", - "syscall.SO_VENDOR": "syscall", - "syscall.SO_WANTMORE": "syscall", - "syscall.SO_WANTOOBFLAG": "syscall", - "syscall.SSLExtraCertChainPolicyPara": "syscall", - "syscall.STANDARD_RIGHTS_ALL": "syscall", - "syscall.STANDARD_RIGHTS_EXECUTE": "syscall", - "syscall.STANDARD_RIGHTS_READ": "syscall", - "syscall.STANDARD_RIGHTS_REQUIRED": "syscall", - "syscall.STANDARD_RIGHTS_WRITE": "syscall", - "syscall.STARTF_USESHOWWINDOW": "syscall", - "syscall.STARTF_USESTDHANDLES": "syscall", - "syscall.STD_ERROR_HANDLE": "syscall", - "syscall.STD_INPUT_HANDLE": "syscall", - "syscall.STD_OUTPUT_HANDLE": "syscall", - "syscall.SUBLANG_ENGLISH_US": "syscall", - "syscall.SW_FORCEMINIMIZE": "syscall", - "syscall.SW_HIDE": "syscall", - "syscall.SW_MAXIMIZE": "syscall", - "syscall.SW_MINIMIZE": "syscall", - "syscall.SW_NORMAL": "syscall", - "syscall.SW_RESTORE": "syscall", - "syscall.SW_SHOW": "syscall", - "syscall.SW_SHOWDEFAULT": "syscall", - "syscall.SW_SHOWMAXIMIZED": "syscall", - "syscall.SW_SHOWMINIMIZED": "syscall", - "syscall.SW_SHOWMINNOACTIVE": "syscall", - "syscall.SW_SHOWNA": "syscall", - "syscall.SW_SHOWNOACTIVATE": "syscall", - "syscall.SW_SHOWNORMAL": "syscall", - "syscall.SYMBOLIC_LINK_FLAG_DIRECTORY": "syscall", - "syscall.SYNCHRONIZE": "syscall", - "syscall.SYSCTL_VERSION": "syscall", - "syscall.SYSCTL_VERS_0": "syscall", - "syscall.SYSCTL_VERS_1": "syscall", - "syscall.SYSCTL_VERS_MASK": "syscall", - "syscall.SYS_ABORT2": "syscall", - "syscall.SYS_ACCEPT": "syscall", - "syscall.SYS_ACCEPT4": "syscall", - "syscall.SYS_ACCEPT_NOCANCEL": "syscall", - "syscall.SYS_ACCESS": "syscall", - "syscall.SYS_ACCESS_EXTENDED": "syscall", - "syscall.SYS_ACCT": "syscall", - "syscall.SYS_ADD_KEY": "syscall", - "syscall.SYS_ADD_PROFIL": "syscall", - "syscall.SYS_ADJFREQ": "syscall", - "syscall.SYS_ADJTIME": "syscall", - "syscall.SYS_ADJTIMEX": "syscall", - "syscall.SYS_AFS_SYSCALL": "syscall", - "syscall.SYS_AIO_CANCEL": "syscall", - "syscall.SYS_AIO_ERROR": "syscall", - "syscall.SYS_AIO_FSYNC": "syscall", - "syscall.SYS_AIO_READ": "syscall", - "syscall.SYS_AIO_RETURN": "syscall", - "syscall.SYS_AIO_SUSPEND": "syscall", - "syscall.SYS_AIO_SUSPEND_NOCANCEL": "syscall", - "syscall.SYS_AIO_WRITE": "syscall", - "syscall.SYS_ALARM": "syscall", - "syscall.SYS_ARCH_PRCTL": "syscall", - "syscall.SYS_ARM_FADVISE64_64": "syscall", - "syscall.SYS_ARM_SYNC_FILE_RANGE": "syscall", - "syscall.SYS_ATGETMSG": "syscall", - "syscall.SYS_ATPGETREQ": "syscall", - "syscall.SYS_ATPGETRSP": "syscall", - "syscall.SYS_ATPSNDREQ": "syscall", - "syscall.SYS_ATPSNDRSP": "syscall", - "syscall.SYS_ATPUTMSG": "syscall", - "syscall.SYS_ATSOCKET": "syscall", - "syscall.SYS_AUDIT": "syscall", - "syscall.SYS_AUDITCTL": "syscall", - "syscall.SYS_AUDITON": "syscall", - "syscall.SYS_AUDIT_SESSION_JOIN": "syscall", - "syscall.SYS_AUDIT_SESSION_PORT": "syscall", - "syscall.SYS_AUDIT_SESSION_SELF": "syscall", - "syscall.SYS_BDFLUSH": "syscall", - "syscall.SYS_BIND": "syscall", - "syscall.SYS_BINDAT": "syscall", - "syscall.SYS_BREAK": "syscall", - "syscall.SYS_BRK": "syscall", - "syscall.SYS_BSDTHREAD_CREATE": "syscall", - "syscall.SYS_BSDTHREAD_REGISTER": "syscall", - "syscall.SYS_BSDTHREAD_TERMINATE": "syscall", - "syscall.SYS_CAPGET": "syscall", - "syscall.SYS_CAPSET": "syscall", - "syscall.SYS_CAP_ENTER": "syscall", - "syscall.SYS_CAP_FCNTLS_GET": "syscall", - "syscall.SYS_CAP_FCNTLS_LIMIT": "syscall", - "syscall.SYS_CAP_GETMODE": "syscall", - "syscall.SYS_CAP_GETRIGHTS": "syscall", - "syscall.SYS_CAP_IOCTLS_GET": "syscall", - "syscall.SYS_CAP_IOCTLS_LIMIT": "syscall", - "syscall.SYS_CAP_NEW": "syscall", - "syscall.SYS_CAP_RIGHTS_GET": "syscall", - "syscall.SYS_CAP_RIGHTS_LIMIT": "syscall", - "syscall.SYS_CHDIR": "syscall", - "syscall.SYS_CHFLAGS": "syscall", - "syscall.SYS_CHFLAGSAT": "syscall", - "syscall.SYS_CHMOD": "syscall", - "syscall.SYS_CHMOD_EXTENDED": "syscall", - "syscall.SYS_CHOWN": "syscall", - "syscall.SYS_CHOWN32": "syscall", - "syscall.SYS_CHROOT": "syscall", - "syscall.SYS_CHUD": "syscall", - "syscall.SYS_CLOCK_ADJTIME": "syscall", - "syscall.SYS_CLOCK_GETCPUCLOCKID2": "syscall", - "syscall.SYS_CLOCK_GETRES": "syscall", - "syscall.SYS_CLOCK_GETTIME": "syscall", - "syscall.SYS_CLOCK_NANOSLEEP": "syscall", - "syscall.SYS_CLOCK_SETTIME": "syscall", - "syscall.SYS_CLONE": "syscall", - "syscall.SYS_CLOSE": "syscall", - "syscall.SYS_CLOSEFROM": "syscall", - "syscall.SYS_CLOSE_NOCANCEL": "syscall", - "syscall.SYS_CONNECT": "syscall", - "syscall.SYS_CONNECTAT": "syscall", - "syscall.SYS_CONNECT_NOCANCEL": "syscall", - "syscall.SYS_COPYFILE": "syscall", - "syscall.SYS_CPUSET": "syscall", - "syscall.SYS_CPUSET_GETAFFINITY": "syscall", - "syscall.SYS_CPUSET_GETID": "syscall", - "syscall.SYS_CPUSET_SETAFFINITY": "syscall", - "syscall.SYS_CPUSET_SETID": "syscall", - "syscall.SYS_CREAT": "syscall", - "syscall.SYS_CREATE_MODULE": "syscall", - "syscall.SYS_CSOPS": "syscall", - "syscall.SYS_DELETE": "syscall", - "syscall.SYS_DELETE_MODULE": "syscall", - "syscall.SYS_DUP": "syscall", - "syscall.SYS_DUP2": "syscall", - "syscall.SYS_DUP3": "syscall", - "syscall.SYS_EACCESS": "syscall", - "syscall.SYS_EPOLL_CREATE": "syscall", - "syscall.SYS_EPOLL_CREATE1": "syscall", - "syscall.SYS_EPOLL_CTL": "syscall", - "syscall.SYS_EPOLL_CTL_OLD": "syscall", - "syscall.SYS_EPOLL_PWAIT": "syscall", - "syscall.SYS_EPOLL_WAIT": "syscall", - "syscall.SYS_EPOLL_WAIT_OLD": "syscall", - "syscall.SYS_EVENTFD": "syscall", - "syscall.SYS_EVENTFD2": "syscall", - "syscall.SYS_EXCHANGEDATA": "syscall", - "syscall.SYS_EXECVE": "syscall", - "syscall.SYS_EXIT": "syscall", - "syscall.SYS_EXIT_GROUP": "syscall", - "syscall.SYS_EXTATTRCTL": "syscall", - "syscall.SYS_EXTATTR_DELETE_FD": "syscall", - "syscall.SYS_EXTATTR_DELETE_FILE": "syscall", - "syscall.SYS_EXTATTR_DELETE_LINK": "syscall", - "syscall.SYS_EXTATTR_GET_FD": "syscall", - "syscall.SYS_EXTATTR_GET_FILE": "syscall", - "syscall.SYS_EXTATTR_GET_LINK": "syscall", - "syscall.SYS_EXTATTR_LIST_FD": "syscall", - "syscall.SYS_EXTATTR_LIST_FILE": "syscall", - "syscall.SYS_EXTATTR_LIST_LINK": "syscall", - "syscall.SYS_EXTATTR_SET_FD": "syscall", - "syscall.SYS_EXTATTR_SET_FILE": "syscall", - "syscall.SYS_EXTATTR_SET_LINK": "syscall", - "syscall.SYS_FACCESSAT": "syscall", - "syscall.SYS_FADVISE64": "syscall", - "syscall.SYS_FADVISE64_64": "syscall", - "syscall.SYS_FALLOCATE": "syscall", - "syscall.SYS_FANOTIFY_INIT": "syscall", - "syscall.SYS_FANOTIFY_MARK": "syscall", - "syscall.SYS_FCHDIR": "syscall", - "syscall.SYS_FCHFLAGS": "syscall", - "syscall.SYS_FCHMOD": "syscall", - "syscall.SYS_FCHMODAT": "syscall", - "syscall.SYS_FCHMOD_EXTENDED": "syscall", - "syscall.SYS_FCHOWN": "syscall", - "syscall.SYS_FCHOWN32": "syscall", - "syscall.SYS_FCHOWNAT": "syscall", - "syscall.SYS_FCHROOT": "syscall", - "syscall.SYS_FCNTL": "syscall", - "syscall.SYS_FCNTL64": "syscall", - "syscall.SYS_FCNTL_NOCANCEL": "syscall", - "syscall.SYS_FDATASYNC": "syscall", - "syscall.SYS_FEXECVE": "syscall", - "syscall.SYS_FFCLOCK_GETCOUNTER": "syscall", - "syscall.SYS_FFCLOCK_GETESTIMATE": "syscall", - "syscall.SYS_FFCLOCK_SETESTIMATE": "syscall", - "syscall.SYS_FFSCTL": "syscall", - "syscall.SYS_FGETATTRLIST": "syscall", - "syscall.SYS_FGETXATTR": "syscall", - "syscall.SYS_FHOPEN": "syscall", - "syscall.SYS_FHSTAT": "syscall", - "syscall.SYS_FHSTATFS": "syscall", - "syscall.SYS_FILEPORT_MAKEFD": "syscall", - "syscall.SYS_FILEPORT_MAKEPORT": "syscall", - "syscall.SYS_FKTRACE": "syscall", - "syscall.SYS_FLISTXATTR": "syscall", - "syscall.SYS_FLOCK": "syscall", - "syscall.SYS_FORK": "syscall", - "syscall.SYS_FPATHCONF": "syscall", - "syscall.SYS_FREEBSD6_FTRUNCATE": "syscall", - "syscall.SYS_FREEBSD6_LSEEK": "syscall", - "syscall.SYS_FREEBSD6_MMAP": "syscall", - "syscall.SYS_FREEBSD6_PREAD": "syscall", - "syscall.SYS_FREEBSD6_PWRITE": "syscall", - "syscall.SYS_FREEBSD6_TRUNCATE": "syscall", - "syscall.SYS_FREMOVEXATTR": "syscall", - "syscall.SYS_FSCTL": "syscall", - "syscall.SYS_FSETATTRLIST": "syscall", - "syscall.SYS_FSETXATTR": "syscall", - "syscall.SYS_FSGETPATH": "syscall", - "syscall.SYS_FSTAT": "syscall", - "syscall.SYS_FSTAT64": "syscall", - "syscall.SYS_FSTAT64_EXTENDED": "syscall", - "syscall.SYS_FSTATAT": "syscall", - "syscall.SYS_FSTATAT64": "syscall", - "syscall.SYS_FSTATFS": "syscall", - "syscall.SYS_FSTATFS64": "syscall", - "syscall.SYS_FSTATV": "syscall", - "syscall.SYS_FSTATVFS1": "syscall", - "syscall.SYS_FSTAT_EXTENDED": "syscall", - "syscall.SYS_FSYNC": "syscall", - "syscall.SYS_FSYNC_NOCANCEL": "syscall", - "syscall.SYS_FSYNC_RANGE": "syscall", - "syscall.SYS_FTIME": "syscall", - "syscall.SYS_FTRUNCATE": "syscall", - "syscall.SYS_FTRUNCATE64": "syscall", - "syscall.SYS_FUTEX": "syscall", - "syscall.SYS_FUTIMENS": "syscall", - "syscall.SYS_FUTIMES": "syscall", - "syscall.SYS_FUTIMESAT": "syscall", - "syscall.SYS_GETATTRLIST": "syscall", - "syscall.SYS_GETAUDIT": "syscall", - "syscall.SYS_GETAUDIT_ADDR": "syscall", - "syscall.SYS_GETAUID": "syscall", - "syscall.SYS_GETCONTEXT": "syscall", - "syscall.SYS_GETCPU": "syscall", - "syscall.SYS_GETCWD": "syscall", - "syscall.SYS_GETDENTS": "syscall", - "syscall.SYS_GETDENTS64": "syscall", - "syscall.SYS_GETDIRENTRIES": "syscall", - "syscall.SYS_GETDIRENTRIES64": "syscall", - "syscall.SYS_GETDIRENTRIESATTR": "syscall", - "syscall.SYS_GETDTABLECOUNT": "syscall", - "syscall.SYS_GETDTABLESIZE": "syscall", - "syscall.SYS_GETEGID": "syscall", - "syscall.SYS_GETEGID32": "syscall", - "syscall.SYS_GETEUID": "syscall", - "syscall.SYS_GETEUID32": "syscall", - "syscall.SYS_GETFH": "syscall", - "syscall.SYS_GETFSSTAT": "syscall", - "syscall.SYS_GETFSSTAT64": "syscall", - "syscall.SYS_GETGID": "syscall", - "syscall.SYS_GETGID32": "syscall", - "syscall.SYS_GETGROUPS": "syscall", - "syscall.SYS_GETGROUPS32": "syscall", - "syscall.SYS_GETHOSTUUID": "syscall", - "syscall.SYS_GETITIMER": "syscall", - "syscall.SYS_GETLCID": "syscall", - "syscall.SYS_GETLOGIN": "syscall", - "syscall.SYS_GETLOGINCLASS": "syscall", - "syscall.SYS_GETPEERNAME": "syscall", - "syscall.SYS_GETPGID": "syscall", - "syscall.SYS_GETPGRP": "syscall", - "syscall.SYS_GETPID": "syscall", - "syscall.SYS_GETPMSG": "syscall", - "syscall.SYS_GETPPID": "syscall", - "syscall.SYS_GETPRIORITY": "syscall", - "syscall.SYS_GETRESGID": "syscall", - "syscall.SYS_GETRESGID32": "syscall", - "syscall.SYS_GETRESUID": "syscall", - "syscall.SYS_GETRESUID32": "syscall", - "syscall.SYS_GETRLIMIT": "syscall", - "syscall.SYS_GETRTABLE": "syscall", - "syscall.SYS_GETRUSAGE": "syscall", - "syscall.SYS_GETSGROUPS": "syscall", - "syscall.SYS_GETSID": "syscall", - "syscall.SYS_GETSOCKNAME": "syscall", - "syscall.SYS_GETSOCKOPT": "syscall", - "syscall.SYS_GETTHRID": "syscall", - "syscall.SYS_GETTID": "syscall", - "syscall.SYS_GETTIMEOFDAY": "syscall", - "syscall.SYS_GETUID": "syscall", - "syscall.SYS_GETUID32": "syscall", - "syscall.SYS_GETVFSSTAT": "syscall", - "syscall.SYS_GETWGROUPS": "syscall", - "syscall.SYS_GETXATTR": "syscall", - "syscall.SYS_GET_KERNEL_SYMS": "syscall", - "syscall.SYS_GET_MEMPOLICY": "syscall", - "syscall.SYS_GET_ROBUST_LIST": "syscall", - "syscall.SYS_GET_THREAD_AREA": "syscall", - "syscall.SYS_GTTY": "syscall", - "syscall.SYS_IDENTITYSVC": "syscall", - "syscall.SYS_IDLE": "syscall", - "syscall.SYS_INITGROUPS": "syscall", - "syscall.SYS_INIT_MODULE": "syscall", - "syscall.SYS_INOTIFY_ADD_WATCH": "syscall", - "syscall.SYS_INOTIFY_INIT": "syscall", - "syscall.SYS_INOTIFY_INIT1": "syscall", - "syscall.SYS_INOTIFY_RM_WATCH": "syscall", - "syscall.SYS_IOCTL": "syscall", - "syscall.SYS_IOPERM": "syscall", - "syscall.SYS_IOPL": "syscall", - "syscall.SYS_IOPOLICYSYS": "syscall", - "syscall.SYS_IOPRIO_GET": "syscall", - "syscall.SYS_IOPRIO_SET": "syscall", - "syscall.SYS_IO_CANCEL": "syscall", - "syscall.SYS_IO_DESTROY": "syscall", - "syscall.SYS_IO_GETEVENTS": "syscall", - "syscall.SYS_IO_SETUP": "syscall", - "syscall.SYS_IO_SUBMIT": "syscall", - "syscall.SYS_IPC": "syscall", - "syscall.SYS_ISSETUGID": "syscall", - "syscall.SYS_JAIL": "syscall", - "syscall.SYS_JAIL_ATTACH": "syscall", - "syscall.SYS_JAIL_GET": "syscall", - "syscall.SYS_JAIL_REMOVE": "syscall", - "syscall.SYS_JAIL_SET": "syscall", - "syscall.SYS_KDEBUG_TRACE": "syscall", - "syscall.SYS_KENV": "syscall", - "syscall.SYS_KEVENT": "syscall", - "syscall.SYS_KEVENT64": "syscall", - "syscall.SYS_KEXEC_LOAD": "syscall", - "syscall.SYS_KEYCTL": "syscall", - "syscall.SYS_KILL": "syscall", - "syscall.SYS_KLDFIND": "syscall", - "syscall.SYS_KLDFIRSTMOD": "syscall", - "syscall.SYS_KLDLOAD": "syscall", - "syscall.SYS_KLDNEXT": "syscall", - "syscall.SYS_KLDSTAT": "syscall", - "syscall.SYS_KLDSYM": "syscall", - "syscall.SYS_KLDUNLOAD": "syscall", - "syscall.SYS_KLDUNLOADF": "syscall", - "syscall.SYS_KQUEUE": "syscall", - "syscall.SYS_KQUEUE1": "syscall", - "syscall.SYS_KTIMER_CREATE": "syscall", - "syscall.SYS_KTIMER_DELETE": "syscall", - "syscall.SYS_KTIMER_GETOVERRUN": "syscall", - "syscall.SYS_KTIMER_GETTIME": "syscall", - "syscall.SYS_KTIMER_SETTIME": "syscall", - "syscall.SYS_KTRACE": "syscall", - "syscall.SYS_LCHFLAGS": "syscall", - "syscall.SYS_LCHMOD": "syscall", - "syscall.SYS_LCHOWN": "syscall", - "syscall.SYS_LCHOWN32": "syscall", - "syscall.SYS_LGETFH": "syscall", - "syscall.SYS_LGETXATTR": "syscall", - "syscall.SYS_LINK": "syscall", - "syscall.SYS_LINKAT": "syscall", - "syscall.SYS_LIO_LISTIO": "syscall", - "syscall.SYS_LISTEN": "syscall", - "syscall.SYS_LISTXATTR": "syscall", - "syscall.SYS_LLISTXATTR": "syscall", - "syscall.SYS_LOCK": "syscall", - "syscall.SYS_LOOKUP_DCOOKIE": "syscall", - "syscall.SYS_LPATHCONF": "syscall", - "syscall.SYS_LREMOVEXATTR": "syscall", - "syscall.SYS_LSEEK": "syscall", - "syscall.SYS_LSETXATTR": "syscall", - "syscall.SYS_LSTAT": "syscall", - "syscall.SYS_LSTAT64": "syscall", - "syscall.SYS_LSTAT64_EXTENDED": "syscall", - "syscall.SYS_LSTATV": "syscall", - "syscall.SYS_LSTAT_EXTENDED": "syscall", - "syscall.SYS_LUTIMES": "syscall", - "syscall.SYS_MAC_SYSCALL": "syscall", - "syscall.SYS_MADVISE": "syscall", - "syscall.SYS_MADVISE1": "syscall", - "syscall.SYS_MAXSYSCALL": "syscall", - "syscall.SYS_MBIND": "syscall", - "syscall.SYS_MIGRATE_PAGES": "syscall", - "syscall.SYS_MINCORE": "syscall", - "syscall.SYS_MINHERIT": "syscall", - "syscall.SYS_MKCOMPLEX": "syscall", - "syscall.SYS_MKDIR": "syscall", - "syscall.SYS_MKDIRAT": "syscall", - "syscall.SYS_MKDIR_EXTENDED": "syscall", - "syscall.SYS_MKFIFO": "syscall", - "syscall.SYS_MKFIFOAT": "syscall", - "syscall.SYS_MKFIFO_EXTENDED": "syscall", - "syscall.SYS_MKNOD": "syscall", - "syscall.SYS_MKNODAT": "syscall", - "syscall.SYS_MLOCK": "syscall", - "syscall.SYS_MLOCKALL": "syscall", - "syscall.SYS_MMAP": "syscall", - "syscall.SYS_MMAP2": "syscall", - "syscall.SYS_MODCTL": "syscall", - "syscall.SYS_MODFIND": "syscall", - "syscall.SYS_MODFNEXT": "syscall", - "syscall.SYS_MODIFY_LDT": "syscall", - "syscall.SYS_MODNEXT": "syscall", - "syscall.SYS_MODSTAT": "syscall", - "syscall.SYS_MODWATCH": "syscall", - "syscall.SYS_MOUNT": "syscall", - "syscall.SYS_MOVE_PAGES": "syscall", - "syscall.SYS_MPROTECT": "syscall", - "syscall.SYS_MPX": "syscall", - "syscall.SYS_MQUERY": "syscall", - "syscall.SYS_MQ_GETSETATTR": "syscall", - "syscall.SYS_MQ_NOTIFY": "syscall", - "syscall.SYS_MQ_OPEN": "syscall", - "syscall.SYS_MQ_TIMEDRECEIVE": "syscall", - "syscall.SYS_MQ_TIMEDSEND": "syscall", - "syscall.SYS_MQ_UNLINK": "syscall", - "syscall.SYS_MREMAP": "syscall", - "syscall.SYS_MSGCTL": "syscall", - "syscall.SYS_MSGGET": "syscall", - "syscall.SYS_MSGRCV": "syscall", - "syscall.SYS_MSGRCV_NOCANCEL": "syscall", - "syscall.SYS_MSGSND": "syscall", - "syscall.SYS_MSGSND_NOCANCEL": "syscall", - "syscall.SYS_MSGSYS": "syscall", - "syscall.SYS_MSYNC": "syscall", - "syscall.SYS_MSYNC_NOCANCEL": "syscall", - "syscall.SYS_MUNLOCK": "syscall", - "syscall.SYS_MUNLOCKALL": "syscall", - "syscall.SYS_MUNMAP": "syscall", - "syscall.SYS_NAME_TO_HANDLE_AT": "syscall", - "syscall.SYS_NANOSLEEP": "syscall", - "syscall.SYS_NEWFSTATAT": "syscall", - "syscall.SYS_NFSCLNT": "syscall", - "syscall.SYS_NFSSERVCTL": "syscall", - "syscall.SYS_NFSSVC": "syscall", - "syscall.SYS_NFSTAT": "syscall", - "syscall.SYS_NICE": "syscall", - "syscall.SYS_NLSTAT": "syscall", - "syscall.SYS_NMOUNT": "syscall", - "syscall.SYS_NSTAT": "syscall", - "syscall.SYS_NTP_ADJTIME": "syscall", - "syscall.SYS_NTP_GETTIME": "syscall", - "syscall.SYS_OABI_SYSCALL_BASE": "syscall", - "syscall.SYS_OBREAK": "syscall", - "syscall.SYS_OLDFSTAT": "syscall", - "syscall.SYS_OLDLSTAT": "syscall", - "syscall.SYS_OLDOLDUNAME": "syscall", - "syscall.SYS_OLDSTAT": "syscall", - "syscall.SYS_OLDUNAME": "syscall", - "syscall.SYS_OPEN": "syscall", - "syscall.SYS_OPENAT": "syscall", - "syscall.SYS_OPENBSD_POLL": "syscall", - "syscall.SYS_OPEN_BY_HANDLE_AT": "syscall", - "syscall.SYS_OPEN_EXTENDED": "syscall", - "syscall.SYS_OPEN_NOCANCEL": "syscall", - "syscall.SYS_OVADVISE": "syscall", - "syscall.SYS_PACCEPT": "syscall", - "syscall.SYS_PATHCONF": "syscall", - "syscall.SYS_PAUSE": "syscall", - "syscall.SYS_PCICONFIG_IOBASE": "syscall", - "syscall.SYS_PCICONFIG_READ": "syscall", - "syscall.SYS_PCICONFIG_WRITE": "syscall", - "syscall.SYS_PDFORK": "syscall", - "syscall.SYS_PDGETPID": "syscall", - "syscall.SYS_PDKILL": "syscall", - "syscall.SYS_PERF_EVENT_OPEN": "syscall", - "syscall.SYS_PERSONALITY": "syscall", - "syscall.SYS_PID_HIBERNATE": "syscall", - "syscall.SYS_PID_RESUME": "syscall", - "syscall.SYS_PID_SHUTDOWN_SOCKETS": "syscall", - "syscall.SYS_PID_SUSPEND": "syscall", - "syscall.SYS_PIPE": "syscall", - "syscall.SYS_PIPE2": "syscall", - "syscall.SYS_PIVOT_ROOT": "syscall", - "syscall.SYS_PMC_CONTROL": "syscall", - "syscall.SYS_PMC_GET_INFO": "syscall", - "syscall.SYS_POLL": "syscall", - "syscall.SYS_POLLTS": "syscall", - "syscall.SYS_POLL_NOCANCEL": "syscall", - "syscall.SYS_POSIX_FADVISE": "syscall", - "syscall.SYS_POSIX_FALLOCATE": "syscall", - "syscall.SYS_POSIX_OPENPT": "syscall", - "syscall.SYS_POSIX_SPAWN": "syscall", - "syscall.SYS_PPOLL": "syscall", - "syscall.SYS_PRCTL": "syscall", - "syscall.SYS_PREAD": "syscall", - "syscall.SYS_PREAD64": "syscall", - "syscall.SYS_PREADV": "syscall", - "syscall.SYS_PREAD_NOCANCEL": "syscall", - "syscall.SYS_PRLIMIT64": "syscall", - "syscall.SYS_PROCCTL": "syscall", - "syscall.SYS_PROCESS_POLICY": "syscall", - "syscall.SYS_PROCESS_VM_READV": "syscall", - "syscall.SYS_PROCESS_VM_WRITEV": "syscall", - "syscall.SYS_PROC_INFO": "syscall", - "syscall.SYS_PROF": "syscall", - "syscall.SYS_PROFIL": "syscall", - "syscall.SYS_PSELECT": "syscall", - "syscall.SYS_PSELECT6": "syscall", - "syscall.SYS_PSET_ASSIGN": "syscall", - "syscall.SYS_PSET_CREATE": "syscall", - "syscall.SYS_PSET_DESTROY": "syscall", - "syscall.SYS_PSYNCH_CVBROAD": "syscall", - "syscall.SYS_PSYNCH_CVCLRPREPOST": "syscall", - "syscall.SYS_PSYNCH_CVSIGNAL": "syscall", - "syscall.SYS_PSYNCH_CVWAIT": "syscall", - "syscall.SYS_PSYNCH_MUTEXDROP": "syscall", - "syscall.SYS_PSYNCH_MUTEXWAIT": "syscall", - "syscall.SYS_PSYNCH_RW_DOWNGRADE": "syscall", - "syscall.SYS_PSYNCH_RW_LONGRDLOCK": "syscall", - "syscall.SYS_PSYNCH_RW_RDLOCK": "syscall", - "syscall.SYS_PSYNCH_RW_UNLOCK": "syscall", - "syscall.SYS_PSYNCH_RW_UNLOCK2": "syscall", - "syscall.SYS_PSYNCH_RW_UPGRADE": "syscall", - "syscall.SYS_PSYNCH_RW_WRLOCK": "syscall", - "syscall.SYS_PSYNCH_RW_YIELDWRLOCK": "syscall", - "syscall.SYS_PTRACE": "syscall", - "syscall.SYS_PUTPMSG": "syscall", - "syscall.SYS_PWRITE": "syscall", - "syscall.SYS_PWRITE64": "syscall", - "syscall.SYS_PWRITEV": "syscall", - "syscall.SYS_PWRITE_NOCANCEL": "syscall", - "syscall.SYS_QUERY_MODULE": "syscall", - "syscall.SYS_QUOTACTL": "syscall", - "syscall.SYS_RASCTL": "syscall", - "syscall.SYS_RCTL_ADD_RULE": "syscall", - "syscall.SYS_RCTL_GET_LIMITS": "syscall", - "syscall.SYS_RCTL_GET_RACCT": "syscall", - "syscall.SYS_RCTL_GET_RULES": "syscall", - "syscall.SYS_RCTL_REMOVE_RULE": "syscall", - "syscall.SYS_READ": "syscall", - "syscall.SYS_READAHEAD": "syscall", - "syscall.SYS_READDIR": "syscall", - "syscall.SYS_READLINK": "syscall", - "syscall.SYS_READLINKAT": "syscall", - "syscall.SYS_READV": "syscall", - "syscall.SYS_READV_NOCANCEL": "syscall", - "syscall.SYS_READ_NOCANCEL": "syscall", - "syscall.SYS_REBOOT": "syscall", - "syscall.SYS_RECV": "syscall", - "syscall.SYS_RECVFROM": "syscall", - "syscall.SYS_RECVFROM_NOCANCEL": "syscall", - "syscall.SYS_RECVMMSG": "syscall", - "syscall.SYS_RECVMSG": "syscall", - "syscall.SYS_RECVMSG_NOCANCEL": "syscall", - "syscall.SYS_REMAP_FILE_PAGES": "syscall", - "syscall.SYS_REMOVEXATTR": "syscall", - "syscall.SYS_RENAME": "syscall", - "syscall.SYS_RENAMEAT": "syscall", - "syscall.SYS_REQUEST_KEY": "syscall", - "syscall.SYS_RESTART_SYSCALL": "syscall", - "syscall.SYS_REVOKE": "syscall", - "syscall.SYS_RFORK": "syscall", - "syscall.SYS_RMDIR": "syscall", - "syscall.SYS_RTPRIO": "syscall", - "syscall.SYS_RTPRIO_THREAD": "syscall", - "syscall.SYS_RT_SIGACTION": "syscall", - "syscall.SYS_RT_SIGPENDING": "syscall", - "syscall.SYS_RT_SIGPROCMASK": "syscall", - "syscall.SYS_RT_SIGQUEUEINFO": "syscall", - "syscall.SYS_RT_SIGRETURN": "syscall", - "syscall.SYS_RT_SIGSUSPEND": "syscall", - "syscall.SYS_RT_SIGTIMEDWAIT": "syscall", - "syscall.SYS_RT_TGSIGQUEUEINFO": "syscall", - "syscall.SYS_SBRK": "syscall", - "syscall.SYS_SCHED_GETAFFINITY": "syscall", - "syscall.SYS_SCHED_GETPARAM": "syscall", - "syscall.SYS_SCHED_GETSCHEDULER": "syscall", - "syscall.SYS_SCHED_GET_PRIORITY_MAX": "syscall", - "syscall.SYS_SCHED_GET_PRIORITY_MIN": "syscall", - "syscall.SYS_SCHED_RR_GET_INTERVAL": "syscall", - "syscall.SYS_SCHED_SETAFFINITY": "syscall", - "syscall.SYS_SCHED_SETPARAM": "syscall", - "syscall.SYS_SCHED_SETSCHEDULER": "syscall", - "syscall.SYS_SCHED_YIELD": "syscall", - "syscall.SYS_SCTP_GENERIC_RECVMSG": "syscall", - "syscall.SYS_SCTP_GENERIC_SENDMSG": "syscall", - "syscall.SYS_SCTP_GENERIC_SENDMSG_IOV": "syscall", - "syscall.SYS_SCTP_PEELOFF": "syscall", - "syscall.SYS_SEARCHFS": "syscall", - "syscall.SYS_SECURITY": "syscall", - "syscall.SYS_SELECT": "syscall", - "syscall.SYS_SELECT_NOCANCEL": "syscall", - "syscall.SYS_SEMCONFIG": "syscall", - "syscall.SYS_SEMCTL": "syscall", - "syscall.SYS_SEMGET": "syscall", - "syscall.SYS_SEMOP": "syscall", - "syscall.SYS_SEMSYS": "syscall", - "syscall.SYS_SEMTIMEDOP": "syscall", - "syscall.SYS_SEM_CLOSE": "syscall", - "syscall.SYS_SEM_DESTROY": "syscall", - "syscall.SYS_SEM_GETVALUE": "syscall", - "syscall.SYS_SEM_INIT": "syscall", - "syscall.SYS_SEM_OPEN": "syscall", - "syscall.SYS_SEM_POST": "syscall", - "syscall.SYS_SEM_TRYWAIT": "syscall", - "syscall.SYS_SEM_UNLINK": "syscall", - "syscall.SYS_SEM_WAIT": "syscall", - "syscall.SYS_SEM_WAIT_NOCANCEL": "syscall", - "syscall.SYS_SEND": "syscall", - "syscall.SYS_SENDFILE": "syscall", - "syscall.SYS_SENDFILE64": "syscall", - "syscall.SYS_SENDMMSG": "syscall", - "syscall.SYS_SENDMSG": "syscall", - "syscall.SYS_SENDMSG_NOCANCEL": "syscall", - "syscall.SYS_SENDTO": "syscall", - "syscall.SYS_SENDTO_NOCANCEL": "syscall", - "syscall.SYS_SETATTRLIST": "syscall", - "syscall.SYS_SETAUDIT": "syscall", - "syscall.SYS_SETAUDIT_ADDR": "syscall", - "syscall.SYS_SETAUID": "syscall", - "syscall.SYS_SETCONTEXT": "syscall", - "syscall.SYS_SETDOMAINNAME": "syscall", - "syscall.SYS_SETEGID": "syscall", - "syscall.SYS_SETEUID": "syscall", - "syscall.SYS_SETFIB": "syscall", - "syscall.SYS_SETFSGID": "syscall", - "syscall.SYS_SETFSGID32": "syscall", - "syscall.SYS_SETFSUID": "syscall", - "syscall.SYS_SETFSUID32": "syscall", - "syscall.SYS_SETGID": "syscall", - "syscall.SYS_SETGID32": "syscall", - "syscall.SYS_SETGROUPS": "syscall", - "syscall.SYS_SETGROUPS32": "syscall", - "syscall.SYS_SETHOSTNAME": "syscall", - "syscall.SYS_SETITIMER": "syscall", - "syscall.SYS_SETLCID": "syscall", - "syscall.SYS_SETLOGIN": "syscall", - "syscall.SYS_SETLOGINCLASS": "syscall", - "syscall.SYS_SETNS": "syscall", - "syscall.SYS_SETPGID": "syscall", - "syscall.SYS_SETPRIORITY": "syscall", - "syscall.SYS_SETPRIVEXEC": "syscall", - "syscall.SYS_SETREGID": "syscall", - "syscall.SYS_SETREGID32": "syscall", - "syscall.SYS_SETRESGID": "syscall", - "syscall.SYS_SETRESGID32": "syscall", - "syscall.SYS_SETRESUID": "syscall", - "syscall.SYS_SETRESUID32": "syscall", - "syscall.SYS_SETREUID": "syscall", - "syscall.SYS_SETREUID32": "syscall", - "syscall.SYS_SETRLIMIT": "syscall", - "syscall.SYS_SETRTABLE": "syscall", - "syscall.SYS_SETSGROUPS": "syscall", - "syscall.SYS_SETSID": "syscall", - "syscall.SYS_SETSOCKOPT": "syscall", - "syscall.SYS_SETTID": "syscall", - "syscall.SYS_SETTID_WITH_PID": "syscall", - "syscall.SYS_SETTIMEOFDAY": "syscall", - "syscall.SYS_SETUID": "syscall", - "syscall.SYS_SETUID32": "syscall", - "syscall.SYS_SETWGROUPS": "syscall", - "syscall.SYS_SETXATTR": "syscall", - "syscall.SYS_SET_MEMPOLICY": "syscall", - "syscall.SYS_SET_ROBUST_LIST": "syscall", - "syscall.SYS_SET_THREAD_AREA": "syscall", - "syscall.SYS_SET_TID_ADDRESS": "syscall", - "syscall.SYS_SGETMASK": "syscall", - "syscall.SYS_SHARED_REGION_CHECK_NP": "syscall", - "syscall.SYS_SHARED_REGION_MAP_AND_SLIDE_NP": "syscall", - "syscall.SYS_SHMAT": "syscall", - "syscall.SYS_SHMCTL": "syscall", - "syscall.SYS_SHMDT": "syscall", - "syscall.SYS_SHMGET": "syscall", - "syscall.SYS_SHMSYS": "syscall", - "syscall.SYS_SHM_OPEN": "syscall", - "syscall.SYS_SHM_UNLINK": "syscall", - "syscall.SYS_SHUTDOWN": "syscall", - "syscall.SYS_SIGACTION": "syscall", - "syscall.SYS_SIGALTSTACK": "syscall", - "syscall.SYS_SIGNAL": "syscall", - "syscall.SYS_SIGNALFD": "syscall", - "syscall.SYS_SIGNALFD4": "syscall", - "syscall.SYS_SIGPENDING": "syscall", - "syscall.SYS_SIGPROCMASK": "syscall", - "syscall.SYS_SIGQUEUE": "syscall", - "syscall.SYS_SIGQUEUEINFO": "syscall", - "syscall.SYS_SIGRETURN": "syscall", - "syscall.SYS_SIGSUSPEND": "syscall", - "syscall.SYS_SIGSUSPEND_NOCANCEL": "syscall", - "syscall.SYS_SIGTIMEDWAIT": "syscall", - "syscall.SYS_SIGWAIT": "syscall", - "syscall.SYS_SIGWAITINFO": "syscall", - "syscall.SYS_SOCKET": "syscall", - "syscall.SYS_SOCKETCALL": "syscall", - "syscall.SYS_SOCKETPAIR": "syscall", - "syscall.SYS_SPLICE": "syscall", - "syscall.SYS_SSETMASK": "syscall", - "syscall.SYS_SSTK": "syscall", - "syscall.SYS_STACK_SNAPSHOT": "syscall", - "syscall.SYS_STAT": "syscall", - "syscall.SYS_STAT64": "syscall", - "syscall.SYS_STAT64_EXTENDED": "syscall", - "syscall.SYS_STATFS": "syscall", - "syscall.SYS_STATFS64": "syscall", - "syscall.SYS_STATV": "syscall", - "syscall.SYS_STATVFS1": "syscall", - "syscall.SYS_STAT_EXTENDED": "syscall", - "syscall.SYS_STIME": "syscall", - "syscall.SYS_STTY": "syscall", - "syscall.SYS_SWAPCONTEXT": "syscall", - "syscall.SYS_SWAPCTL": "syscall", - "syscall.SYS_SWAPOFF": "syscall", - "syscall.SYS_SWAPON": "syscall", - "syscall.SYS_SYMLINK": "syscall", - "syscall.SYS_SYMLINKAT": "syscall", - "syscall.SYS_SYNC": "syscall", - "syscall.SYS_SYNCFS": "syscall", - "syscall.SYS_SYNC_FILE_RANGE": "syscall", - "syscall.SYS_SYSARCH": "syscall", - "syscall.SYS_SYSCALL": "syscall", - "syscall.SYS_SYSCALL_BASE": "syscall", - "syscall.SYS_SYSFS": "syscall", - "syscall.SYS_SYSINFO": "syscall", - "syscall.SYS_SYSLOG": "syscall", - "syscall.SYS_TEE": "syscall", - "syscall.SYS_TGKILL": "syscall", - "syscall.SYS_THREAD_SELFID": "syscall", - "syscall.SYS_THR_CREATE": "syscall", - "syscall.SYS_THR_EXIT": "syscall", - "syscall.SYS_THR_KILL": "syscall", - "syscall.SYS_THR_KILL2": "syscall", - "syscall.SYS_THR_NEW": "syscall", - "syscall.SYS_THR_SELF": "syscall", - "syscall.SYS_THR_SET_NAME": "syscall", - "syscall.SYS_THR_SUSPEND": "syscall", - "syscall.SYS_THR_WAKE": "syscall", - "syscall.SYS_TIME": "syscall", - "syscall.SYS_TIMERFD_CREATE": "syscall", - "syscall.SYS_TIMERFD_GETTIME": "syscall", - "syscall.SYS_TIMERFD_SETTIME": "syscall", - "syscall.SYS_TIMER_CREATE": "syscall", - "syscall.SYS_TIMER_DELETE": "syscall", - "syscall.SYS_TIMER_GETOVERRUN": "syscall", - "syscall.SYS_TIMER_GETTIME": "syscall", - "syscall.SYS_TIMER_SETTIME": "syscall", - "syscall.SYS_TIMES": "syscall", - "syscall.SYS_TKILL": "syscall", - "syscall.SYS_TRUNCATE": "syscall", - "syscall.SYS_TRUNCATE64": "syscall", - "syscall.SYS_TUXCALL": "syscall", - "syscall.SYS_UGETRLIMIT": "syscall", - "syscall.SYS_ULIMIT": "syscall", - "syscall.SYS_UMASK": "syscall", - "syscall.SYS_UMASK_EXTENDED": "syscall", - "syscall.SYS_UMOUNT": "syscall", - "syscall.SYS_UMOUNT2": "syscall", - "syscall.SYS_UNAME": "syscall", - "syscall.SYS_UNDELETE": "syscall", - "syscall.SYS_UNLINK": "syscall", - "syscall.SYS_UNLINKAT": "syscall", - "syscall.SYS_UNMOUNT": "syscall", - "syscall.SYS_UNSHARE": "syscall", - "syscall.SYS_USELIB": "syscall", - "syscall.SYS_USTAT": "syscall", - "syscall.SYS_UTIME": "syscall", - "syscall.SYS_UTIMENSAT": "syscall", - "syscall.SYS_UTIMES": "syscall", - "syscall.SYS_UTRACE": "syscall", - "syscall.SYS_UUIDGEN": "syscall", - "syscall.SYS_VADVISE": "syscall", - "syscall.SYS_VFORK": "syscall", - "syscall.SYS_VHANGUP": "syscall", - "syscall.SYS_VM86": "syscall", - "syscall.SYS_VM86OLD": "syscall", - "syscall.SYS_VMSPLICE": "syscall", - "syscall.SYS_VM_PRESSURE_MONITOR": "syscall", - "syscall.SYS_VSERVER": "syscall", - "syscall.SYS_WAIT4": "syscall", - "syscall.SYS_WAIT4_NOCANCEL": "syscall", - "syscall.SYS_WAIT6": "syscall", - "syscall.SYS_WAITEVENT": "syscall", - "syscall.SYS_WAITID": "syscall", - "syscall.SYS_WAITID_NOCANCEL": "syscall", - "syscall.SYS_WAITPID": "syscall", - "syscall.SYS_WATCHEVENT": "syscall", - "syscall.SYS_WORKQ_KERNRETURN": "syscall", - "syscall.SYS_WORKQ_OPEN": "syscall", - "syscall.SYS_WRITE": "syscall", - "syscall.SYS_WRITEV": "syscall", - "syscall.SYS_WRITEV_NOCANCEL": "syscall", - "syscall.SYS_WRITE_NOCANCEL": "syscall", - "syscall.SYS_YIELD": "syscall", - "syscall.SYS__LLSEEK": "syscall", - "syscall.SYS__LWP_CONTINUE": "syscall", - "syscall.SYS__LWP_CREATE": "syscall", - "syscall.SYS__LWP_CTL": "syscall", - "syscall.SYS__LWP_DETACH": "syscall", - "syscall.SYS__LWP_EXIT": "syscall", - "syscall.SYS__LWP_GETNAME": "syscall", - "syscall.SYS__LWP_GETPRIVATE": "syscall", - "syscall.SYS__LWP_KILL": "syscall", - "syscall.SYS__LWP_PARK": "syscall", - "syscall.SYS__LWP_SELF": "syscall", - "syscall.SYS__LWP_SETNAME": "syscall", - "syscall.SYS__LWP_SETPRIVATE": "syscall", - "syscall.SYS__LWP_SUSPEND": "syscall", - "syscall.SYS__LWP_UNPARK": "syscall", - "syscall.SYS__LWP_UNPARK_ALL": "syscall", - "syscall.SYS__LWP_WAIT": "syscall", - "syscall.SYS__LWP_WAKEUP": "syscall", - "syscall.SYS__NEWSELECT": "syscall", - "syscall.SYS__PSET_BIND": "syscall", - "syscall.SYS__SCHED_GETAFFINITY": "syscall", - "syscall.SYS__SCHED_GETPARAM": "syscall", - "syscall.SYS__SCHED_SETAFFINITY": "syscall", - "syscall.SYS__SCHED_SETPARAM": "syscall", - "syscall.SYS__SYSCTL": "syscall", - "syscall.SYS__UMTX_LOCK": "syscall", - "syscall.SYS__UMTX_OP": "syscall", - "syscall.SYS__UMTX_UNLOCK": "syscall", - "syscall.SYS___ACL_ACLCHECK_FD": "syscall", - "syscall.SYS___ACL_ACLCHECK_FILE": "syscall", - "syscall.SYS___ACL_ACLCHECK_LINK": "syscall", - "syscall.SYS___ACL_DELETE_FD": "syscall", - "syscall.SYS___ACL_DELETE_FILE": "syscall", - "syscall.SYS___ACL_DELETE_LINK": "syscall", - "syscall.SYS___ACL_GET_FD": "syscall", - "syscall.SYS___ACL_GET_FILE": "syscall", - "syscall.SYS___ACL_GET_LINK": "syscall", - "syscall.SYS___ACL_SET_FD": "syscall", - "syscall.SYS___ACL_SET_FILE": "syscall", - "syscall.SYS___ACL_SET_LINK": "syscall", - "syscall.SYS___CLONE": "syscall", - "syscall.SYS___DISABLE_THREADSIGNAL": "syscall", - "syscall.SYS___GETCWD": "syscall", - "syscall.SYS___GETLOGIN": "syscall", - "syscall.SYS___GET_TCB": "syscall", - "syscall.SYS___MAC_EXECVE": "syscall", - "syscall.SYS___MAC_GETFSSTAT": "syscall", - "syscall.SYS___MAC_GET_FD": "syscall", - "syscall.SYS___MAC_GET_FILE": "syscall", - "syscall.SYS___MAC_GET_LCID": "syscall", - "syscall.SYS___MAC_GET_LCTX": "syscall", - "syscall.SYS___MAC_GET_LINK": "syscall", - "syscall.SYS___MAC_GET_MOUNT": "syscall", - "syscall.SYS___MAC_GET_PID": "syscall", - "syscall.SYS___MAC_GET_PROC": "syscall", - "syscall.SYS___MAC_MOUNT": "syscall", - "syscall.SYS___MAC_SET_FD": "syscall", - "syscall.SYS___MAC_SET_FILE": "syscall", - "syscall.SYS___MAC_SET_LCTX": "syscall", - "syscall.SYS___MAC_SET_LINK": "syscall", - "syscall.SYS___MAC_SET_PROC": "syscall", - "syscall.SYS___MAC_SYSCALL": "syscall", - "syscall.SYS___OLD_SEMWAIT_SIGNAL": "syscall", - "syscall.SYS___OLD_SEMWAIT_SIGNAL_NOCANCEL": "syscall", - "syscall.SYS___POSIX_CHOWN": "syscall", - "syscall.SYS___POSIX_FCHOWN": "syscall", - "syscall.SYS___POSIX_LCHOWN": "syscall", - "syscall.SYS___POSIX_RENAME": "syscall", - "syscall.SYS___PTHREAD_CANCELED": "syscall", - "syscall.SYS___PTHREAD_CHDIR": "syscall", - "syscall.SYS___PTHREAD_FCHDIR": "syscall", - "syscall.SYS___PTHREAD_KILL": "syscall", - "syscall.SYS___PTHREAD_MARKCANCEL": "syscall", - "syscall.SYS___PTHREAD_SIGMASK": "syscall", - "syscall.SYS___QUOTACTL": "syscall", - "syscall.SYS___SEMCTL": "syscall", - "syscall.SYS___SEMWAIT_SIGNAL": "syscall", - "syscall.SYS___SEMWAIT_SIGNAL_NOCANCEL": "syscall", - "syscall.SYS___SETLOGIN": "syscall", - "syscall.SYS___SETUGID": "syscall", - "syscall.SYS___SET_TCB": "syscall", - "syscall.SYS___SIGACTION_SIGTRAMP": "syscall", - "syscall.SYS___SIGTIMEDWAIT": "syscall", - "syscall.SYS___SIGWAIT": "syscall", - "syscall.SYS___SIGWAIT_NOCANCEL": "syscall", - "syscall.SYS___SYSCTL": "syscall", - "syscall.SYS___TFORK": "syscall", - "syscall.SYS___THREXIT": "syscall", - "syscall.SYS___THRSIGDIVERT": "syscall", - "syscall.SYS___THRSLEEP": "syscall", - "syscall.SYS___THRWAKEUP": "syscall", - "syscall.S_ARCH1": "syscall", - "syscall.S_ARCH2": "syscall", - "syscall.S_BLKSIZE": "syscall", - "syscall.S_IEXEC": "syscall", - "syscall.S_IFBLK": "syscall", - "syscall.S_IFCHR": "syscall", - "syscall.S_IFDIR": "syscall", - "syscall.S_IFIFO": "syscall", - "syscall.S_IFLNK": "syscall", - "syscall.S_IFMT": "syscall", - "syscall.S_IFREG": "syscall", - "syscall.S_IFSOCK": "syscall", - "syscall.S_IFWHT": "syscall", - "syscall.S_IREAD": "syscall", - "syscall.S_IRGRP": "syscall", - "syscall.S_IROTH": "syscall", - "syscall.S_IRUSR": "syscall", - "syscall.S_IRWXG": "syscall", - "syscall.S_IRWXO": "syscall", - "syscall.S_IRWXU": "syscall", - "syscall.S_ISGID": "syscall", - "syscall.S_ISTXT": "syscall", - "syscall.S_ISUID": "syscall", - "syscall.S_ISVTX": "syscall", - "syscall.S_IWGRP": "syscall", - "syscall.S_IWOTH": "syscall", - "syscall.S_IWRITE": "syscall", - "syscall.S_IWUSR": "syscall", - "syscall.S_IXGRP": "syscall", - "syscall.S_IXOTH": "syscall", - "syscall.S_IXUSR": "syscall", - "syscall.S_LOGIN_SET": "syscall", - "syscall.SecurityAttributes": "syscall", - "syscall.Seek": "syscall", - "syscall.Select": "syscall", - "syscall.Sendfile": "syscall", - "syscall.Sendmsg": "syscall", - "syscall.SendmsgN": "syscall", - "syscall.Sendto": "syscall", - "syscall.Servent": "syscall", - "syscall.SetBpf": "syscall", - "syscall.SetBpfBuflen": "syscall", - "syscall.SetBpfDatalink": "syscall", - "syscall.SetBpfHeadercmpl": "syscall", - "syscall.SetBpfImmediate": "syscall", - "syscall.SetBpfInterface": "syscall", - "syscall.SetBpfPromisc": "syscall", - "syscall.SetBpfTimeout": "syscall", - "syscall.SetCurrentDirectory": "syscall", - "syscall.SetEndOfFile": "syscall", - "syscall.SetEnvironmentVariable": "syscall", - "syscall.SetFileAttributes": "syscall", - "syscall.SetFileCompletionNotificationModes": "syscall", - "syscall.SetFilePointer": "syscall", - "syscall.SetFileTime": "syscall", - "syscall.SetHandleInformation": "syscall", - "syscall.SetKevent": "syscall", - "syscall.SetLsfPromisc": "syscall", - "syscall.SetNonblock": "syscall", - "syscall.Setdomainname": "syscall", - "syscall.Setegid": "syscall", - "syscall.Setenv": "syscall", - "syscall.Seteuid": "syscall", - "syscall.Setfsgid": "syscall", - "syscall.Setfsuid": "syscall", - "syscall.Setgid": "syscall", - "syscall.Setgroups": "syscall", - "syscall.Sethostname": "syscall", - "syscall.Setlogin": "syscall", - "syscall.Setpgid": "syscall", - "syscall.Setpriority": "syscall", - "syscall.Setprivexec": "syscall", - "syscall.Setregid": "syscall", - "syscall.Setresgid": "syscall", - "syscall.Setresuid": "syscall", - "syscall.Setreuid": "syscall", - "syscall.Setrlimit": "syscall", - "syscall.Setsid": "syscall", - "syscall.Setsockopt": "syscall", - "syscall.SetsockoptByte": "syscall", - "syscall.SetsockoptICMPv6Filter": "syscall", - "syscall.SetsockoptIPMreq": "syscall", - "syscall.SetsockoptIPMreqn": "syscall", - "syscall.SetsockoptIPv6Mreq": "syscall", - "syscall.SetsockoptInet4Addr": "syscall", - "syscall.SetsockoptInt": "syscall", - "syscall.SetsockoptLinger": "syscall", - "syscall.SetsockoptString": "syscall", - "syscall.SetsockoptTimeval": "syscall", - "syscall.Settimeofday": "syscall", - "syscall.Setuid": "syscall", - "syscall.Setxattr": "syscall", - "syscall.Shutdown": "syscall", - "syscall.SidTypeAlias": "syscall", - "syscall.SidTypeComputer": "syscall", - "syscall.SidTypeDeletedAccount": "syscall", - "syscall.SidTypeDomain": "syscall", - "syscall.SidTypeGroup": "syscall", - "syscall.SidTypeInvalid": "syscall", - "syscall.SidTypeLabel": "syscall", - "syscall.SidTypeUnknown": "syscall", - "syscall.SidTypeUser": "syscall", - "syscall.SidTypeWellKnownGroup": "syscall", - "syscall.Signal": "syscall", - "syscall.SizeofBpfHdr": "syscall", - "syscall.SizeofBpfInsn": "syscall", - "syscall.SizeofBpfProgram": "syscall", - "syscall.SizeofBpfStat": "syscall", - "syscall.SizeofBpfVersion": "syscall", - "syscall.SizeofBpfZbuf": "syscall", - "syscall.SizeofBpfZbufHeader": "syscall", - "syscall.SizeofCmsghdr": "syscall", - "syscall.SizeofICMPv6Filter": "syscall", - "syscall.SizeofIPMreq": "syscall", - "syscall.SizeofIPMreqn": "syscall", - "syscall.SizeofIPv6MTUInfo": "syscall", - "syscall.SizeofIPv6Mreq": "syscall", - "syscall.SizeofIfAddrmsg": "syscall", - "syscall.SizeofIfAnnounceMsghdr": "syscall", - "syscall.SizeofIfData": "syscall", - "syscall.SizeofIfInfomsg": "syscall", - "syscall.SizeofIfMsghdr": "syscall", - "syscall.SizeofIfaMsghdr": "syscall", - "syscall.SizeofIfmaMsghdr": "syscall", - "syscall.SizeofIfmaMsghdr2": "syscall", - "syscall.SizeofInet4Pktinfo": "syscall", - "syscall.SizeofInet6Pktinfo": "syscall", - "syscall.SizeofInotifyEvent": "syscall", - "syscall.SizeofLinger": "syscall", - "syscall.SizeofMsghdr": "syscall", - "syscall.SizeofNlAttr": "syscall", - "syscall.SizeofNlMsgerr": "syscall", - "syscall.SizeofNlMsghdr": "syscall", - "syscall.SizeofRtAttr": "syscall", - "syscall.SizeofRtGenmsg": "syscall", - "syscall.SizeofRtMetrics": "syscall", - "syscall.SizeofRtMsg": "syscall", - "syscall.SizeofRtMsghdr": "syscall", - "syscall.SizeofRtNexthop": "syscall", - "syscall.SizeofSockFilter": "syscall", - "syscall.SizeofSockFprog": "syscall", - "syscall.SizeofSockaddrAny": "syscall", - "syscall.SizeofSockaddrDatalink": "syscall", - "syscall.SizeofSockaddrInet4": "syscall", - "syscall.SizeofSockaddrInet6": "syscall", - "syscall.SizeofSockaddrLinklayer": "syscall", - "syscall.SizeofSockaddrNetlink": "syscall", - "syscall.SizeofSockaddrUnix": "syscall", - "syscall.SizeofTCPInfo": "syscall", - "syscall.SizeofUcred": "syscall", - "syscall.SlicePtrFromStrings": "syscall", - "syscall.SockFilter": "syscall", - "syscall.SockFprog": "syscall", - "syscall.SockaddrDatalink": "syscall", - "syscall.SockaddrGen": "syscall", - "syscall.SockaddrInet4": "syscall", - "syscall.SockaddrInet6": "syscall", - "syscall.SockaddrLinklayer": "syscall", - "syscall.SockaddrNetlink": "syscall", - "syscall.SockaddrUnix": "syscall", - "syscall.Socket": "syscall", - "syscall.SocketControlMessage": "syscall", - "syscall.SocketDisableIPv6": "syscall", - "syscall.Socketpair": "syscall", - "syscall.Splice": "syscall", - "syscall.StartProcess": "syscall", - "syscall.StartupInfo": "syscall", - "syscall.Stat": "syscall", - "syscall.Stat_t": "syscall", - "syscall.Statfs": "syscall", - "syscall.Statfs_t": "syscall", - "syscall.Stderr": "syscall", - "syscall.Stdin": "syscall", - "syscall.Stdout": "syscall", - "syscall.StringBytePtr": "syscall", - "syscall.StringByteSlice": "syscall", - "syscall.StringSlicePtr": "syscall", - "syscall.StringToSid": "syscall", - "syscall.StringToUTF16": "syscall", - "syscall.StringToUTF16Ptr": "syscall", - "syscall.Symlink": "syscall", - "syscall.Sync": "syscall", - "syscall.SyncFileRange": "syscall", - "syscall.SysProcAttr": "syscall", - "syscall.SysProcIDMap": "syscall", - "syscall.Syscall": "syscall", - "syscall.Syscall12": "syscall", - "syscall.Syscall15": "syscall", - "syscall.Syscall6": "syscall", - "syscall.Syscall9": "syscall", - "syscall.Sysctl": "syscall", - "syscall.SysctlUint32": "syscall", - "syscall.Sysctlnode": "syscall", - "syscall.Sysinfo": "syscall", - "syscall.Sysinfo_t": "syscall", - "syscall.Systemtime": "syscall", - "syscall.TCGETS": "syscall", - "syscall.TCIFLUSH": "syscall", - "syscall.TCIOFLUSH": "syscall", - "syscall.TCOFLUSH": "syscall", - "syscall.TCPInfo": "syscall", - "syscall.TCPKeepalive": "syscall", - "syscall.TCP_CA_NAME_MAX": "syscall", - "syscall.TCP_CONGCTL": "syscall", - "syscall.TCP_CONGESTION": "syscall", - "syscall.TCP_CONNECTIONTIMEOUT": "syscall", - "syscall.TCP_CORK": "syscall", - "syscall.TCP_DEFER_ACCEPT": "syscall", - "syscall.TCP_INFO": "syscall", - "syscall.TCP_KEEPALIVE": "syscall", - "syscall.TCP_KEEPCNT": "syscall", - "syscall.TCP_KEEPIDLE": "syscall", - "syscall.TCP_KEEPINIT": "syscall", - "syscall.TCP_KEEPINTVL": "syscall", - "syscall.TCP_LINGER2": "syscall", - "syscall.TCP_MAXBURST": "syscall", - "syscall.TCP_MAXHLEN": "syscall", - "syscall.TCP_MAXOLEN": "syscall", - "syscall.TCP_MAXSEG": "syscall", - "syscall.TCP_MAXWIN": "syscall", - "syscall.TCP_MAX_SACK": "syscall", - "syscall.TCP_MAX_WINSHIFT": "syscall", - "syscall.TCP_MD5SIG": "syscall", - "syscall.TCP_MD5SIG_MAXKEYLEN": "syscall", - "syscall.TCP_MINMSS": "syscall", - "syscall.TCP_MINMSSOVERLOAD": "syscall", - "syscall.TCP_MSS": "syscall", - "syscall.TCP_NODELAY": "syscall", - "syscall.TCP_NOOPT": "syscall", - "syscall.TCP_NOPUSH": "syscall", - "syscall.TCP_NSTATES": "syscall", - "syscall.TCP_QUICKACK": "syscall", - "syscall.TCP_RXT_CONNDROPTIME": "syscall", - "syscall.TCP_RXT_FINDROP": "syscall", - "syscall.TCP_SACK_ENABLE": "syscall", - "syscall.TCP_SYNCNT": "syscall", - "syscall.TCP_VENDOR": "syscall", - "syscall.TCP_WINDOW_CLAMP": "syscall", - "syscall.TCSAFLUSH": "syscall", - "syscall.TCSETS": "syscall", - "syscall.TF_DISCONNECT": "syscall", - "syscall.TF_REUSE_SOCKET": "syscall", - "syscall.TF_USE_DEFAULT_WORKER": "syscall", - "syscall.TF_USE_KERNEL_APC": "syscall", - "syscall.TF_USE_SYSTEM_THREAD": "syscall", - "syscall.TF_WRITE_BEHIND": "syscall", - "syscall.TH32CS_INHERIT": "syscall", - "syscall.TH32CS_SNAPALL": "syscall", - "syscall.TH32CS_SNAPHEAPLIST": "syscall", - "syscall.TH32CS_SNAPMODULE": "syscall", - "syscall.TH32CS_SNAPMODULE32": "syscall", - "syscall.TH32CS_SNAPPROCESS": "syscall", - "syscall.TH32CS_SNAPTHREAD": "syscall", - "syscall.TIME_ZONE_ID_DAYLIGHT": "syscall", - "syscall.TIME_ZONE_ID_STANDARD": "syscall", - "syscall.TIME_ZONE_ID_UNKNOWN": "syscall", - "syscall.TIOCCBRK": "syscall", - "syscall.TIOCCDTR": "syscall", - "syscall.TIOCCONS": "syscall", - "syscall.TIOCDCDTIMESTAMP": "syscall", - "syscall.TIOCDRAIN": "syscall", - "syscall.TIOCDSIMICROCODE": "syscall", - "syscall.TIOCEXCL": "syscall", - "syscall.TIOCEXT": "syscall", - "syscall.TIOCFLAG_CDTRCTS": "syscall", - "syscall.TIOCFLAG_CLOCAL": "syscall", - "syscall.TIOCFLAG_CRTSCTS": "syscall", - "syscall.TIOCFLAG_MDMBUF": "syscall", - "syscall.TIOCFLAG_PPS": "syscall", - "syscall.TIOCFLAG_SOFTCAR": "syscall", - "syscall.TIOCFLUSH": "syscall", - "syscall.TIOCGDEV": "syscall", - "syscall.TIOCGDRAINWAIT": "syscall", - "syscall.TIOCGETA": "syscall", - "syscall.TIOCGETD": "syscall", - "syscall.TIOCGFLAGS": "syscall", - "syscall.TIOCGICOUNT": "syscall", - "syscall.TIOCGLCKTRMIOS": "syscall", - "syscall.TIOCGLINED": "syscall", - "syscall.TIOCGPGRP": "syscall", - "syscall.TIOCGPTN": "syscall", - "syscall.TIOCGQSIZE": "syscall", - "syscall.TIOCGRANTPT": "syscall", - "syscall.TIOCGRS485": "syscall", - "syscall.TIOCGSERIAL": "syscall", - "syscall.TIOCGSID": "syscall", - "syscall.TIOCGSIZE": "syscall", - "syscall.TIOCGSOFTCAR": "syscall", - "syscall.TIOCGTSTAMP": "syscall", - "syscall.TIOCGWINSZ": "syscall", - "syscall.TIOCINQ": "syscall", - "syscall.TIOCIXOFF": "syscall", - "syscall.TIOCIXON": "syscall", - "syscall.TIOCLINUX": "syscall", - "syscall.TIOCMBIC": "syscall", - "syscall.TIOCMBIS": "syscall", - "syscall.TIOCMGDTRWAIT": "syscall", - "syscall.TIOCMGET": "syscall", - "syscall.TIOCMIWAIT": "syscall", - "syscall.TIOCMODG": "syscall", - "syscall.TIOCMODS": "syscall", - "syscall.TIOCMSDTRWAIT": "syscall", - "syscall.TIOCMSET": "syscall", - "syscall.TIOCM_CAR": "syscall", - "syscall.TIOCM_CD": "syscall", - "syscall.TIOCM_CTS": "syscall", - "syscall.TIOCM_DCD": "syscall", - "syscall.TIOCM_DSR": "syscall", - "syscall.TIOCM_DTR": "syscall", - "syscall.TIOCM_LE": "syscall", - "syscall.TIOCM_RI": "syscall", - "syscall.TIOCM_RNG": "syscall", - "syscall.TIOCM_RTS": "syscall", - "syscall.TIOCM_SR": "syscall", - "syscall.TIOCM_ST": "syscall", - "syscall.TIOCNOTTY": "syscall", - "syscall.TIOCNXCL": "syscall", - "syscall.TIOCOUTQ": "syscall", - "syscall.TIOCPKT": "syscall", - "syscall.TIOCPKT_DATA": "syscall", - "syscall.TIOCPKT_DOSTOP": "syscall", - "syscall.TIOCPKT_FLUSHREAD": "syscall", - "syscall.TIOCPKT_FLUSHWRITE": "syscall", - "syscall.TIOCPKT_IOCTL": "syscall", - "syscall.TIOCPKT_NOSTOP": "syscall", - "syscall.TIOCPKT_START": "syscall", - "syscall.TIOCPKT_STOP": "syscall", - "syscall.TIOCPTMASTER": "syscall", - "syscall.TIOCPTMGET": "syscall", - "syscall.TIOCPTSNAME": "syscall", - "syscall.TIOCPTYGNAME": "syscall", - "syscall.TIOCPTYGRANT": "syscall", - "syscall.TIOCPTYUNLK": "syscall", - "syscall.TIOCRCVFRAME": "syscall", - "syscall.TIOCREMOTE": "syscall", - "syscall.TIOCSBRK": "syscall", - "syscall.TIOCSCONS": "syscall", - "syscall.TIOCSCTTY": "syscall", - "syscall.TIOCSDRAINWAIT": "syscall", - "syscall.TIOCSDTR": "syscall", - "syscall.TIOCSERCONFIG": "syscall", - "syscall.TIOCSERGETLSR": "syscall", - "syscall.TIOCSERGETMULTI": "syscall", - "syscall.TIOCSERGSTRUCT": "syscall", - "syscall.TIOCSERGWILD": "syscall", - "syscall.TIOCSERSETMULTI": "syscall", - "syscall.TIOCSERSWILD": "syscall", - "syscall.TIOCSER_TEMT": "syscall", - "syscall.TIOCSETA": "syscall", - "syscall.TIOCSETAF": "syscall", - "syscall.TIOCSETAW": "syscall", - "syscall.TIOCSETD": "syscall", - "syscall.TIOCSFLAGS": "syscall", - "syscall.TIOCSIG": "syscall", - "syscall.TIOCSLCKTRMIOS": "syscall", - "syscall.TIOCSLINED": "syscall", - "syscall.TIOCSPGRP": "syscall", - "syscall.TIOCSPTLCK": "syscall", - "syscall.TIOCSQSIZE": "syscall", - "syscall.TIOCSRS485": "syscall", - "syscall.TIOCSSERIAL": "syscall", - "syscall.TIOCSSIZE": "syscall", - "syscall.TIOCSSOFTCAR": "syscall", - "syscall.TIOCSTART": "syscall", - "syscall.TIOCSTAT": "syscall", - "syscall.TIOCSTI": "syscall", - "syscall.TIOCSTOP": "syscall", - "syscall.TIOCSTSTAMP": "syscall", - "syscall.TIOCSWINSZ": "syscall", - "syscall.TIOCTIMESTAMP": "syscall", - "syscall.TIOCUCNTL": "syscall", - "syscall.TIOCVHANGUP": "syscall", - "syscall.TIOCXMTFRAME": "syscall", - "syscall.TOKEN_ADJUST_DEFAULT": "syscall", - "syscall.TOKEN_ADJUST_GROUPS": "syscall", - "syscall.TOKEN_ADJUST_PRIVILEGES": "syscall", - "syscall.TOKEN_ALL_ACCESS": "syscall", - "syscall.TOKEN_ASSIGN_PRIMARY": "syscall", - "syscall.TOKEN_DUPLICATE": "syscall", - "syscall.TOKEN_EXECUTE": "syscall", - "syscall.TOKEN_IMPERSONATE": "syscall", - "syscall.TOKEN_QUERY": "syscall", - "syscall.TOKEN_QUERY_SOURCE": "syscall", - "syscall.TOKEN_READ": "syscall", - "syscall.TOKEN_WRITE": "syscall", - "syscall.TOSTOP": "syscall", - "syscall.TRUNCATE_EXISTING": "syscall", - "syscall.TUNATTACHFILTER": "syscall", - "syscall.TUNDETACHFILTER": "syscall", - "syscall.TUNGETFEATURES": "syscall", - "syscall.TUNGETIFF": "syscall", - "syscall.TUNGETSNDBUF": "syscall", - "syscall.TUNGETVNETHDRSZ": "syscall", - "syscall.TUNSETDEBUG": "syscall", - "syscall.TUNSETGROUP": "syscall", - "syscall.TUNSETIFF": "syscall", - "syscall.TUNSETLINK": "syscall", - "syscall.TUNSETNOCSUM": "syscall", - "syscall.TUNSETOFFLOAD": "syscall", - "syscall.TUNSETOWNER": "syscall", - "syscall.TUNSETPERSIST": "syscall", - "syscall.TUNSETSNDBUF": "syscall", - "syscall.TUNSETTXFILTER": "syscall", - "syscall.TUNSETVNETHDRSZ": "syscall", - "syscall.Tee": "syscall", - "syscall.TerminateProcess": "syscall", - "syscall.Termios": "syscall", - "syscall.Tgkill": "syscall", - "syscall.Time": "syscall", - "syscall.Time_t": "syscall", - "syscall.Times": "syscall", - "syscall.Timespec": "syscall", - "syscall.TimespecToNsec": "syscall", - "syscall.Timeval": "syscall", - "syscall.Timeval32": "syscall", - "syscall.TimevalToNsec": "syscall", - "syscall.Timex": "syscall", - "syscall.Timezoneinformation": "syscall", - "syscall.Tms": "syscall", - "syscall.Token": "syscall", - "syscall.TokenAccessInformation": "syscall", - "syscall.TokenAuditPolicy": "syscall", - "syscall.TokenDefaultDacl": "syscall", - "syscall.TokenElevation": "syscall", - "syscall.TokenElevationType": "syscall", - "syscall.TokenGroups": "syscall", - "syscall.TokenGroupsAndPrivileges": "syscall", - "syscall.TokenHasRestrictions": "syscall", - "syscall.TokenImpersonationLevel": "syscall", - "syscall.TokenIntegrityLevel": "syscall", - "syscall.TokenLinkedToken": "syscall", - "syscall.TokenLogonSid": "syscall", - "syscall.TokenMandatoryPolicy": "syscall", - "syscall.TokenOrigin": "syscall", - "syscall.TokenOwner": "syscall", - "syscall.TokenPrimaryGroup": "syscall", - "syscall.TokenPrivileges": "syscall", - "syscall.TokenRestrictedSids": "syscall", - "syscall.TokenSandBoxInert": "syscall", - "syscall.TokenSessionId": "syscall", - "syscall.TokenSessionReference": "syscall", - "syscall.TokenSource": "syscall", - "syscall.TokenStatistics": "syscall", - "syscall.TokenType": "syscall", - "syscall.TokenUIAccess": "syscall", - "syscall.TokenUser": "syscall", - "syscall.TokenVirtualizationAllowed": "syscall", - "syscall.TokenVirtualizationEnabled": "syscall", - "syscall.Tokenprimarygroup": "syscall", - "syscall.Tokenuser": "syscall", - "syscall.TranslateAccountName": "syscall", - "syscall.TranslateName": "syscall", - "syscall.TransmitFile": "syscall", - "syscall.TransmitFileBuffers": "syscall", - "syscall.Truncate": "syscall", - "syscall.USAGE_MATCH_TYPE_AND": "syscall", - "syscall.USAGE_MATCH_TYPE_OR": "syscall", - "syscall.UTF16FromString": "syscall", - "syscall.UTF16PtrFromString": "syscall", - "syscall.UTF16ToString": "syscall", - "syscall.Ucred": "syscall", - "syscall.Umask": "syscall", - "syscall.Uname": "syscall", - "syscall.Undelete": "syscall", - "syscall.UnixCredentials": "syscall", - "syscall.UnixRights": "syscall", - "syscall.Unlink": "syscall", - "syscall.Unlinkat": "syscall", - "syscall.UnmapViewOfFile": "syscall", - "syscall.Unmount": "syscall", - "syscall.Unsetenv": "syscall", - "syscall.Unshare": "syscall", - "syscall.UserInfo10": "syscall", - "syscall.Ustat": "syscall", - "syscall.Ustat_t": "syscall", - "syscall.Utimbuf": "syscall", - "syscall.Utime": "syscall", - "syscall.Utimes": "syscall", - "syscall.UtimesNano": "syscall", - "syscall.Utsname": "syscall", - "syscall.VDISCARD": "syscall", - "syscall.VDSUSP": "syscall", - "syscall.VEOF": "syscall", - "syscall.VEOL": "syscall", - "syscall.VEOL2": "syscall", - "syscall.VERASE": "syscall", - "syscall.VERASE2": "syscall", - "syscall.VINTR": "syscall", - "syscall.VKILL": "syscall", - "syscall.VLNEXT": "syscall", - "syscall.VMIN": "syscall", - "syscall.VQUIT": "syscall", - "syscall.VREPRINT": "syscall", - "syscall.VSTART": "syscall", - "syscall.VSTATUS": "syscall", - "syscall.VSTOP": "syscall", - "syscall.VSUSP": "syscall", - "syscall.VSWTC": "syscall", - "syscall.VT0": "syscall", - "syscall.VT1": "syscall", - "syscall.VTDLY": "syscall", - "syscall.VTIME": "syscall", - "syscall.VWERASE": "syscall", - "syscall.VirtualLock": "syscall", - "syscall.VirtualUnlock": "syscall", - "syscall.WAIT_ABANDONED": "syscall", - "syscall.WAIT_FAILED": "syscall", - "syscall.WAIT_OBJECT_0": "syscall", - "syscall.WAIT_TIMEOUT": "syscall", - "syscall.WALL": "syscall", - "syscall.WALLSIG": "syscall", - "syscall.WALTSIG": "syscall", - "syscall.WCLONE": "syscall", - "syscall.WCONTINUED": "syscall", - "syscall.WCOREFLAG": "syscall", - "syscall.WEXITED": "syscall", - "syscall.WLINUXCLONE": "syscall", - "syscall.WNOHANG": "syscall", - "syscall.WNOTHREAD": "syscall", - "syscall.WNOWAIT": "syscall", - "syscall.WNOZOMBIE": "syscall", - "syscall.WOPTSCHECKED": "syscall", - "syscall.WORDSIZE": "syscall", - "syscall.WSABuf": "syscall", - "syscall.WSACleanup": "syscall", - "syscall.WSADESCRIPTION_LEN": "syscall", - "syscall.WSAData": "syscall", - "syscall.WSAEACCES": "syscall", - "syscall.WSAECONNABORTED": "syscall", - "syscall.WSAECONNRESET": "syscall", - "syscall.WSAEnumProtocols": "syscall", - "syscall.WSAID_CONNECTEX": "syscall", - "syscall.WSAIoctl": "syscall", - "syscall.WSAPROTOCOL_LEN": "syscall", - "syscall.WSAProtocolChain": "syscall", - "syscall.WSAProtocolInfo": "syscall", - "syscall.WSARecv": "syscall", - "syscall.WSARecvFrom": "syscall", - "syscall.WSASYS_STATUS_LEN": "syscall", - "syscall.WSASend": "syscall", - "syscall.WSASendTo": "syscall", - "syscall.WSASendto": "syscall", - "syscall.WSAStartup": "syscall", - "syscall.WSTOPPED": "syscall", - "syscall.WTRAPPED": "syscall", - "syscall.WUNTRACED": "syscall", - "syscall.Wait4": "syscall", - "syscall.WaitForSingleObject": "syscall", - "syscall.WaitStatus": "syscall", - "syscall.Win32FileAttributeData": "syscall", - "syscall.Win32finddata": "syscall", - "syscall.Write": "syscall", - "syscall.WriteConsole": "syscall", - "syscall.WriteFile": "syscall", - "syscall.X509_ASN_ENCODING": "syscall", - "syscall.XCASE": "syscall", - "syscall.XP1_CONNECTIONLESS": "syscall", - "syscall.XP1_CONNECT_DATA": "syscall", - "syscall.XP1_DISCONNECT_DATA": "syscall", - "syscall.XP1_EXPEDITED_DATA": "syscall", - "syscall.XP1_GRACEFUL_CLOSE": "syscall", - "syscall.XP1_GUARANTEED_DELIVERY": "syscall", - "syscall.XP1_GUARANTEED_ORDER": "syscall", - "syscall.XP1_IFS_HANDLES": "syscall", - "syscall.XP1_MESSAGE_ORIENTED": "syscall", - "syscall.XP1_MULTIPOINT_CONTROL_PLANE": "syscall", - "syscall.XP1_MULTIPOINT_DATA_PLANE": "syscall", - "syscall.XP1_PARTIAL_MESSAGE": "syscall", - "syscall.XP1_PSEUDO_STREAM": "syscall", - "syscall.XP1_QOS_SUPPORTED": "syscall", - "syscall.XP1_SAN_SUPPORT_SDP": "syscall", - "syscall.XP1_SUPPORT_BROADCAST": "syscall", - "syscall.XP1_SUPPORT_MULTIPOINT": "syscall", - "syscall.XP1_UNI_RECV": "syscall", - "syscall.XP1_UNI_SEND": "syscall", - "syslog.Dial": "log/syslog", - "syslog.LOG_ALERT": "log/syslog", - "syslog.LOG_AUTH": "log/syslog", - "syslog.LOG_AUTHPRIV": "log/syslog", - "syslog.LOG_CRIT": "log/syslog", - "syslog.LOG_CRON": "log/syslog", - "syslog.LOG_DAEMON": "log/syslog", - "syslog.LOG_DEBUG": "log/syslog", - "syslog.LOG_EMERG": "log/syslog", - "syslog.LOG_ERR": "log/syslog", - "syslog.LOG_FTP": "log/syslog", - "syslog.LOG_INFO": "log/syslog", - "syslog.LOG_KERN": "log/syslog", - "syslog.LOG_LOCAL0": "log/syslog", - "syslog.LOG_LOCAL1": "log/syslog", - "syslog.LOG_LOCAL2": "log/syslog", - "syslog.LOG_LOCAL3": "log/syslog", - "syslog.LOG_LOCAL4": "log/syslog", - "syslog.LOG_LOCAL5": "log/syslog", - "syslog.LOG_LOCAL6": "log/syslog", - "syslog.LOG_LOCAL7": "log/syslog", - "syslog.LOG_LPR": "log/syslog", - "syslog.LOG_MAIL": "log/syslog", - "syslog.LOG_NEWS": "log/syslog", - "syslog.LOG_NOTICE": "log/syslog", - "syslog.LOG_SYSLOG": "log/syslog", - "syslog.LOG_USER": "log/syslog", - "syslog.LOG_UUCP": "log/syslog", - "syslog.LOG_WARNING": "log/syslog", - "syslog.New": "log/syslog", - "syslog.NewLogger": "log/syslog", - "syslog.Priority": "log/syslog", - "syslog.Writer": "log/syslog", - "tabwriter.AlignRight": "text/tabwriter", - "tabwriter.Debug": "text/tabwriter", - "tabwriter.DiscardEmptyColumns": "text/tabwriter", - "tabwriter.Escape": "text/tabwriter", - "tabwriter.FilterHTML": "text/tabwriter", - "tabwriter.NewWriter": "text/tabwriter", - "tabwriter.StripEscape": "text/tabwriter", - "tabwriter.TabIndent": "text/tabwriter", - "tabwriter.Writer": "text/tabwriter", - "tar.ErrFieldTooLong": "archive/tar", - "tar.ErrHeader": "archive/tar", - "tar.ErrWriteAfterClose": "archive/tar", - "tar.ErrWriteTooLong": "archive/tar", - "tar.FileInfoHeader": "archive/tar", - "tar.Header": "archive/tar", - "tar.NewReader": "archive/tar", - "tar.NewWriter": "archive/tar", - "tar.Reader": "archive/tar", - "tar.TypeBlock": "archive/tar", - "tar.TypeChar": "archive/tar", - "tar.TypeCont": "archive/tar", - "tar.TypeDir": "archive/tar", - "tar.TypeFifo": "archive/tar", - "tar.TypeGNULongLink": "archive/tar", - "tar.TypeGNULongName": "archive/tar", - "tar.TypeGNUSparse": "archive/tar", - "tar.TypeLink": "archive/tar", - "tar.TypeReg": "archive/tar", - "tar.TypeRegA": "archive/tar", - "tar.TypeSymlink": "archive/tar", - "tar.TypeXGlobalHeader": "archive/tar", - "tar.TypeXHeader": "archive/tar", - "tar.Writer": "archive/tar", - "template.CSS": "html/template", - "template.ErrAmbigContext": "html/template", - "template.ErrBadHTML": "html/template", - "template.ErrBranchEnd": "html/template", - "template.ErrEndContext": "html/template", - "template.ErrNoSuchTemplate": "html/template", - "template.ErrOutputContext": "html/template", - "template.ErrPartialCharset": "html/template", - "template.ErrPartialEscape": "html/template", - "template.ErrPredefinedEscaper": "html/template", - "template.ErrRangeLoopReentry": "html/template", - "template.ErrSlashAmbig": "html/template", - "template.Error": "html/template", - "template.ErrorCode": "html/template", - "template.ExecError": "text/template", - // "template.FuncMap" is ambiguous - "template.HTML": "html/template", - "template.HTMLAttr": "html/template", - // "template.HTMLEscape" is ambiguous - // "template.HTMLEscapeString" is ambiguous - // "template.HTMLEscaper" is ambiguous - // "template.IsTrue" is ambiguous - "template.JS": "html/template", - // "template.JSEscape" is ambiguous - // "template.JSEscapeString" is ambiguous - // "template.JSEscaper" is ambiguous - "template.JSStr": "html/template", - // "template.Must" is ambiguous - // "template.New" is ambiguous - "template.OK": "html/template", - // "template.ParseFiles" is ambiguous - // "template.ParseGlob" is ambiguous - // "template.Template" is ambiguous - "template.URL": "html/template", - // "template.URLQueryEscaper" is ambiguous - "testing.AllocsPerRun": "testing", - "testing.B": "testing", - "testing.Benchmark": "testing", - "testing.BenchmarkResult": "testing", - "testing.Cover": "testing", - "testing.CoverBlock": "testing", - "testing.CoverMode": "testing", - "testing.Coverage": "testing", - "testing.InternalBenchmark": "testing", - "testing.InternalExample": "testing", - "testing.InternalTest": "testing", - "testing.M": "testing", - "testing.Main": "testing", - "testing.MainStart": "testing", - "testing.PB": "testing", - "testing.RegisterCover": "testing", - "testing.RunBenchmarks": "testing", - "testing.RunExamples": "testing", - "testing.RunTests": "testing", - "testing.Short": "testing", - "testing.T": "testing", - "testing.Verbose": "testing", - "textproto.CanonicalMIMEHeaderKey": "net/textproto", - "textproto.Conn": "net/textproto", - "textproto.Dial": "net/textproto", - "textproto.Error": "net/textproto", - "textproto.MIMEHeader": "net/textproto", - "textproto.NewConn": "net/textproto", - "textproto.NewReader": "net/textproto", - "textproto.NewWriter": "net/textproto", - "textproto.Pipeline": "net/textproto", - "textproto.ProtocolError": "net/textproto", - "textproto.Reader": "net/textproto", - "textproto.TrimBytes": "net/textproto", - "textproto.TrimString": "net/textproto", - "textproto.Writer": "net/textproto", - "time.ANSIC": "time", - "time.After": "time", - "time.AfterFunc": "time", - "time.April": "time", - "time.August": "time", - "time.Date": "time", - "time.December": "time", - "time.Duration": "time", - "time.February": "time", - "time.FixedZone": "time", - "time.Friday": "time", - "time.Hour": "time", - "time.January": "time", - "time.July": "time", - "time.June": "time", - "time.Kitchen": "time", - "time.LoadLocation": "time", - "time.Local": "time", - "time.Location": "time", - "time.March": "time", - "time.May": "time", - "time.Microsecond": "time", - "time.Millisecond": "time", - "time.Minute": "time", - "time.Monday": "time", - "time.Month": "time", - "time.Nanosecond": "time", - "time.NewTicker": "time", - "time.NewTimer": "time", - "time.November": "time", - "time.Now": "time", - "time.October": "time", - "time.Parse": "time", - "time.ParseDuration": "time", - "time.ParseError": "time", - "time.ParseInLocation": "time", - "time.RFC1123": "time", - "time.RFC1123Z": "time", - "time.RFC3339": "time", - "time.RFC3339Nano": "time", - "time.RFC822": "time", - "time.RFC822Z": "time", - "time.RFC850": "time", - "time.RubyDate": "time", - "time.Saturday": "time", - "time.Second": "time", - "time.September": "time", - "time.Since": "time", - "time.Sleep": "time", - "time.Stamp": "time", - "time.StampMicro": "time", - "time.StampMilli": "time", - "time.StampNano": "time", - "time.Sunday": "time", - "time.Thursday": "time", - "time.Tick": "time", - "time.Ticker": "time", - "time.Time": "time", - "time.Timer": "time", - "time.Tuesday": "time", - "time.UTC": "time", - "time.Unix": "time", - "time.UnixDate": "time", - "time.Until": "time", - "time.Wednesday": "time", - "time.Weekday": "time", - "tls.Certificate": "crypto/tls", - "tls.CertificateRequestInfo": "crypto/tls", - "tls.Client": "crypto/tls", - "tls.ClientAuthType": "crypto/tls", - "tls.ClientHelloInfo": "crypto/tls", - "tls.ClientSessionCache": "crypto/tls", - "tls.ClientSessionState": "crypto/tls", - "tls.Config": "crypto/tls", - "tls.Conn": "crypto/tls", - "tls.ConnectionState": "crypto/tls", - "tls.CurveID": "crypto/tls", - "tls.CurveP256": "crypto/tls", - "tls.CurveP384": "crypto/tls", - "tls.CurveP521": "crypto/tls", - "tls.Dial": "crypto/tls", - "tls.DialWithDialer": "crypto/tls", - "tls.ECDSAWithP256AndSHA256": "crypto/tls", - "tls.ECDSAWithP384AndSHA384": "crypto/tls", - "tls.ECDSAWithP521AndSHA512": "crypto/tls", - "tls.Listen": "crypto/tls", - "tls.LoadX509KeyPair": "crypto/tls", - "tls.NewLRUClientSessionCache": "crypto/tls", - "tls.NewListener": "crypto/tls", - "tls.NoClientCert": "crypto/tls", - "tls.PKCS1WithSHA1": "crypto/tls", - "tls.PKCS1WithSHA256": "crypto/tls", - "tls.PKCS1WithSHA384": "crypto/tls", - "tls.PKCS1WithSHA512": "crypto/tls", - "tls.PSSWithSHA256": "crypto/tls", - "tls.PSSWithSHA384": "crypto/tls", - "tls.PSSWithSHA512": "crypto/tls", - "tls.RecordHeaderError": "crypto/tls", - "tls.RenegotiateFreelyAsClient": "crypto/tls", - "tls.RenegotiateNever": "crypto/tls", - "tls.RenegotiateOnceAsClient": "crypto/tls", - "tls.RenegotiationSupport": "crypto/tls", - "tls.RequestClientCert": "crypto/tls", - "tls.RequireAndVerifyClientCert": "crypto/tls", - "tls.RequireAnyClientCert": "crypto/tls", - "tls.Server": "crypto/tls", - "tls.SignatureScheme": "crypto/tls", - "tls.TLS_ECDHE_ECDSA_WITH_AES_128_CBC_SHA": "crypto/tls", - "tls.TLS_ECDHE_ECDSA_WITH_AES_128_CBC_SHA256": "crypto/tls", - "tls.TLS_ECDHE_ECDSA_WITH_AES_128_GCM_SHA256": "crypto/tls", - "tls.TLS_ECDHE_ECDSA_WITH_AES_256_CBC_SHA": "crypto/tls", - "tls.TLS_ECDHE_ECDSA_WITH_AES_256_GCM_SHA384": "crypto/tls", - "tls.TLS_ECDHE_ECDSA_WITH_CHACHA20_POLY1305": "crypto/tls", - "tls.TLS_ECDHE_ECDSA_WITH_RC4_128_SHA": "crypto/tls", - "tls.TLS_ECDHE_RSA_WITH_3DES_EDE_CBC_SHA": "crypto/tls", - "tls.TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA": "crypto/tls", - "tls.TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA256": "crypto/tls", - "tls.TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256": "crypto/tls", - "tls.TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA": "crypto/tls", - "tls.TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384": "crypto/tls", - "tls.TLS_ECDHE_RSA_WITH_CHACHA20_POLY1305": "crypto/tls", - "tls.TLS_ECDHE_RSA_WITH_RC4_128_SHA": "crypto/tls", - "tls.TLS_FALLBACK_SCSV": "crypto/tls", - "tls.TLS_RSA_WITH_3DES_EDE_CBC_SHA": "crypto/tls", - "tls.TLS_RSA_WITH_AES_128_CBC_SHA": "crypto/tls", - "tls.TLS_RSA_WITH_AES_128_CBC_SHA256": "crypto/tls", - "tls.TLS_RSA_WITH_AES_128_GCM_SHA256": "crypto/tls", - "tls.TLS_RSA_WITH_AES_256_CBC_SHA": "crypto/tls", - "tls.TLS_RSA_WITH_AES_256_GCM_SHA384": "crypto/tls", - "tls.TLS_RSA_WITH_RC4_128_SHA": "crypto/tls", - "tls.VerifyClientCertIfGiven": "crypto/tls", - "tls.VersionSSL30": "crypto/tls", - "tls.VersionTLS10": "crypto/tls", - "tls.VersionTLS11": "crypto/tls", - "tls.VersionTLS12": "crypto/tls", - "tls.X25519": "crypto/tls", - "tls.X509KeyPair": "crypto/tls", - "token.ADD": "go/token", - "token.ADD_ASSIGN": "go/token", - "token.AND": "go/token", - "token.AND_ASSIGN": "go/token", - "token.AND_NOT": "go/token", - "token.AND_NOT_ASSIGN": "go/token", - "token.ARROW": "go/token", - "token.ASSIGN": "go/token", - "token.BREAK": "go/token", - "token.CASE": "go/token", - "token.CHAN": "go/token", - "token.CHAR": "go/token", - "token.COLON": "go/token", - "token.COMMA": "go/token", - "token.COMMENT": "go/token", - "token.CONST": "go/token", - "token.CONTINUE": "go/token", - "token.DEC": "go/token", - "token.DEFAULT": "go/token", - "token.DEFER": "go/token", - "token.DEFINE": "go/token", - "token.ELLIPSIS": "go/token", - "token.ELSE": "go/token", - "token.EOF": "go/token", - "token.EQL": "go/token", - "token.FALLTHROUGH": "go/token", - "token.FLOAT": "go/token", - "token.FOR": "go/token", - "token.FUNC": "go/token", - "token.File": "go/token", - "token.FileSet": "go/token", - "token.GEQ": "go/token", - "token.GO": "go/token", - "token.GOTO": "go/token", - "token.GTR": "go/token", - "token.HighestPrec": "go/token", - "token.IDENT": "go/token", - "token.IF": "go/token", - "token.ILLEGAL": "go/token", - "token.IMAG": "go/token", - "token.IMPORT": "go/token", - "token.INC": "go/token", - "token.INT": "go/token", - "token.INTERFACE": "go/token", - "token.LAND": "go/token", - "token.LBRACE": "go/token", - "token.LBRACK": "go/token", - "token.LEQ": "go/token", - "token.LOR": "go/token", - "token.LPAREN": "go/token", - "token.LSS": "go/token", - "token.Lookup": "go/token", - "token.LowestPrec": "go/token", - "token.MAP": "go/token", - "token.MUL": "go/token", - "token.MUL_ASSIGN": "go/token", - "token.NEQ": "go/token", - "token.NOT": "go/token", - "token.NewFileSet": "go/token", - "token.NoPos": "go/token", - "token.OR": "go/token", - "token.OR_ASSIGN": "go/token", - "token.PACKAGE": "go/token", - "token.PERIOD": "go/token", - "token.Pos": "go/token", - "token.Position": "go/token", - "token.QUO": "go/token", - "token.QUO_ASSIGN": "go/token", - "token.RANGE": "go/token", - "token.RBRACE": "go/token", - "token.RBRACK": "go/token", - "token.REM": "go/token", - "token.REM_ASSIGN": "go/token", - "token.RETURN": "go/token", - "token.RPAREN": "go/token", - "token.SELECT": "go/token", - "token.SEMICOLON": "go/token", - "token.SHL": "go/token", - "token.SHL_ASSIGN": "go/token", - "token.SHR": "go/token", - "token.SHR_ASSIGN": "go/token", - "token.STRING": "go/token", - "token.STRUCT": "go/token", - "token.SUB": "go/token", - "token.SUB_ASSIGN": "go/token", - "token.SWITCH": "go/token", - "token.TYPE": "go/token", - "token.Token": "go/token", - "token.UnaryPrec": "go/token", - "token.VAR": "go/token", - "token.XOR": "go/token", - "token.XOR_ASSIGN": "go/token", - "trace.Start": "runtime/trace", - "trace.Stop": "runtime/trace", - "types.Array": "go/types", - "types.AssertableTo": "go/types", - "types.AssignableTo": "go/types", - "types.Basic": "go/types", - "types.BasicInfo": "go/types", - "types.BasicKind": "go/types", - "types.Bool": "go/types", - "types.Builtin": "go/types", - "types.Byte": "go/types", - "types.Chan": "go/types", - "types.ChanDir": "go/types", - "types.Checker": "go/types", - "types.Comparable": "go/types", - "types.Complex128": "go/types", - "types.Complex64": "go/types", - "types.Config": "go/types", - "types.Const": "go/types", - "types.ConvertibleTo": "go/types", - "types.DefPredeclaredTestFuncs": "go/types", - "types.Default": "go/types", - "types.Error": "go/types", - "types.Eval": "go/types", - "types.ExprString": "go/types", - "types.FieldVal": "go/types", - "types.Float32": "go/types", - "types.Float64": "go/types", - "types.Func": "go/types", - "types.Id": "go/types", - "types.Identical": "go/types", - "types.IdenticalIgnoreTags": "go/types", - "types.Implements": "go/types", - "types.ImportMode": "go/types", - "types.Importer": "go/types", - "types.ImporterFrom": "go/types", - "types.Info": "go/types", - "types.Initializer": "go/types", - "types.Int": "go/types", - "types.Int16": "go/types", - "types.Int32": "go/types", - "types.Int64": "go/types", - "types.Int8": "go/types", - "types.Interface": "go/types", - "types.Invalid": "go/types", - "types.IsBoolean": "go/types", - "types.IsComplex": "go/types", - "types.IsConstType": "go/types", - "types.IsFloat": "go/types", - "types.IsInteger": "go/types", - "types.IsInterface": "go/types", - "types.IsNumeric": "go/types", - "types.IsOrdered": "go/types", - "types.IsString": "go/types", - "types.IsUnsigned": "go/types", - "types.IsUntyped": "go/types", - "types.Label": "go/types", - "types.LookupFieldOrMethod": "go/types", - "types.Map": "go/types", - "types.MethodExpr": "go/types", - "types.MethodSet": "go/types", - "types.MethodVal": "go/types", - "types.MissingMethod": "go/types", - "types.Named": "go/types", - "types.NewArray": "go/types", - "types.NewChan": "go/types", - "types.NewChecker": "go/types", - "types.NewConst": "go/types", - "types.NewField": "go/types", - "types.NewFunc": "go/types", - "types.NewInterface": "go/types", - "types.NewLabel": "go/types", - "types.NewMap": "go/types", - "types.NewMethodSet": "go/types", - "types.NewNamed": "go/types", - "types.NewPackage": "go/types", - "types.NewParam": "go/types", - "types.NewPkgName": "go/types", - "types.NewPointer": "go/types", - "types.NewScope": "go/types", - "types.NewSignature": "go/types", - "types.NewSlice": "go/types", - "types.NewStruct": "go/types", - "types.NewTuple": "go/types", - "types.NewTypeName": "go/types", - "types.NewVar": "go/types", - "types.Nil": "go/types", - "types.ObjectString": "go/types", - "types.Package": "go/types", - "types.PkgName": "go/types", - "types.Pointer": "go/types", - "types.Qualifier": "go/types", - "types.RecvOnly": "go/types", - "types.RelativeTo": "go/types", - "types.Rune": "go/types", - "types.Scope": "go/types", - "types.Selection": "go/types", - "types.SelectionKind": "go/types", - "types.SelectionString": "go/types", - "types.SendOnly": "go/types", - "types.SendRecv": "go/types", - "types.Signature": "go/types", - "types.Sizes": "go/types", - "types.SizesFor": "go/types", - "types.Slice": "go/types", - "types.StdSizes": "go/types", - "types.String": "go/types", - "types.Struct": "go/types", - "types.Tuple": "go/types", - "types.Typ": "go/types", - "types.Type": "go/types", - "types.TypeAndValue": "go/types", - "types.TypeName": "go/types", - "types.TypeString": "go/types", - "types.Uint": "go/types", - "types.Uint16": "go/types", - "types.Uint32": "go/types", - "types.Uint64": "go/types", - "types.Uint8": "go/types", - "types.Uintptr": "go/types", - "types.Universe": "go/types", - "types.Unsafe": "go/types", - "types.UnsafePointer": "go/types", - "types.UntypedBool": "go/types", - "types.UntypedComplex": "go/types", - "types.UntypedFloat": "go/types", - "types.UntypedInt": "go/types", - "types.UntypedNil": "go/types", - "types.UntypedRune": "go/types", - "types.UntypedString": "go/types", - "types.Var": "go/types", - "types.WriteExpr": "go/types", - "types.WriteSignature": "go/types", - "types.WriteType": "go/types", - "unicode.ASCII_Hex_Digit": "unicode", - "unicode.Adlam": "unicode", - "unicode.Ahom": "unicode", - "unicode.Anatolian_Hieroglyphs": "unicode", - "unicode.Arabic": "unicode", - "unicode.Armenian": "unicode", - "unicode.Avestan": "unicode", - "unicode.AzeriCase": "unicode", - "unicode.Balinese": "unicode", - "unicode.Bamum": "unicode", - "unicode.Bassa_Vah": "unicode", - "unicode.Batak": "unicode", - "unicode.Bengali": "unicode", - "unicode.Bhaiksuki": "unicode", - "unicode.Bidi_Control": "unicode", - "unicode.Bopomofo": "unicode", - "unicode.Brahmi": "unicode", - "unicode.Braille": "unicode", - "unicode.Buginese": "unicode", - "unicode.Buhid": "unicode", - "unicode.C": "unicode", - "unicode.Canadian_Aboriginal": "unicode", - "unicode.Carian": "unicode", - "unicode.CaseRange": "unicode", - "unicode.CaseRanges": "unicode", - "unicode.Categories": "unicode", - "unicode.Caucasian_Albanian": "unicode", - "unicode.Cc": "unicode", - "unicode.Cf": "unicode", - "unicode.Chakma": "unicode", - "unicode.Cham": "unicode", - "unicode.Cherokee": "unicode", - "unicode.Co": "unicode", - "unicode.Common": "unicode", - "unicode.Coptic": "unicode", - "unicode.Cs": "unicode", - "unicode.Cuneiform": "unicode", - "unicode.Cypriot": "unicode", - "unicode.Cyrillic": "unicode", - "unicode.Dash": "unicode", - "unicode.Deprecated": "unicode", - "unicode.Deseret": "unicode", - "unicode.Devanagari": "unicode", - "unicode.Diacritic": "unicode", - "unicode.Digit": "unicode", - "unicode.Duployan": "unicode", - "unicode.Egyptian_Hieroglyphs": "unicode", - "unicode.Elbasan": "unicode", - "unicode.Ethiopic": "unicode", - "unicode.Extender": "unicode", - "unicode.FoldCategory": "unicode", - "unicode.FoldScript": "unicode", - "unicode.Georgian": "unicode", - "unicode.Glagolitic": "unicode", - "unicode.Gothic": "unicode", - "unicode.Grantha": "unicode", - "unicode.GraphicRanges": "unicode", - "unicode.Greek": "unicode", - "unicode.Gujarati": "unicode", - "unicode.Gurmukhi": "unicode", - "unicode.Han": "unicode", - "unicode.Hangul": "unicode", - "unicode.Hanunoo": "unicode", - "unicode.Hatran": "unicode", - "unicode.Hebrew": "unicode", - "unicode.Hex_Digit": "unicode", - "unicode.Hiragana": "unicode", - "unicode.Hyphen": "unicode", - "unicode.IDS_Binary_Operator": "unicode", - "unicode.IDS_Trinary_Operator": "unicode", - "unicode.Ideographic": "unicode", - "unicode.Imperial_Aramaic": "unicode", - "unicode.In": "unicode", - "unicode.Inherited": "unicode", - "unicode.Inscriptional_Pahlavi": "unicode", - "unicode.Inscriptional_Parthian": "unicode", - "unicode.Is": "unicode", - "unicode.IsControl": "unicode", - "unicode.IsDigit": "unicode", - "unicode.IsGraphic": "unicode", - "unicode.IsLetter": "unicode", - "unicode.IsLower": "unicode", - "unicode.IsMark": "unicode", - "unicode.IsNumber": "unicode", - "unicode.IsOneOf": "unicode", - "unicode.IsPrint": "unicode", - "unicode.IsPunct": "unicode", - "unicode.IsSpace": "unicode", - "unicode.IsSymbol": "unicode", - "unicode.IsTitle": "unicode", - "unicode.IsUpper": "unicode", - "unicode.Javanese": "unicode", - "unicode.Join_Control": "unicode", - "unicode.Kaithi": "unicode", - "unicode.Kannada": "unicode", - "unicode.Katakana": "unicode", - "unicode.Kayah_Li": "unicode", - "unicode.Kharoshthi": "unicode", - "unicode.Khmer": "unicode", - "unicode.Khojki": "unicode", - "unicode.Khudawadi": "unicode", - "unicode.L": "unicode", - "unicode.Lao": "unicode", - "unicode.Latin": "unicode", - "unicode.Lepcha": "unicode", - "unicode.Letter": "unicode", - "unicode.Limbu": "unicode", - "unicode.Linear_A": "unicode", - "unicode.Linear_B": "unicode", - "unicode.Lisu": "unicode", - "unicode.Ll": "unicode", - "unicode.Lm": "unicode", - "unicode.Lo": "unicode", - "unicode.Logical_Order_Exception": "unicode", - "unicode.Lower": "unicode", - "unicode.LowerCase": "unicode", - "unicode.Lt": "unicode", - "unicode.Lu": "unicode", - "unicode.Lycian": "unicode", - "unicode.Lydian": "unicode", - "unicode.M": "unicode", - "unicode.Mahajani": "unicode", - "unicode.Malayalam": "unicode", - "unicode.Mandaic": "unicode", - "unicode.Manichaean": "unicode", - "unicode.Marchen": "unicode", - "unicode.Mark": "unicode", - "unicode.MaxASCII": "unicode", - "unicode.MaxCase": "unicode", - "unicode.MaxLatin1": "unicode", - "unicode.MaxRune": "unicode", - "unicode.Mc": "unicode", - "unicode.Me": "unicode", - "unicode.Meetei_Mayek": "unicode", - "unicode.Mende_Kikakui": "unicode", - "unicode.Meroitic_Cursive": "unicode", - "unicode.Meroitic_Hieroglyphs": "unicode", - "unicode.Miao": "unicode", - "unicode.Mn": "unicode", - "unicode.Modi": "unicode", - "unicode.Mongolian": "unicode", - "unicode.Mro": "unicode", - "unicode.Multani": "unicode", - "unicode.Myanmar": "unicode", - "unicode.N": "unicode", - "unicode.Nabataean": "unicode", - "unicode.Nd": "unicode", - "unicode.New_Tai_Lue": "unicode", - "unicode.Newa": "unicode", - "unicode.Nko": "unicode", - "unicode.Nl": "unicode", - "unicode.No": "unicode", - "unicode.Noncharacter_Code_Point": "unicode", - "unicode.Number": "unicode", - "unicode.Ogham": "unicode", - "unicode.Ol_Chiki": "unicode", - "unicode.Old_Hungarian": "unicode", - "unicode.Old_Italic": "unicode", - "unicode.Old_North_Arabian": "unicode", - "unicode.Old_Permic": "unicode", - "unicode.Old_Persian": "unicode", - "unicode.Old_South_Arabian": "unicode", - "unicode.Old_Turkic": "unicode", - "unicode.Oriya": "unicode", - "unicode.Osage": "unicode", - "unicode.Osmanya": "unicode", - "unicode.Other": "unicode", - "unicode.Other_Alphabetic": "unicode", - "unicode.Other_Default_Ignorable_Code_Point": "unicode", - "unicode.Other_Grapheme_Extend": "unicode", - "unicode.Other_ID_Continue": "unicode", - "unicode.Other_ID_Start": "unicode", - "unicode.Other_Lowercase": "unicode", - "unicode.Other_Math": "unicode", - "unicode.Other_Uppercase": "unicode", - "unicode.P": "unicode", - "unicode.Pahawh_Hmong": "unicode", - "unicode.Palmyrene": "unicode", - "unicode.Pattern_Syntax": "unicode", - "unicode.Pattern_White_Space": "unicode", - "unicode.Pau_Cin_Hau": "unicode", - "unicode.Pc": "unicode", - "unicode.Pd": "unicode", - "unicode.Pe": "unicode", - "unicode.Pf": "unicode", - "unicode.Phags_Pa": "unicode", - "unicode.Phoenician": "unicode", - "unicode.Pi": "unicode", - "unicode.Po": "unicode", - "unicode.Prepended_Concatenation_Mark": "unicode", - "unicode.PrintRanges": "unicode", - "unicode.Properties": "unicode", - "unicode.Ps": "unicode", - "unicode.Psalter_Pahlavi": "unicode", - "unicode.Punct": "unicode", - "unicode.Quotation_Mark": "unicode", - "unicode.Radical": "unicode", - "unicode.Range16": "unicode", - "unicode.Range32": "unicode", - "unicode.RangeTable": "unicode", - "unicode.Rejang": "unicode", - "unicode.ReplacementChar": "unicode", - "unicode.Runic": "unicode", - "unicode.S": "unicode", - "unicode.STerm": "unicode", - "unicode.Samaritan": "unicode", - "unicode.Saurashtra": "unicode", - "unicode.Sc": "unicode", - "unicode.Scripts": "unicode", - "unicode.Sentence_Terminal": "unicode", - "unicode.Sharada": "unicode", - "unicode.Shavian": "unicode", - "unicode.Siddham": "unicode", - "unicode.SignWriting": "unicode", - "unicode.SimpleFold": "unicode", - "unicode.Sinhala": "unicode", - "unicode.Sk": "unicode", - "unicode.Sm": "unicode", - "unicode.So": "unicode", - "unicode.Soft_Dotted": "unicode", - "unicode.Sora_Sompeng": "unicode", - "unicode.Space": "unicode", - "unicode.SpecialCase": "unicode", - "unicode.Sundanese": "unicode", - "unicode.Syloti_Nagri": "unicode", - "unicode.Symbol": "unicode", - "unicode.Syriac": "unicode", - "unicode.Tagalog": "unicode", - "unicode.Tagbanwa": "unicode", - "unicode.Tai_Le": "unicode", - "unicode.Tai_Tham": "unicode", - "unicode.Tai_Viet": "unicode", - "unicode.Takri": "unicode", - "unicode.Tamil": "unicode", - "unicode.Tangut": "unicode", - "unicode.Telugu": "unicode", - "unicode.Terminal_Punctuation": "unicode", - "unicode.Thaana": "unicode", - "unicode.Thai": "unicode", - "unicode.Tibetan": "unicode", - "unicode.Tifinagh": "unicode", - "unicode.Tirhuta": "unicode", - "unicode.Title": "unicode", - "unicode.TitleCase": "unicode", - "unicode.To": "unicode", - "unicode.ToLower": "unicode", - "unicode.ToTitle": "unicode", - "unicode.ToUpper": "unicode", - "unicode.TurkishCase": "unicode", - "unicode.Ugaritic": "unicode", - "unicode.Unified_Ideograph": "unicode", - "unicode.Upper": "unicode", - "unicode.UpperCase": "unicode", - "unicode.UpperLower": "unicode", - "unicode.Vai": "unicode", - "unicode.Variation_Selector": "unicode", - "unicode.Version": "unicode", - "unicode.Warang_Citi": "unicode", - "unicode.White_Space": "unicode", - "unicode.Yi": "unicode", - "unicode.Z": "unicode", - "unicode.Zl": "unicode", - "unicode.Zp": "unicode", - "unicode.Zs": "unicode", - "url.Error": "net/url", - "url.EscapeError": "net/url", - "url.InvalidHostError": "net/url", - "url.Parse": "net/url", - "url.ParseQuery": "net/url", - "url.ParseRequestURI": "net/url", - "url.PathEscape": "net/url", - "url.PathUnescape": "net/url", - "url.QueryEscape": "net/url", - "url.QueryUnescape": "net/url", - "url.URL": "net/url", - "url.User": "net/url", - "url.UserPassword": "net/url", - "url.Userinfo": "net/url", - "url.Values": "net/url", - "user.Current": "os/user", - "user.Group": "os/user", - "user.Lookup": "os/user", - "user.LookupGroup": "os/user", - "user.LookupGroupId": "os/user", - "user.LookupId": "os/user", - "user.UnknownGroupError": "os/user", - "user.UnknownGroupIdError": "os/user", - "user.UnknownUserError": "os/user", - "user.UnknownUserIdError": "os/user", - "user.User": "os/user", - "utf16.Decode": "unicode/utf16", - "utf16.DecodeRune": "unicode/utf16", - "utf16.Encode": "unicode/utf16", - "utf16.EncodeRune": "unicode/utf16", - "utf16.IsSurrogate": "unicode/utf16", - "utf8.DecodeLastRune": "unicode/utf8", - "utf8.DecodeLastRuneInString": "unicode/utf8", - "utf8.DecodeRune": "unicode/utf8", - "utf8.DecodeRuneInString": "unicode/utf8", - "utf8.EncodeRune": "unicode/utf8", - "utf8.FullRune": "unicode/utf8", - "utf8.FullRuneInString": "unicode/utf8", - "utf8.MaxRune": "unicode/utf8", - "utf8.RuneCount": "unicode/utf8", - "utf8.RuneCountInString": "unicode/utf8", - "utf8.RuneError": "unicode/utf8", - "utf8.RuneLen": "unicode/utf8", - "utf8.RuneSelf": "unicode/utf8", - "utf8.RuneStart": "unicode/utf8", - "utf8.UTFMax": "unicode/utf8", - "utf8.Valid": "unicode/utf8", - "utf8.ValidRune": "unicode/utf8", - "utf8.ValidString": "unicode/utf8", - "x509.CANotAuthorizedForThisName": "crypto/x509", - "x509.CertPool": "crypto/x509", - "x509.Certificate": "crypto/x509", - "x509.CertificateInvalidError": "crypto/x509", - "x509.CertificateRequest": "crypto/x509", - "x509.ConstraintViolationError": "crypto/x509", - "x509.CreateCertificate": "crypto/x509", - "x509.CreateCertificateRequest": "crypto/x509", - "x509.DSA": "crypto/x509", - "x509.DSAWithSHA1": "crypto/x509", - "x509.DSAWithSHA256": "crypto/x509", - "x509.DecryptPEMBlock": "crypto/x509", - "x509.ECDSA": "crypto/x509", - "x509.ECDSAWithSHA1": "crypto/x509", - "x509.ECDSAWithSHA256": "crypto/x509", - "x509.ECDSAWithSHA384": "crypto/x509", - "x509.ECDSAWithSHA512": "crypto/x509", - "x509.EncryptPEMBlock": "crypto/x509", - "x509.ErrUnsupportedAlgorithm": "crypto/x509", - "x509.Expired": "crypto/x509", - "x509.ExtKeyUsage": "crypto/x509", - "x509.ExtKeyUsageAny": "crypto/x509", - "x509.ExtKeyUsageClientAuth": "crypto/x509", - "x509.ExtKeyUsageCodeSigning": "crypto/x509", - "x509.ExtKeyUsageEmailProtection": "crypto/x509", - "x509.ExtKeyUsageIPSECEndSystem": "crypto/x509", - "x509.ExtKeyUsageIPSECTunnel": "crypto/x509", - "x509.ExtKeyUsageIPSECUser": "crypto/x509", - "x509.ExtKeyUsageMicrosoftServerGatedCrypto": "crypto/x509", - "x509.ExtKeyUsageNetscapeServerGatedCrypto": "crypto/x509", - "x509.ExtKeyUsageOCSPSigning": "crypto/x509", - "x509.ExtKeyUsageServerAuth": "crypto/x509", - "x509.ExtKeyUsageTimeStamping": "crypto/x509", - "x509.HostnameError": "crypto/x509", - "x509.IncompatibleUsage": "crypto/x509", - "x509.IncorrectPasswordError": "crypto/x509", - "x509.InsecureAlgorithmError": "crypto/x509", - "x509.InvalidReason": "crypto/x509", - "x509.IsEncryptedPEMBlock": "crypto/x509", - "x509.KeyUsage": "crypto/x509", - "x509.KeyUsageCRLSign": "crypto/x509", - "x509.KeyUsageCertSign": "crypto/x509", - "x509.KeyUsageContentCommitment": "crypto/x509", - "x509.KeyUsageDataEncipherment": "crypto/x509", - "x509.KeyUsageDecipherOnly": "crypto/x509", - "x509.KeyUsageDigitalSignature": "crypto/x509", - "x509.KeyUsageEncipherOnly": "crypto/x509", - "x509.KeyUsageKeyAgreement": "crypto/x509", - "x509.KeyUsageKeyEncipherment": "crypto/x509", - "x509.MD2WithRSA": "crypto/x509", - "x509.MD5WithRSA": "crypto/x509", - "x509.MarshalECPrivateKey": "crypto/x509", - "x509.MarshalPKCS1PrivateKey": "crypto/x509", - "x509.MarshalPKIXPublicKey": "crypto/x509", - "x509.NameMismatch": "crypto/x509", - "x509.NewCertPool": "crypto/x509", - "x509.NotAuthorizedToSign": "crypto/x509", - "x509.PEMCipher": "crypto/x509", - "x509.PEMCipher3DES": "crypto/x509", - "x509.PEMCipherAES128": "crypto/x509", - "x509.PEMCipherAES192": "crypto/x509", - "x509.PEMCipherAES256": "crypto/x509", - "x509.PEMCipherDES": "crypto/x509", - "x509.ParseCRL": "crypto/x509", - "x509.ParseCertificate": "crypto/x509", - "x509.ParseCertificateRequest": "crypto/x509", - "x509.ParseCertificates": "crypto/x509", - "x509.ParseDERCRL": "crypto/x509", - "x509.ParseECPrivateKey": "crypto/x509", - "x509.ParsePKCS1PrivateKey": "crypto/x509", - "x509.ParsePKCS8PrivateKey": "crypto/x509", - "x509.ParsePKIXPublicKey": "crypto/x509", - "x509.PublicKeyAlgorithm": "crypto/x509", - "x509.RSA": "crypto/x509", - "x509.SHA1WithRSA": "crypto/x509", - "x509.SHA256WithRSA": "crypto/x509", - "x509.SHA256WithRSAPSS": "crypto/x509", - "x509.SHA384WithRSA": "crypto/x509", - "x509.SHA384WithRSAPSS": "crypto/x509", - "x509.SHA512WithRSA": "crypto/x509", - "x509.SHA512WithRSAPSS": "crypto/x509", - "x509.SignatureAlgorithm": "crypto/x509", - "x509.SystemCertPool": "crypto/x509", - "x509.SystemRootsError": "crypto/x509", - "x509.TooManyIntermediates": "crypto/x509", - "x509.UnhandledCriticalExtension": "crypto/x509", - "x509.UnknownAuthorityError": "crypto/x509", - "x509.UnknownPublicKeyAlgorithm": "crypto/x509", - "x509.UnknownSignatureAlgorithm": "crypto/x509", - "x509.VerifyOptions": "crypto/x509", - "xml.Attr": "encoding/xml", - "xml.CharData": "encoding/xml", - "xml.Comment": "encoding/xml", - "xml.CopyToken": "encoding/xml", - "xml.Decoder": "encoding/xml", - "xml.Directive": "encoding/xml", - "xml.Encoder": "encoding/xml", - "xml.EndElement": "encoding/xml", - "xml.Escape": "encoding/xml", - "xml.EscapeText": "encoding/xml", - "xml.HTMLAutoClose": "encoding/xml", - "xml.HTMLEntity": "encoding/xml", - "xml.Header": "encoding/xml", - "xml.Marshal": "encoding/xml", - "xml.MarshalIndent": "encoding/xml", - "xml.Marshaler": "encoding/xml", - "xml.MarshalerAttr": "encoding/xml", - "xml.Name": "encoding/xml", - "xml.NewDecoder": "encoding/xml", - "xml.NewEncoder": "encoding/xml", - "xml.ProcInst": "encoding/xml", - "xml.StartElement": "encoding/xml", - "xml.SyntaxError": "encoding/xml", - "xml.TagPathError": "encoding/xml", - "xml.Token": "encoding/xml", - "xml.Unmarshal": "encoding/xml", - "xml.UnmarshalError": "encoding/xml", - "xml.Unmarshaler": "encoding/xml", - "xml.UnmarshalerAttr": "encoding/xml", - "xml.UnsupportedTypeError": "encoding/xml", - "zip.Compressor": "archive/zip", - "zip.Decompressor": "archive/zip", - "zip.Deflate": "archive/zip", - "zip.ErrAlgorithm": "archive/zip", - "zip.ErrChecksum": "archive/zip", - "zip.ErrFormat": "archive/zip", - "zip.File": "archive/zip", - "zip.FileHeader": "archive/zip", - "zip.FileInfoHeader": "archive/zip", - "zip.NewReader": "archive/zip", - "zip.NewWriter": "archive/zip", - "zip.OpenReader": "archive/zip", - "zip.ReadCloser": "archive/zip", - "zip.Reader": "archive/zip", - "zip.RegisterCompressor": "archive/zip", - "zip.RegisterDecompressor": "archive/zip", - "zip.Store": "archive/zip", - "zip.Writer": "archive/zip", - "zlib.BestCompression": "compress/zlib", - "zlib.BestSpeed": "compress/zlib", - "zlib.DefaultCompression": "compress/zlib", - "zlib.ErrChecksum": "compress/zlib", - "zlib.ErrDictionary": "compress/zlib", - "zlib.ErrHeader": "compress/zlib", - "zlib.HuffmanOnly": "compress/zlib", - "zlib.NewReader": "compress/zlib", - "zlib.NewReaderDict": "compress/zlib", - "zlib.NewWriter": "compress/zlib", - "zlib.NewWriterLevel": "compress/zlib", - "zlib.NewWriterLevelDict": "compress/zlib", - "zlib.NoCompression": "compress/zlib", - "zlib.Resetter": "compress/zlib", - "zlib.Writer": "compress/zlib", -} diff --git a/vendor/github.com/visualfc/gotools/terminal/command.go b/vendor/github.com/visualfc/gotools/terminal/command.go deleted file mode 100644 index 32e8253..0000000 --- a/vendor/github.com/visualfc/gotools/terminal/command.go +++ /dev/null @@ -1,33 +0,0 @@ -// +build !windows - -package terminal - -import ( - "io" - "os" - "os/exec" - - "github.com/kr/pty" -) - -func GetShell() (cmd string, args []string) { - return "/bin/sh", []string{"-l", "-i"} -} - -func Execute(c *exec.Cmd) error { - f, err := pty.Start(c) - if err != nil { - return nil - } - go func() { - for { - io.Copy(f, os.Stdin) - } - }() - go func() { - for { - io.Copy(os.Stdout, f) - } - }() - return c.Wait() -} diff --git a/vendor/github.com/visualfc/gotools/terminal/command_windows.go b/vendor/github.com/visualfc/gotools/terminal/command_windows.go deleted file mode 100644 index 18bc5f6..0000000 --- a/vendor/github.com/visualfc/gotools/terminal/command_windows.go +++ /dev/null @@ -1,34 +0,0 @@ -// +build windows - -package terminal - -import ( - "os" - "os/exec" -) - -func checkFiles(names ...string) string { - for _, name := range names { - _, err := os.Stat(name) - if err == nil { - return name - } - } - return "" -} - -func GetShell() (cmd string, args []string) { - windir := os.Getenv("windir") - if windir == "" { - windir = "c:\\windows" - } - cmd = checkFiles(windir+"\\Sysnative\\cmd.exe", windir+"\\System32\\cmd.exe") - return -} - -func Execute(c *exec.Cmd) error { - c.Stdin = os.Stdin - c.Stdout = os.Stdout - c.Stderr = os.Stderr - return c.Run() -} diff --git a/vendor/github.com/visualfc/gotools/terminal/terminal.go b/vendor/github.com/visualfc/gotools/terminal/terminal.go deleted file mode 100644 index 8138a49..0000000 --- a/vendor/github.com/visualfc/gotools/terminal/terminal.go +++ /dev/null @@ -1,39 +0,0 @@ -// Copyright 2011-2017 visualfc . All rights reserved. -// Use of this source code is governed by a BSD-style -// license that can be found in the LICENSE file. -package terminal - -import ( - "os" - "os/exec" - - "github.com/visualfc/gotools/command" -) - -var Command = &command.Command{ - Run: runTerminal, - UsageLine: "terminal [program_name arguments...]", - Short: "terminal [program]", - Long: `terminal program and arguments`, - CustomFlags: true, -} - -func runTerminal(cmd *command.Command, args []string) (err error) { - var c *exec.Cmd - if len(args) >= 1 { - var carg []string - if len(args) >= 2 { - carg = append(carg, args[1:]...) - } - c = exec.Command(args[0], carg...) - } else { - shellCmd, shellArgs := GetShell() - c = exec.Command(shellCmd, shellArgs...) - } - if c == nil { - return os.ErrInvalid - } - err = Execute(c) - - return -} diff --git a/vendor/github.com/visualfc/gotools/types/types.go b/vendor/github.com/visualfc/gotools/types/types.go deleted file mode 100644 index d7f5575..0000000 --- a/vendor/github.com/visualfc/gotools/types/types.go +++ /dev/null @@ -1,1279 +0,0 @@ -// Copyright 2011-2015 visualfc . All rights reserved. -// Use of this source code is governed by a BSD-style -// license that can be found in the LICENSE file. - -package types - -import ( - "bytes" - "fmt" - "go/ast" - "go/build" - "go/importer" - "go/parser" - "go/printer" - "go/token" - "go/types" - "io/ioutil" - "log" - "os" - "path/filepath" - "regexp" - "sort" - "strconv" - "strings" - "time" - - "github.com/visualfc/gotools/command" - "github.com/visualfc/gotools/pkgutil" - "github.com/visualfc/gotools/stdlib" - "golang.org/x/tools/go/buildutil" -) - -var Command = &command.Command{ - Run: runTypes, - UsageLine: "types", - Short: "golang type util", - Long: `golang type util`, -} - -var ( - typesVerbose bool - typesAllowBinary bool - typesFilePos string - typesFileStdin bool - typesFindUse bool - typesFindDef bool - typesFindUseAll bool - typesFindInfo bool - typesFindDoc bool - typesTags string - typesTagList = []string{} // exploded version of tags flag; set in main -) - -//func init -func init() { - Command.Flag.BoolVar(&typesVerbose, "v", false, "verbose debugging") - Command.Flag.BoolVar(&typesAllowBinary, "b", false, "import can be satisfied by a compiled package object without corresponding sources.") - Command.Flag.StringVar(&typesFilePos, "pos", "", "file position \"file.go:pos\"") - Command.Flag.BoolVar(&typesFileStdin, "stdin", false, "input file use stdin") - Command.Flag.BoolVar(&typesFindInfo, "info", false, "find cursor info") - Command.Flag.BoolVar(&typesFindDef, "def", false, "find cursor define") - Command.Flag.BoolVar(&typesFindUse, "use", false, "find cursor usages") - Command.Flag.BoolVar(&typesFindUseAll, "all", false, "find cursor all usages in GOPATH") - Command.Flag.BoolVar(&typesFindDoc, "doc", false, "find cursor def doc") - Command.Flag.StringVar(&typesTags, "tags", "", "space-separated list of build tags to apply when parsing") -} - -type ObjKind int - -const ( - ObjNone ObjKind = iota - ObjPkgName - ObjTypeName - ObjInterface - ObjStruct - ObjConst - ObjVar - ObjField - ObjFunc - ObjMethod - ObjLabel - ObjBuiltin - ObjNil - ObjImplicit - ObjUnknown - ObjComment -) - -var ObjKindName = []string{"none", "package", - "type", "interface", "struct", - "const", "var", "field", - "func", "method", - "label", "builtin", "nil", - "implicit", "unknown", "comment"} - -func (k ObjKind) String() string { - if k >= 0 && int(k) < len(ObjKindName) { - return ObjKindName[k] - } - return "unkwnown" -} - -var builtinInfoMap = map[string]string{ - "append": "func append(slice []Type, elems ...Type) []Type", - "copy": "func copy(dst, src []Type) int", - "delete": "func delete(m map[Type]Type1, key Type)", - "len": "func len(v Type) int", - "cap": "func cap(v Type) int", - "make": "func make(Type, size IntegerType) Type", - "new": "func new(Type) *Type", - "complex": "func complex(r, i FloatType) ComplexType", - "real": "func real(c ComplexType) FloatType", - "imag": "func imag(c ComplexType) FloatType", - "close": "func close(c chan<- Type)", - "panic": "func panic(v interface{})", - "recover": "func recover() interface{}", - "print": "func print(args ...Type)", - "println": "func println(args ...Type)", - "error": "type error interface {Error() string}", - "Sizeof": "func unsafe.Sizeof(any) uintptr", - "Offsetof": "func unsafe.Offsetof(any) uintptr", - "Alignof": "func unsafe.Alignof(any) uintptr", -} - -func builtinInfo(id string) string { - if info, ok := builtinInfoMap[id]; ok { - return "builtin " + info - } - return "builtin " + id -} - -func simpleObjInfo(obj types.Object) string { - s := obj.String() - pkg := obj.Pkg() - if pkg != nil { - s = strings.Replace(s, pkg.Path(), pkg.Name(), -1) - s = simpleType(s) - if pkg.Name() == "main" { - s = strings.Replace(s, "main.", "", -1) - } - } - return s -} - -func simpleType(src string) string { - re, _ := regexp.Compile("[\\w\\./]+") - return re.ReplaceAllStringFunc(src, func(s string) string { - r := s - if i := strings.LastIndex(s, "/"); i != -1 { - r = s[i+1:] - } - if strings.Count(r, ".") > 1 { - r = r[strings.Index(r, ".")+1:] - } - return r - }) -} - -func runTypes(cmd *command.Command, args []string) error { - if len(args) < 1 { - cmd.Usage() - return nil - } - if typesVerbose { - now := time.Now() - defer func() { - log.Println("time", time.Now().Sub(now)) - }() - } - typesTagList = strings.Split(typesTags, " ") - context := build.Default - context.BuildTags = append(typesTagList, context.BuildTags...) - - w := NewPkgWalker(&context) - var cursor *FileCursor - if typesFilePos != "" { - var cursorInfo FileCursor - pos := strings.Index(typesFilePos, ":") - if pos != -1 { - cursorInfo.fileName = typesFilePos[:pos] - if i, err := strconv.Atoi(typesFilePos[pos+1:]); err == nil { - cursorInfo.cursorPos = i - } - } - if typesFileStdin { - src, err := ioutil.ReadAll(os.Stdin) - if err == nil { - cursorInfo.src = src - } - } - cursor = &cursorInfo - } - w.cursor = cursor - for _, pkgName := range args { - if pkgName == "." { - pkgPath, err := os.Getwd() - if err != nil { - log.Fatalln(err) - } - pkgName = pkgPath - } - conf := &PkgConfig{IgnoreFuncBodies: true, AllowBinary: true, WithTestFiles: true} - if cursor != nil { - cursor.pkgName = pkgName - conf.Cursor = cursor - conf.IgnoreFuncBodies = false - conf.Info = &types.Info{ - Uses: make(map[*ast.Ident]types.Object), - Defs: make(map[*ast.Ident]types.Object), - Selections: make(map[*ast.SelectorExpr]*types.Selection), - //Types: make(map[ast.Expr]types.TypeAndValue), - //Scopes : make(map[ast.Node]*types.Scope) - //Implicits : make(map[ast.Node]types.Object) - } - conf.XInfo = &types.Info{ - Uses: make(map[*ast.Ident]types.Object), - Defs: make(map[*ast.Ident]types.Object), - Selections: make(map[*ast.SelectorExpr]*types.Selection), - } - } - pkg, err := w.Import("", pkgName, conf) - if pkg == nil { - log.Fatalln("error import path", err) - } - if cursor != nil && (typesFindInfo || typesFindDef || typesFindUse) { - w.LookupCursor(pkg, conf, cursor) - } - } - return nil -} - -type FileCursor struct { - pkgName string - fileName string - fileDir string - cursorPos int - pos token.Pos - src interface{} - xtest bool -} - -type PkgConfig struct { - IgnoreFuncBodies bool - AllowBinary bool - WithTestFiles bool - Cursor *FileCursor - Pkg *types.Package - XPkg *types.Package - Info *types.Info - XInfo *types.Info - Files map[string]*ast.File - XTestFiles map[string]*ast.File -} - -func NewPkgWalker(context *build.Context) *PkgWalker { - return &PkgWalker{ - context: context, - fset: token.NewFileSet(), - parsedFileCache: map[string]*ast.File{}, - importingName: map[string]bool{}, - imported: map[string]*types.Package{"unsafe": types.Unsafe}, - gcimported: importer.Default(), - } -} - -type PkgWalker struct { - fset *token.FileSet - context *build.Context - current *types.Package - importingName map[string]bool - parsedFileCache map[string]*ast.File - imported map[string]*types.Package // packages already imported - gcimported types.Importer - cursor *FileCursor - //importing types.Package -} - -func contains(list []string, s string) bool { - for _, t := range list { - if t == s { - return true - } - } - return false -} - -func (w *PkgWalker) isBinaryPkg(pkg string) bool { - return stdlib.IsStdPkg(pkg) -} - -func (w *PkgWalker) importPath(path string, mode build.ImportMode) (*build.Package, error) { - if filepath.IsAbs(path) { - return w.context.ImportDir(path, 0) - } - if stdlib.IsStdPkg(path) { - return stdlib.ImportStdPkg(w.context, path, mode) - } - return w.context.Import(path, "", mode) -} - -func (w *PkgWalker) Import(parentDir string, name string, conf *PkgConfig) (pkg *types.Package, err error) { - defer func() { - err := recover() - if err != nil && typesVerbose { - log.Println(err) - } - }() - - if parentDir != "" { - if strings.HasPrefix(name, ".") { - name = filepath.Join(parentDir, name) - } else if pkgutil.IsVendorExperiment() { - parentPkg := pkgutil.ImportDir(parentDir) - name = pkgutil.VendoredImportPath(parentPkg, name) - } - } - - pkg = w.imported[name] - if pkg != nil { - // if pkg == &w.importing { - // return nil, fmt.Errorf("cycle importing package %q", name) - // } - return pkg, nil - } - - if typesVerbose { - log.Println("parser pkg", parentDir, name) - } - - bp, err := w.importPath(name, 0) - if err != nil { - return nil, err - } - - checkName := name - - if bp.ImportPath == "." { - checkName = bp.Name - } else { - checkName = bp.ImportPath - } - - if w.importingName[checkName] { - return nil, fmt.Errorf("cycle importing package %q", name) - } - - w.importingName[checkName] = true - - // if err != nil { - // return nil, err - // //if _, nogo := err.(*build.NoGoError); nogo { - // // return - // //} - // //return - // //log.Fatalf("pkg %q, dir %q: ScanDir: %v", name, info.Dir, err) - // } - - GoFiles := append(append([]string{}, bp.GoFiles...), bp.CgoFiles...) - XTestFiles := append([]string{}, bp.XTestGoFiles...) - - if conf.WithTestFiles { - GoFiles = append(GoFiles, bp.TestGoFiles...) - } - - if name == "runtime" { - n := fmt.Sprintf("zgoos_%s.go", w.context.GOOS) - if !contains(GoFiles, n) { - GoFiles = append(GoFiles, n) - } - - n = fmt.Sprintf("zgoarch_%s.go", w.context.GOARCH) - if !contains(GoFiles, n) { - GoFiles = append(GoFiles, n) - } - } - - if conf.Cursor != nil && conf.Cursor.fileName != "" { - cursor := conf.Cursor - f, _ := w.parseFileEx(bp.Dir, cursor.fileName, cursor.src, true) - if f != nil { - cursor.pos = token.Pos(w.fset.File(f.Pos()).Base()) + token.Pos(cursor.cursorPos) - cursor.fileDir = bp.Dir - isTest := strings.HasSuffix(cursor.fileName, "_test.go") - isXTest := false - if isTest && strings.HasSuffix(f.Name.Name, "_test") { - isXTest = true - } - cursor.xtest = isXTest - checkAppend := func(filenames []string, file string) []string { - for _, f := range filenames { - if f == file { - return filenames - } - } - return append(filenames, file) - } - if isXTest { - XTestFiles = checkAppend(XTestFiles, cursor.fileName) - } else { - GoFiles = checkAppend(GoFiles, cursor.fileName) - } - } - } - - parserFiles := func(filenames []string, cursor *FileCursor, xtest bool) (files []*ast.File, fileMap map[string]*ast.File) { - fileMap = make(map[string]*ast.File) - for _, file := range filenames { - var f *ast.File - if cursor != nil && cursor.fileName == file { - f, err = w.parseFile(bp.Dir, file, cursor.src) - cursor.pos = token.Pos(w.fset.File(f.Pos()).Base()) + token.Pos(cursor.cursorPos) - cursor.fileDir = bp.Dir - cursor.xtest = xtest - } else { - f, err = w.parseFile(bp.Dir, file, nil) - } - if err != nil && typesVerbose { - log.Printf("error parsing package %s: %s\n", name, err) - } - files = append(files, f) - fileMap[file] = f - } - return - } - var files []*ast.File - var xfiles []*ast.File - files, conf.Files = parserFiles(GoFiles, conf.Cursor, false) - xfiles, conf.XTestFiles = parserFiles(bp.XTestGoFiles, conf.Cursor, true) - - typesConf := types.Config{ - IgnoreFuncBodies: conf.IgnoreFuncBodies, - FakeImportC: true, - Importer: &Importer{w, conf, bp.Dir}, - Error: func(err error) { - if typesVerbose { - log.Println(err) - } - }, - } - if pkg == nil { - pkg, err = typesConf.Check(checkName, w.fset, files, conf.Info) - conf.Pkg = pkg - } - w.importingName[checkName] = false - w.imported[name] = pkg - - if len(xfiles) > 0 { - xpkg, _ := typesConf.Check(checkName+"_test", w.fset, xfiles, conf.XInfo) - w.imported[checkName+"_test"] = xpkg - conf.XPkg = xpkg - } - return -} - -type Importer struct { - w *PkgWalker - conf *PkgConfig - dir string -} - -func (im *Importer) Import(name string) (pkg *types.Package, err error) { - if im.conf.AllowBinary && im.w.isBinaryPkg(name) { - pkg, err = im.w.gcimported.Import(name) - if pkg != nil && pkg.Complete() { - return - } - // pkg = im.w.gcimporter[name] - // if pkg != nil && pkg.Complete() { - // return - // } - // pkg, err = importer.Default().Import(name) - // if pkg != nil && pkg.Complete() { - // im.w.gcimporter[name] = pkg - // return - // } - } - return im.w.Import(im.dir, name, &PkgConfig{IgnoreFuncBodies: true, AllowBinary: true, WithTestFiles: false}) -} - -func (w *PkgWalker) parseFile(dir, file string, src interface{}) (*ast.File, error) { - return w.parseFileEx(dir, file, src, typesFindDoc) -} - -func (w *PkgWalker) parseFileEx(dir, file string, src interface{}, findDoc bool) (*ast.File, error) { - filename := filepath.Join(dir, file) - f, _ := w.parsedFileCache[filename] - if f != nil { - return f, nil - } - - var err error - - // generate missing context-dependent files. - if w.context != nil && file == fmt.Sprintf("zgoos_%s.go", w.context.GOOS) { - src := fmt.Sprintf("package runtime; const theGoos = `%s`", w.context.GOOS) - f, err = parser.ParseFile(w.fset, filename, src, 0) - if err != nil { - log.Fatalf("incorrect generated file: %s", err) - } - } - - if w.context != nil && file == fmt.Sprintf("zgoarch_%s.go", w.context.GOARCH) { - src := fmt.Sprintf("package runtime; const theGoarch = `%s`", w.context.GOARCH) - f, err = parser.ParseFile(w.fset, filename, src, 0) - if err != nil { - log.Fatalf("incorrect generated file: %s", err) - } - } - - if f == nil { - flag := parser.AllErrors - if findDoc { - flag |= parser.ParseComments - } - f, err = parser.ParseFile(w.fset, filename, src, flag) - if err != nil { - return f, err - } - } - - w.parsedFileCache[filename] = f - return f, nil -} - -func (w *PkgWalker) LookupCursor(pkg *types.Package, conf *PkgConfig, cursor *FileCursor) { - if nm := w.CheckIsName(cursor); nm != nil { - w.LookupName(pkg, conf, cursor, nm) - } else if is := w.CheckIsImport(cursor); is != nil { - if cursor.xtest { - w.LookupImport(conf.XPkg, conf.XInfo, cursor, is) - } else { - w.LookupImport(conf.Pkg, conf.Info, cursor, is) - } - } else { - w.LookupObjects(conf, cursor) - } -} - -func (w *PkgWalker) LookupName(pkg *types.Package, conf *PkgConfig, cursor *FileCursor, nm *ast.Ident) { - if typesFindDef { - fmt.Println(w.fset.Position(nm.Pos())) - } - if typesFindInfo { - if cursor.xtest { - fmt.Printf("package %s (%q)\n", pkg.Name()+"_test", pkg.Path()) - } else { - if pkg.Path() == pkg.Name() { - fmt.Printf("package %s\n", pkg.Name()) - } else { - fmt.Printf("package %s (%q)\n", pkg.Name(), pkg.Path()) - } - } - } - - if !typesFindUse { - return - } - var usages []int - findUsage := func(fileMap map[string]*ast.File) { - for _, f := range fileMap { - if f != nil && f.Name != nil && f.Name.Name == nm.Name { - usages = append(usages, int(f.Name.Pos())) - } - } - } - if cursor.xtest { - findUsage(conf.XTestFiles) - } else { - findUsage(conf.Files) - } - (sort.IntSlice(usages)).Sort() - for _, pos := range usages { - fmt.Println(w.fset.Position(token.Pos(pos))) - } -} - -func (w *PkgWalker) LookupImport(pkg *types.Package, pkgInfo *types.Info, cursor *FileCursor, is *ast.ImportSpec) { - fpath, err := strconv.Unquote(is.Path.Value) - if err != nil { - return - } - - if typesFindDef { - fmt.Println(w.fset.Position(is.Pos())) - } - - fbase := fpath - pos := strings.LastIndexAny(fpath, "./-\\") - if pos != -1 { - fbase = fpath[pos+1:] - } - - var fname string - if is.Name != nil { - fname = is.Name.Name - } else { - fname = fbase - } - - if typesFindInfo { - if fname == fpath { - fmt.Printf("package %s\n", fname) - } else { - fmt.Printf("package %s (%q)\n", fname, fpath) - } - } - - if !typesFindUse { - return - } - - fid := pkg.Path() + "." + fname - - var usages []int - for id, obj := range pkgInfo.Uses { - if obj != nil && obj.Id() == fid { //!= nil && cursorObj.Pos() == obj.Pos() { - if _, ok := obj.(*types.PkgName); ok { - usages = append(usages, int(id.Pos())) - } - } - } - (sort.IntSlice(usages)).Sort() - for _, pos := range usages { - fmt.Println(w.fset.Position(token.Pos(pos))) - } -} - -func testObjKind(obj types.Object, kind ObjKind) bool { - k, err := parserObjKind(obj) - if err != nil { - return false - } - return k == kind -} - -func parserObjKind(obj types.Object) (ObjKind, error) { - var kind ObjKind - switch t := obj.(type) { - case *types.PkgName: - kind = ObjPkgName - case *types.Const: - kind = ObjConst - case *types.TypeName: - kind = ObjTypeName - switch t.Type().Underlying().(type) { - case *types.Interface: - kind = ObjInterface - case *types.Struct: - kind = ObjStruct - } - case *types.Var: - kind = ObjVar - if t.IsField() { - kind = ObjField - } - case *types.Func: - kind = ObjFunc - if sig, ok := t.Type().(*types.Signature); ok { - if sig.Recv() != nil { - kind = ObjMethod - } - } - case *types.Label: - kind = ObjLabel - case *types.Builtin: - kind = ObjBuiltin - case *types.Nil: - kind = ObjNil - default: - return ObjNone, fmt.Errorf("unknown obj type %T", obj) - } - return kind, nil -} - -func (w *PkgWalker) LookupStructFromField(info *types.Info, cursorPkg *types.Package, cursorObj types.Object, cursorPos token.Pos) types.Object { - if info == nil { - conf := &PkgConfig{ - IgnoreFuncBodies: true, - AllowBinary: true, - WithTestFiles: true, - Info: &types.Info{ - Defs: make(map[*ast.Ident]types.Object), - }, - } - w.imported[cursorPkg.Path()] = nil - pkg, _ := w.Import("", cursorPkg.Path(), conf) - if pkg != nil { - info = conf.Info - } - } - for _, obj := range info.Defs { - if obj == nil { - continue - } - if _, ok := obj.(*types.TypeName); ok { - if t, ok := obj.Type().Underlying().(*types.Struct); ok { - for i := 0; i < t.NumFields(); i++ { - if t.Field(i).Pos() == cursorPos { - return obj - } - } - } - } - } - return nil -} - -func (w *PkgWalker) lookupNamedField(named *types.Named, name string) *types.Named { - if istruct, ok := named.Underlying().(*types.Struct); ok { - for i := 0; i < istruct.NumFields(); i++ { - field := istruct.Field(i) - if field.Anonymous() { - fieldType := orgType(field.Type()) - if typ, ok := fieldType.(*types.Named); ok { - if na := w.lookupNamedField(typ, name); na != nil { - return na - } - } - } else { - if field.Name() == name { - return named - } - } - } - } - return nil -} - -func (w *PkgWalker) lookupNamedMethod(named *types.Named, name string) (types.Object, *types.Named) { - if iface, ok := named.Underlying().(*types.Interface); ok { - for i := 0; i < iface.NumMethods(); i++ { - fn := iface.Method(i) - if fn.Name() == name { - return fn, named - } - } - for i := 0; i < iface.NumEmbeddeds(); i++ { - if obj, na := w.lookupNamedMethod(iface.Embedded(i), name); obj != nil { - return obj, na - } - } - return nil, nil - } - if istruct, ok := named.Underlying().(*types.Struct); ok { - for i := 0; i < named.NumMethods(); i++ { - fn := named.Method(i) - if fn.Name() == name { - return fn, named - } - } - for i := 0; i < istruct.NumFields(); i++ { - field := istruct.Field(i) - if !field.Anonymous() { - continue - } - if typ, ok := field.Type().(*types.Named); ok { - if obj, na := w.lookupNamedMethod(typ, name); obj != nil { - return obj, na - } - } - } - } - return nil, nil -} - -func IsSamePkg(a, b *types.Package) bool { - if a == b { - return true - } - if a == nil || b == nil { - return false - } - return a.Path() == b.Path() -} - -func IsSameObject(a, b types.Object) bool { - if a == b { - return true - } - if a == nil || b == nil { - return false - } - var apath string - var bpath string - if a.Pkg() != nil { - apath = a.Pkg().Path() - } - if b.Pkg() != nil { - bpath = b.Pkg().Path() - } - if apath != bpath { - return false - } - if a.Id() != b.Id() { - return false - } - if a.Type().String() != b.Type().String() { - return false - } - t1, ok1 := a.(*types.TypeName) - t2, ok2 := b.(*types.TypeName) - if ok1 && ok2 { - return t1.Type().String() == t2.Type().String() - } - return a.String() == b.String() -} - -func orgType(typ types.Type) types.Type { - if pt, ok := typ.(*types.Pointer); ok { - return pt.Elem() - } - return typ -} - -func (w *PkgWalker) LookupObjects(conf *PkgConfig, cursor *FileCursor) { - var cursorObj types.Object - var cursorSelection *types.Selection - var cursorObjIsDef bool - //lookup defs - - var pkg *types.Package - var pkgInfo *types.Info - if cursor.xtest { - pkgInfo = conf.XInfo - pkg = conf.XPkg - } else { - pkgInfo = conf.Info - pkg = conf.Pkg - } - - _ = cursorObjIsDef - if cursorObj == nil { - for sel, obj := range pkgInfo.Selections { - if cursor.pos >= sel.Sel.Pos() && cursor.pos <= sel.Sel.End() { - cursorObj = obj.Obj() - cursorSelection = obj - break - } - } - } - var cursorId *ast.Ident - if cursorObj == nil { - for id, obj := range pkgInfo.Defs { - if cursor.pos >= id.Pos() && cursor.pos <= id.End() { - cursorObj = obj - cursorId = id - cursorObjIsDef = true - break - } - } - } - _ = cursorSelection - if cursorObj == nil { - for id, obj := range pkgInfo.Uses { - if cursor.pos >= id.Pos() && cursor.pos <= id.End() { - cursorObj = obj - break - } - } - } - - var kind ObjKind - if cursorObj != nil { - var err error - kind, err = parserObjKind(cursorObj) - if err != nil { - log.Fatalln(err) - } - } else if cursorId != nil { - kind = ObjImplicit - } else { - return - } - - if kind == ObjField { - if cursorObj.(*types.Var).Anonymous() { - typ := orgType(cursorObj.Type()) - if named, ok := typ.(*types.Named); ok { - cursorObj = named.Obj() - } - } - } - - var cursorPkg *types.Package - var cursorPos token.Pos - - if cursorObj != nil { - cursorPkg = cursorObj.Pkg() - cursorPos = cursorObj.Pos() - } else { - cursorPkg = pkg - cursorPos = cursorId.Pos() - } - - //var fieldTypeInfo *types.Info - var fieldTypeObj types.Object - // if cursorPkg == pkg { - // fieldTypeInfo = pkgInfo - // } - cursorIsInterfaceMethod := false - var cursorInterfaceTypeName string - var cursorInterfaceTypeNamed *types.Named - - if kind == ObjMethod && cursorSelection != nil && cursorSelection.Recv() != nil { - sig := cursorObj.(*types.Func).Type().Underlying().(*types.Signature) - if _, ok := sig.Recv().Type().Underlying().(*types.Interface); ok { - if named, ok := cursorSelection.Recv().(*types.Named); ok { - obj, typ := w.lookupNamedMethod(named, cursorObj.Name()) - if obj != nil { - cursorObj = obj - } - if typ != nil { - cursorPkg = typ.Obj().Pkg() - cursorInterfaceTypeName = typ.Obj().Name() - } - cursorIsInterfaceMethod = true - cursorInterfaceTypeNamed = named - } - } - } else if kind == ObjField && cursorSelection != nil { - if recv := cursorSelection.Recv(); recv != nil { - typ := orgType(recv) - if typ != nil { - if name, ok := typ.(*types.Named); ok { - fieldTypeObj = name.Obj() - na := w.lookupNamedField(name, cursorObj.Name()) - if na != nil { - fieldTypeObj = na.Obj() - } - } - } - } - } - if typesVerbose { - log.Println("parser", cursorObj, kind, cursorIsInterfaceMethod) - } - if cursorPkg != nil && cursorPkg != pkg && - kind != ObjPkgName && w.isBinaryPkg(cursorPkg.Path()) { - conf := &PkgConfig{ - IgnoreFuncBodies: true, - AllowBinary: true, - WithTestFiles: true, - Info: &types.Info{ - Defs: make(map[*ast.Ident]types.Object), - }, - } - pkg, _ := w.Import("", cursorPkg.Path(), conf) - if pkg != nil { - if cursorIsInterfaceMethod { - for k, v := range conf.Info.Defs { - if k != nil && v != nil && IsSameObject(v, cursorInterfaceTypeNamed.Obj()) { - named := v.Type().(*types.Named) - obj, typ := w.lookupNamedMethod(named, cursorObj.Name()) - if obj != nil { - cursorObj = obj - cursorPos = obj.Pos() - } - if obj != nil { - cursorObj = obj - } - if typ != nil { - cursorPkg = typ.Obj().Pkg() - cursorInterfaceTypeName = typ.Obj().Name() - } - break - } - } - // for _, obj := range conf.Info.Defs { - // if obj == nil { - // continue - // } - // if fn, ok := obj.(*types.Func); ok { - // if fn.Name() == cursorObj.Name() { - // if sig, ok := fn.Type().Underlying().(*types.Signature); ok { - // if named, ok := sig.Recv().Type().(*types.Named); ok { - // if named.Obj() != nil && named.Obj().Name() == cursorInterfaceTypeName { - // cursorPos = obj.Pos() - // break - // } - // } - // } - // } - // } - // } - } else if kind == ObjField && fieldTypeObj != nil { - for _, obj := range conf.Info.Defs { - if obj == nil { - continue - } - if _, ok := obj.(*types.TypeName); ok { - if IsSameObject(fieldTypeObj, obj) { - if t, ok := obj.Type().Underlying().(*types.Struct); ok { - for i := 0; i < t.NumFields(); i++ { - if t.Field(i).Id() == cursorObj.Id() { - cursorPos = t.Field(i).Pos() - break - } - } - } - break - } - } - } - } else { - for k, v := range conf.Info.Defs { - if k != nil && v != nil && IsSameObject(v, cursorObj) { - cursorPos = k.Pos() - break - } - } - } - } - // if kind == ObjField || cursorIsInterfaceMethod { - // fieldTypeInfo = conf.Info - // } - } - // if kind == ObjField { - // fieldTypeObj = w.LookupStructFromField(fieldTypeInfo, cursorPkg, cursorObj, cursorPos) - // } - if typesFindDef { - fmt.Println(w.fset.Position(cursorPos)) - } - if typesFindInfo { - /*if kind == ObjField && fieldTypeObj != nil { - typeName := fieldTypeObj.Name() - if fieldTypeObj.Pkg() != nil && fieldTypeObj.Pkg() != pkg { - typeName = fieldTypeObj.Pkg().Name() + "." + fieldTypeObj.Name() - } - fmt.Println(typeName, simpleObjInfo(cursorObj)) - } else */ - if kind == ObjBuiltin { - fmt.Println(builtinInfo(cursorObj.Name())) - } else if kind == ObjPkgName { - fmt.Println(cursorObj.String()) - } else if kind == ObjImplicit { - fmt.Printf("%s is implicit\n", cursorId.Name) - } else if cursorIsInterfaceMethod { - fmt.Println(strings.Replace(simpleObjInfo(cursorObj), "(interface)", cursorPkg.Name()+"."+cursorInterfaceTypeName, 1)) - } else { - fmt.Println(simpleObjInfo(cursorObj)) - } - } - - if typesFindDoc && typesFindDef { - pos := w.fset.Position(cursorPos) - file := w.parsedFileCache[pos.Filename] - if file != nil { - line := pos.Line - var group *ast.CommentGroup - for _, v := range file.Comments { - lastLine := w.fset.Position(v.End()).Line - if lastLine == line || lastLine == line-1 { - group = v - } else if lastLine > line { - break - } - } - if group != nil { - fmt.Println(group.Text()) - } - } - } - if !typesFindUse { - return - } - - var usages []int - if kind == ObjPkgName { - for id, obj := range pkgInfo.Uses { - if obj != nil && obj.Id() == cursorObj.Id() { //!= nil && cursorObj.Pos() == obj.Pos() { - if _, ok := obj.(*types.PkgName); ok { - usages = append(usages, int(id.Pos())) - } - } - } - } else { - // for id, obj := range pkgInfo.Defs { - // if obj == cursorObj { //!= nil && cursorObj.Pos() == obj.Pos() { - // usages = append(usages, int(id.Pos())) - // } - // } - if cursorObj != nil { - for id, obj := range pkgInfo.Uses { - if obj == cursorObj { //!= nil && cursorObj.Pos() == obj.Pos() { - usages = append(usages, int(id.Pos())) - } - } - } else { - for id, obj := range pkgInfo.Uses { - if obj != nil && obj.Pos() == cursorPos { //!= nil && cursorObj.Pos() == obj.Pos() { - usages = append(usages, int(id.Pos())) - } - } - } - } - var pkg_path string - var xpkg_path string - if conf.Pkg != nil { - pkg_path = conf.Pkg.Path() - } - if conf.XPkg != nil { - xpkg_path = conf.XPkg.Path() - } - - if cursorPkg != nil && - (cursorPkg.Path() == pkg_path || cursorPkg.Path() == xpkg_path) && - kind != ObjPkgName { - usages = append(usages, int(cursorPos)) - } - - (sort.IntSlice(usages)).Sort() - for _, pos := range usages { - fmt.Println(w.fset.Position(token.Pos(pos))) - } - //check look for current pkg.object on pkg_test - if typesFindUseAll || IsSamePkg(cursorPkg, conf.Pkg) { - var addInfo *types.Info - if conf.Cursor.xtest { - addInfo = conf.Info - } else { - addInfo = conf.XInfo - } - if addInfo != nil && cursorPkg != nil { - var usages []int - // for id, obj := range addInfo.Defs { - // if id != nil && obj != nil && obj.Id() == cursorObj.Id() { - // usages = append(usages, int(id.Pos())) - // } - // } - for k, v := range addInfo.Uses { - if k != nil && v != nil && IsSameObject(v, cursorObj) { - usages = append(usages, int(k.Pos())) - } - } - (sort.IntSlice(usages)).Sort() - for _, pos := range usages { - fmt.Println(w.fset.Position(token.Pos(pos))) - } - } - } - if !typesFindUseAll { - return - } - - if cursorPkg == nil { - return - } - - var find_def_pkg string - var uses_paths []string - if cursorPkg.Path() != pkg_path && cursorPkg.Path() != xpkg_path { - find_def_pkg = cursorPkg.Path() - uses_paths = append(uses_paths, cursorPkg.Path()) - } - - cursorPkgPath := cursorObj.Pkg().Path() - if pkgutil.IsVendorExperiment() { - cursorPkgPath = pkgutil.VendorPathToImportPath(cursorPkgPath) - } - - buildutil.ForEachPackage(w.context, func(importPath string, err error) { - if err != nil { - return - } - if importPath == conf.Pkg.Path() { - return - } - bp, err := w.importPath(importPath, 0) - if err != nil { - return - } - find := false - if bp.ImportPath == cursorPkg.Path() { - find = true - } else { - for _, v := range bp.Imports { - if v == cursorPkgPath { - find = true - break - } - } - } - if find { - for _, v := range uses_paths { - if v == bp.ImportPath { - return - } - } - uses_paths = append(uses_paths, bp.ImportPath) - } - }) - - w.imported = make(map[string]*types.Package) - for _, v := range uses_paths { - conf := &PkgConfig{ - IgnoreFuncBodies: false, - AllowBinary: true, - WithTestFiles: true, - Info: &types.Info{ - Uses: make(map[*ast.Ident]types.Object), - }, - XInfo: &types.Info{ - Uses: make(map[*ast.Ident]types.Object), - }, - } - w.imported[v] = nil - var usages []int - vpkg, _ := w.Import("", v, conf) - if vpkg != nil && vpkg != pkg { - if conf.Info != nil { - for k, v := range conf.Info.Uses { - if k != nil && v != nil && IsSameObject(v, cursorObj) { - usages = append(usages, int(k.Pos())) - } - } - } - if conf.XInfo != nil { - for k, v := range conf.XInfo.Uses { - if k != nil && v != nil && IsSameObject(v, cursorObj) { - usages = append(usages, int(k.Pos())) - } - } - } - } - if v == find_def_pkg { - usages = append(usages, int(cursorPos)) - } - (sort.IntSlice(usages)).Sort() - for _, pos := range usages { - fmt.Println(w.fset.Position(token.Pos(pos))) - } - } -} - -func (w *PkgWalker) CheckIsName(cursor *FileCursor) *ast.Ident { - if cursor.fileDir == "" { - return nil - } - file, _ := w.parseFile(cursor.fileDir, cursor.fileName, cursor.src) - if file == nil { - return nil - } - if inRange(file.Name, cursor.pos) { - return file.Name - } - return nil -} - -func (w *PkgWalker) CheckIsImport(cursor *FileCursor) *ast.ImportSpec { - if cursor.fileDir == "" { - return nil - } - file, _ := w.parseFile(cursor.fileDir, cursor.fileName, cursor.src) - if file == nil { - return nil - } - for _, is := range file.Imports { - if inRange(is, cursor.pos) { - return is - } - } - return nil -} - -func inRange(node ast.Node, p token.Pos) bool { - if node == nil { - return false - } - return p >= node.Pos() && p <= node.End() -} - -func (w *PkgWalker) nodeString(node interface{}) string { - if node == nil { - return "" - } - var b bytes.Buffer - printer.Fprint(&b, w.fset, node) - return b.String() -} diff --git a/vendor/golang.org/x/text/LICENSE b/vendor/golang.org/x/text/LICENSE deleted file mode 100644 index 6a66aea..0000000 --- a/vendor/golang.org/x/text/LICENSE +++ /dev/null @@ -1,27 +0,0 @@ -Copyright (c) 2009 The Go Authors. All rights reserved. - -Redistribution and use in source and binary forms, with or without -modification, are permitted provided that the following conditions are -met: - - * Redistributions of source code must retain the above copyright -notice, this list of conditions and the following disclaimer. - * Redistributions in binary form must reproduce the above -copyright notice, this list of conditions and the following disclaimer -in the documentation and/or other materials provided with the -distribution. - * Neither the name of Google Inc. nor the names of its -contributors may be used to endorse or promote products derived from -this software without specific prior written permission. - -THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS -"AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT -LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR -A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT -OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, -SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT -LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, -DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY -THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE -OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. diff --git a/vendor/golang.org/x/text/PATENTS b/vendor/golang.org/x/text/PATENTS deleted file mode 100644 index 7330990..0000000 --- a/vendor/golang.org/x/text/PATENTS +++ /dev/null @@ -1,22 +0,0 @@ -Additional IP Rights Grant (Patents) - -"This implementation" means the copyrightable works distributed by -Google as part of the Go project. - -Google hereby grants to You a perpetual, worldwide, non-exclusive, -no-charge, royalty-free, irrevocable (except as stated in this section) -patent license to make, have made, use, offer to sell, sell, import, -transfer and otherwise run, modify and propagate the contents of this -implementation of Go, where such license applies only to those patent -claims, both currently owned or controlled by Google and acquired in -the future, licensable by Google that are necessarily infringed by this -implementation of Go. This grant does not include claims that would be -infringed only as a consequence of further modification of this -implementation. If you or your agent or exclusive licensee institute or -order or agree to the institution of patent litigation against any -entity (including a cross-claim or counterclaim in a lawsuit) alleging -that this implementation of Go or any code incorporated within this -implementation of Go constitutes direct or contributory patent -infringement, or inducement of patent infringement, then any patent -rights granted to you under this License for this implementation of Go -shall terminate as of the date such litigation is filed. diff --git a/vendor/golang.org/x/text/encoding/encoding.go b/vendor/golang.org/x/text/encoding/encoding.go deleted file mode 100644 index 4ede52e..0000000 --- a/vendor/golang.org/x/text/encoding/encoding.go +++ /dev/null @@ -1,179 +0,0 @@ -// Copyright 2013 The Go Authors. All rights reserved. -// Use of this source code is governed by a BSD-style -// license that can be found in the LICENSE file. - -// Package encoding defines an interface for character encodings, such as Shift -// JIS and Windows 1252, that can convert to and from UTF-8. -// -// To convert the bytes of an io.Reader r from the encoding e to UTF-8: -// rInUTF8 := transform.NewReader(r, e.NewDecoder()) -// and to convert from UTF-8 to the encoding e: -// wInUTF8 := transform.NewWriter(w, e.NewEncoder()) -// In both cases, import "golang.org/x/text/transform". -// -// Encoding implementations are provided in other packages, such as -// golang.org/x/text/encoding/charmap and -// golang.org/x/text/encoding/japanese. -package encoding // import "golang.org/x/text/encoding" - -import ( - "errors" - "unicode/utf8" - - "golang.org/x/text/transform" -) - -// Encoding is a character set encoding that can be transformed to and from -// UTF-8. -type Encoding interface { - // NewDecoder returns a transformer that converts to UTF-8. - // - // Transforming source bytes that are not of that encoding will not - // result in an error per se. Each byte that cannot be transcoded will - // be represented in the output by the UTF-8 encoding of '\uFFFD', the - // replacement rune. - NewDecoder() transform.Transformer - - // NewEncoder returns a transformer that converts from UTF-8. - // - // Transforming source bytes that are not valid UTF-8 will not result in - // an error per se. Each rune that cannot be transcoded will be - // represented in the output by an encoding-specific replacement such as - // "\x1a" (the ASCII substitute character) or "\xff\xfd". To return - // early with error instead, use transform.Chain to preprocess the data - // with a UTF8Validator. - NewEncoder() transform.Transformer -} - -// ASCIISub is the ASCII substitute character, as recommended by -// http://unicode.org/reports/tr36/#Text_Comparison -const ASCIISub = '\x1a' - -// Nop is the nop encoding. Its transformed bytes are the same as the source -// bytes; it does not replace invalid UTF-8 sequences. -var Nop Encoding = nop{} - -type nop struct{} - -func (nop) NewDecoder() transform.Transformer { - return transform.Nop -} - -func (nop) NewEncoder() transform.Transformer { - return transform.Nop -} - -// Replacement is the replacement encoding. Decoding from the replacement -// encoding yields a single '\uFFFD' replacement rune. Encoding from UTF-8 to -// the replacement encoding yields the same as the source bytes except that -// invalid UTF-8 is converted to '\uFFFD'. -// -// It is defined at http://encoding.spec.whatwg.org/#replacement -var Replacement Encoding = replacement{} - -type replacement struct{} - -func (replacement) NewDecoder() transform.Transformer { - return replacementDecoder{} -} - -func (replacement) NewEncoder() transform.Transformer { - return replacementEncoder{} -} - -type replacementDecoder struct{ transform.NopResetter } - -func (replacementDecoder) Transform(dst, src []byte, atEOF bool) (nDst, nSrc int, err error) { - if len(dst) < 3 { - return 0, 0, transform.ErrShortDst - } - if atEOF { - const fffd = "\ufffd" - dst[0] = fffd[0] - dst[1] = fffd[1] - dst[2] = fffd[2] - nDst = 3 - } - return nDst, len(src), nil -} - -type replacementEncoder struct{ transform.NopResetter } - -func (replacementEncoder) Transform(dst, src []byte, atEOF bool) (nDst, nSrc int, err error) { - r, size := rune(0), 0 - - for ; nSrc < len(src); nSrc += size { - r = rune(src[nSrc]) - - // Decode a 1-byte rune. - if r < utf8.RuneSelf { - size = 1 - - } else { - // Decode a multi-byte rune. - r, size = utf8.DecodeRune(src[nSrc:]) - if size == 1 { - // All valid runes of size 1 (those below utf8.RuneSelf) were - // handled above. We have invalid UTF-8 or we haven't seen the - // full character yet. - if !atEOF && !utf8.FullRune(src[nSrc:]) { - err = transform.ErrShortSrc - break - } - r = '\ufffd' - } - } - - if nDst+utf8.RuneLen(r) > len(dst) { - err = transform.ErrShortDst - break - } - nDst += utf8.EncodeRune(dst[nDst:], r) - } - return nDst, nSrc, err -} - -// ErrInvalidUTF8 means that a transformer encountered invalid UTF-8. -var ErrInvalidUTF8 = errors.New("encoding: invalid UTF-8") - -// UTF8Validator is a transformer that returns ErrInvalidUTF8 on the first -// input byte that is not valid UTF-8. -var UTF8Validator transform.Transformer = utf8Validator{} - -type utf8Validator struct{ transform.NopResetter } - -func (utf8Validator) Transform(dst, src []byte, atEOF bool) (nDst, nSrc int, err error) { - n := len(src) - if n > len(dst) { - n = len(dst) - } - for i := 0; i < n; { - if c := src[i]; c < utf8.RuneSelf { - dst[i] = c - i++ - continue - } - _, size := utf8.DecodeRune(src[i:]) - if size == 1 { - // All valid runes of size 1 (those below utf8.RuneSelf) were - // handled above. We have invalid UTF-8 or we haven't seen the - // full character yet. - err = ErrInvalidUTF8 - if !atEOF && !utf8.FullRune(src[i:]) { - err = transform.ErrShortSrc - } - return i, i, err - } - if i+size > len(dst) { - return i, i, transform.ErrShortDst - } - for ; size > 0; size-- { - dst[i] = src[i] - i++ - } - } - if len(src) > len(dst) { - err = transform.ErrShortDst - } - return n, n, err -} diff --git a/vendor/golang.org/x/text/encoding/internal/identifier/gen.go b/vendor/golang.org/x/text/encoding/internal/identifier/gen.go deleted file mode 100644 index 0c8eba7..0000000 --- a/vendor/golang.org/x/text/encoding/internal/identifier/gen.go +++ /dev/null @@ -1,137 +0,0 @@ -// Copyright 2015 The Go Authors. All rights reserved. -// Use of this source code is governed by a BSD-style -// license that can be found in the LICENSE file. - -// +build ignore - -package main - -import ( - "bytes" - "encoding/xml" - "fmt" - "io" - "log" - "strings" - - "golang.org/x/text/internal/gen" -) - -type registry struct { - XMLName xml.Name `xml:"registry"` - Updated string `xml:"updated"` - Registry []struct { - ID string `xml:"id,attr"` - Record []struct { - Name string `xml:"name"` - Xref []struct { - Type string `xml:"type,attr"` - Data string `xml:"data,attr"` - } `xml:"xref"` - Desc struct { - Data string `xml:",innerxml"` - // Any []struct { - // Data string `xml:",chardata"` - // } `xml:",any"` - // Data string `xml:",chardata"` - } `xml:"description,"` - MIB string `xml:"value"` - Alias []string `xml:"alias"` - MIME string `xml:"preferred_alias"` - } `xml:"record"` - } `xml:"registry"` -} - -func main() { - r := gen.OpenIANAFile("assignments/character-sets/character-sets.xml") - reg := ®istry{} - if err := xml.NewDecoder(r).Decode(®); err != nil && err != io.EOF { - log.Fatalf("Error decoding charset registry: %v", err) - } - if len(reg.Registry) == 0 || reg.Registry[0].ID != "character-sets-1" { - log.Fatalf("Unexpected ID %s", reg.Registry[0].ID) - } - - w := &bytes.Buffer{} - fmt.Fprintf(w, "const (\n") - for _, rec := range reg.Registry[0].Record { - constName := "" - for _, a := range rec.Alias { - if strings.HasPrefix(a, "cs") && strings.IndexByte(a, '-') == -1 { - // Some of the constant definitions have comments in them. Strip those. - constName = strings.Title(strings.SplitN(a[2:], "\n", 2)[0]) - } - } - if constName == "" { - switch rec.MIB { - case "2085": - constName = "HZGB2312" // Not listed as alias for some reason. - default: - log.Fatalf("No cs alias defined for %s.", rec.MIB) - } - } - if rec.MIME != "" { - rec.MIME = fmt.Sprintf(" (MIME: %s)", rec.MIME) - } - fmt.Fprintf(w, "// %s is the MIB identifier with IANA name %s%s.\n//\n", constName, rec.Name, rec.MIME) - if len(rec.Desc.Data) > 0 { - fmt.Fprint(w, "// ") - d := xml.NewDecoder(strings.NewReader(rec.Desc.Data)) - inElem := true - attr := "" - for { - t, err := d.Token() - if err != nil { - if err != io.EOF { - log.Fatal(err) - } - break - } - switch x := t.(type) { - case xml.CharData: - attr = "" // Don't need attribute info. - a := bytes.Split([]byte(x), []byte("\n")) - for i, b := range a { - if b = bytes.TrimSpace(b); len(b) != 0 { - if !inElem && i > 0 { - fmt.Fprint(w, "\n// ") - } - inElem = false - fmt.Fprintf(w, "%s ", string(b)) - } - } - case xml.StartElement: - if x.Name.Local == "xref" { - inElem = true - use := false - for _, a := range x.Attr { - if a.Name.Local == "type" { - use = use || a.Value != "person" - } - if a.Name.Local == "data" && use { - attr = a.Value + " " - } - } - } - case xml.EndElement: - inElem = false - fmt.Fprint(w, attr) - } - } - fmt.Fprint(w, "\n") - } - for _, x := range rec.Xref { - switch x.Type { - case "rfc": - fmt.Fprintf(w, "// Reference: %s\n", strings.ToUpper(x.Data)) - case "uri": - fmt.Fprintf(w, "// Reference: %s\n", x.Data) - } - } - fmt.Fprintf(w, "%s MIB = %s\n", constName, rec.MIB) - fmt.Fprintln(w) - } - fmt.Fprintln(w, ")") - - gen.WriteGoFile("mib.go", "identifier", w.Bytes()) -} diff --git a/vendor/golang.org/x/text/encoding/internal/identifier/identifier.go b/vendor/golang.org/x/text/encoding/internal/identifier/identifier.go deleted file mode 100644 index cfb1354..0000000 --- a/vendor/golang.org/x/text/encoding/internal/identifier/identifier.go +++ /dev/null @@ -1,80 +0,0 @@ -// Copyright 2015 The Go Authors. All rights reserved. -// Use of this source code is governed by a BSD-style -// license that can be found in the LICENSE file. - -//go:generate go run gen.go - -// Package identifier defines the contract between implementations of Encoding -// and Index by defining identifiers that uniquely identify standardized coded -// character sets (CCS) and character encoding schemes (CES), which we will -// together refer to as encodings, for which Encoding implementations provide -// converters to and from UTF-8. This package is typically only of concern to -// implementers of Indexes and Encodings. -// -// One part of the identifier is the MIB code, which is defined by IANA and -// uniquely identifies a CCS or CES. Each code is associated with data that -// references authorities, official documentation as well as aliases and MIME -// names. -// -// Not all CESs are covered by the IANA registry. The "other" string that is -// returned by ID can be used to identify other character sets or versions of -// existing ones. -// -// It is recommended that each package that provides a set of Encodings provide -// the All and Common variables to reference all supported encodings and -// commonly used subset. This allows Index implementations to include all -// available encodings without explicitly referencing or knowing about them. -package identifier - -// Note: this package is internal, but could be made public if there is a need -// for writing third-party Indexes and Encodings. - -// References: -// - http://source.icu-project.org/repos/icu/icu/trunk/source/data/mappings/convrtrs.txt -// - http://www.iana.org/assignments/character-sets/character-sets.xhtml -// - http://www.iana.org/assignments/ianacharset-mib/ianacharset-mib -// - http://www.ietf.org/rfc/rfc2978.txt -// - http://www.unicode.org/reports/tr22/ -// - http://www.w3.org/TR/encoding/ -// - http://www.w3.org/TR/encoding/indexes/encodings.json -// - https://encoding.spec.whatwg.org/ -// - https://tools.ietf.org/html/rfc6657#section-5 - -// Interface can be implemented by Encodings to define the CCS or CES for which -// it implements conversions. -type Interface interface { - // ID returns an encoding identifier. Exactly one of the mib and other - // values should be non-zero. - // - // In the usual case it is only necessary to indicate the MIB code. The - // other string can be used to specify encodings for which there is no MIB, - // such as "x-mac-dingbat". - // - // The other string may only contain the characters a-z, A-Z, 0-9, - and _. - ID() (mib MIB, other string) - - // NOTE: the restrictions on the encoding are to allow extending the syntax - // with additional information such as versions, vendors and other variants. -} - -// A MIB identifies an encoding. It is derived from the IANA MIB codes and adds -// some identifiers for some encodings that are not covered by the IANA -// standard. -// -// See http://www.iana.org/assignments/ianacharset-mib. -type MIB uint16 - -// These additional MIB types are not defined in IANA. They are added because -// they are common and defined within the text repo. -const ( - // Unofficial marks the start of encodings not registered by IANA. - Unofficial MIB = 10000 + iota - - // TODO: add Replacement? - - // XUserDefined is the code for x-user-defined. - XUserDefined - - // MacintoshCyrillic is the code for x-mac-cyrillic. - MacintoshCyrillic -) diff --git a/vendor/golang.org/x/text/encoding/internal/identifier/mib.go b/vendor/golang.org/x/text/encoding/internal/identifier/mib.go deleted file mode 100644 index 915abfa..0000000 --- a/vendor/golang.org/x/text/encoding/internal/identifier/mib.go +++ /dev/null @@ -1,1621 +0,0 @@ -// This file was generated by go generate; DO NOT EDIT - -package identifier - -const ( - // ASCII is the MIB identifier with IANA name US-ASCII (MIME: US-ASCII). - // - // ANSI X3.4-1986 - // Reference: RFC2046 - ASCII MIB = 3 - - // ISOLatin1 is the MIB identifier with IANA name ISO_8859-1:1987 (MIME: ISO-8859-1). - // - // ISO-IR: International Register of Escape Sequences - // Note: The current registration authority is IPSJ/ITSCJ, Japan. - // Reference: RFC1345 - ISOLatin1 MIB = 4 - - // ISOLatin2 is the MIB identifier with IANA name ISO_8859-2:1987 (MIME: ISO-8859-2). - // - // ISO-IR: International Register of Escape Sequences - // Note: The current registration authority is IPSJ/ITSCJ, Japan. - // Reference: RFC1345 - ISOLatin2 MIB = 5 - - // ISOLatin3 is the MIB identifier with IANA name ISO_8859-3:1988 (MIME: ISO-8859-3). - // - // ISO-IR: International Register of Escape Sequences - // Note: The current registration authority is IPSJ/ITSCJ, Japan. - // Reference: RFC1345 - ISOLatin3 MIB = 6 - - // ISOLatin4 is the MIB identifier with IANA name ISO_8859-4:1988 (MIME: ISO-8859-4). - // - // ISO-IR: International Register of Escape Sequences - // Note: The current registration authority is IPSJ/ITSCJ, Japan. - // Reference: RFC1345 - ISOLatin4 MIB = 7 - - // ISOLatinCyrillic is the MIB identifier with IANA name ISO_8859-5:1988 (MIME: ISO-8859-5). - // - // ISO-IR: International Register of Escape Sequences - // Note: The current registration authority is IPSJ/ITSCJ, Japan. - // Reference: RFC1345 - ISOLatinCyrillic MIB = 8 - - // ISOLatinArabic is the MIB identifier with IANA name ISO_8859-6:1987 (MIME: ISO-8859-6). - // - // ISO-IR: International Register of Escape Sequences - // Note: The current registration authority is IPSJ/ITSCJ, Japan. - // Reference: RFC1345 - ISOLatinArabic MIB = 9 - - // ISOLatinGreek is the MIB identifier with IANA name ISO_8859-7:1987 (MIME: ISO-8859-7). - // - // ISO-IR: International Register of Escape Sequences - // Note: The current registration authority is IPSJ/ITSCJ, Japan. - // Reference: RFC1947 - // Reference: RFC1345 - ISOLatinGreek MIB = 10 - - // ISOLatinHebrew is the MIB identifier with IANA name ISO_8859-8:1988 (MIME: ISO-8859-8). - // - // ISO-IR: International Register of Escape Sequences - // Note: The current registration authority is IPSJ/ITSCJ, Japan. - // Reference: RFC1345 - ISOLatinHebrew MIB = 11 - - // ISOLatin5 is the MIB identifier with IANA name ISO_8859-9:1989 (MIME: ISO-8859-9). - // - // ISO-IR: International Register of Escape Sequences - // Note: The current registration authority is IPSJ/ITSCJ, Japan. - // Reference: RFC1345 - ISOLatin5 MIB = 12 - - // ISOLatin6 is the MIB identifier with IANA name ISO-8859-10 (MIME: ISO-8859-10). - // - // ISO-IR: International Register of Escape Sequences - // Note: The current registration authority is IPSJ/ITSCJ, Japan. - // Reference: RFC1345 - ISOLatin6 MIB = 13 - - // ISOTextComm is the MIB identifier with IANA name ISO_6937-2-add. - // - // ISO-IR: International Register of Escape Sequences and ISO 6937-2:1983 - // Note: The current registration authority is IPSJ/ITSCJ, Japan. - // Reference: RFC1345 - ISOTextComm MIB = 14 - - // HalfWidthKatakana is the MIB identifier with IANA name JIS_X0201. - // - // JIS X 0201-1976. One byte only, this is equivalent to - // JIS/Roman (similar to ASCII) plus eight-bit half-width - // Katakana - // Reference: RFC1345 - HalfWidthKatakana MIB = 15 - - // JISEncoding is the MIB identifier with IANA name JIS_Encoding. - // - // JIS X 0202-1991. Uses ISO 2022 escape sequences to - // shift code sets as documented in JIS X 0202-1991. - JISEncoding MIB = 16 - - // ShiftJIS is the MIB identifier with IANA name Shift_JIS (MIME: Shift_JIS). - // - // This charset is an extension of csHalfWidthKatakana by - // adding graphic characters in JIS X 0208. The CCS's are - // JIS X0201:1997 and JIS X0208:1997. The - // complete definition is shown in Appendix 1 of JIS - // X0208:1997. - // This charset can be used for the top-level media type "text". - ShiftJIS MIB = 17 - - // EUCPkdFmtJapanese is the MIB identifier with IANA name Extended_UNIX_Code_Packed_Format_for_Japanese (MIME: EUC-JP). - // - // Standardized by OSF, UNIX International, and UNIX Systems - // Laboratories Pacific. Uses ISO 2022 rules to select - // code set 0: US-ASCII (a single 7-bit byte set) - // code set 1: JIS X0208-1990 (a double 8-bit byte set) - // restricted to A0-FF in both bytes - // code set 2: Half Width Katakana (a single 7-bit byte set) - // requiring SS2 as the character prefix - // code set 3: JIS X0212-1990 (a double 7-bit byte set) - // restricted to A0-FF in both bytes - // requiring SS3 as the character prefix - EUCPkdFmtJapanese MIB = 18 - - // EUCFixWidJapanese is the MIB identifier with IANA name Extended_UNIX_Code_Fixed_Width_for_Japanese. - // - // Used in Japan. Each character is 2 octets. - // code set 0: US-ASCII (a single 7-bit byte set) - // 1st byte = 00 - // 2nd byte = 20-7E - // code set 1: JIS X0208-1990 (a double 7-bit byte set) - // restricted to A0-FF in both bytes - // code set 2: Half Width Katakana (a single 7-bit byte set) - // 1st byte = 00 - // 2nd byte = A0-FF - // code set 3: JIS X0212-1990 (a double 7-bit byte set) - // restricted to A0-FF in - // the first byte - // and 21-7E in the second byte - EUCFixWidJapanese MIB = 19 - - // ISO4UnitedKingdom is the MIB identifier with IANA name BS_4730. - // - // ISO-IR: International Register of Escape Sequences - // Note: The current registration authority is IPSJ/ITSCJ, Japan. - // Reference: RFC1345 - ISO4UnitedKingdom MIB = 20 - - // ISO11SwedishForNames is the MIB identifier with IANA name SEN_850200_C. - // - // ISO-IR: International Register of Escape Sequences - // Note: The current registration authority is IPSJ/ITSCJ, Japan. - // Reference: RFC1345 - ISO11SwedishForNames MIB = 21 - - // ISO15Italian is the MIB identifier with IANA name IT. - // - // ISO-IR: International Register of Escape Sequences - // Note: The current registration authority is IPSJ/ITSCJ, Japan. - // Reference: RFC1345 - ISO15Italian MIB = 22 - - // ISO17Spanish is the MIB identifier with IANA name ES. - // - // ISO-IR: International Register of Escape Sequences - // Note: The current registration authority is IPSJ/ITSCJ, Japan. - // Reference: RFC1345 - ISO17Spanish MIB = 23 - - // ISO21German is the MIB identifier with IANA name DIN_66003. - // - // ISO-IR: International Register of Escape Sequences - // Note: The current registration authority is IPSJ/ITSCJ, Japan. - // Reference: RFC1345 - ISO21German MIB = 24 - - // ISO60Norwegian1 is the MIB identifier with IANA name NS_4551-1. - // - // ISO-IR: International Register of Escape Sequences - // Note: The current registration authority is IPSJ/ITSCJ, Japan. - // Reference: RFC1345 - ISO60Norwegian1 MIB = 25 - - // ISO69French is the MIB identifier with IANA name NF_Z_62-010. - // - // ISO-IR: International Register of Escape Sequences - // Note: The current registration authority is IPSJ/ITSCJ, Japan. - // Reference: RFC1345 - ISO69French MIB = 26 - - // ISO10646UTF1 is the MIB identifier with IANA name ISO-10646-UTF-1. - // - // Universal Transfer Format (1), this is the multibyte - // encoding, that subsets ASCII-7. It does not have byte - // ordering issues. - ISO10646UTF1 MIB = 27 - - // ISO646basic1983 is the MIB identifier with IANA name ISO_646.basic:1983. - // - // ISO-IR: International Register of Escape Sequences - // Note: The current registration authority is IPSJ/ITSCJ, Japan. - // Reference: RFC1345 - ISO646basic1983 MIB = 28 - - // INVARIANT is the MIB identifier with IANA name INVARIANT. - // - // Reference: RFC1345 - INVARIANT MIB = 29 - - // ISO2IntlRefVersion is the MIB identifier with IANA name ISO_646.irv:1983. - // - // ISO-IR: International Register of Escape Sequences - // Note: The current registration authority is IPSJ/ITSCJ, Japan. - // Reference: RFC1345 - ISO2IntlRefVersion MIB = 30 - - // NATSSEFI is the MIB identifier with IANA name NATS-SEFI. - // - // ISO-IR: International Register of Escape Sequences - // Note: The current registration authority is IPSJ/ITSCJ, Japan. - // Reference: RFC1345 - NATSSEFI MIB = 31 - - // NATSSEFIADD is the MIB identifier with IANA name NATS-SEFI-ADD. - // - // ISO-IR: International Register of Escape Sequences - // Note: The current registration authority is IPSJ/ITSCJ, Japan. - // Reference: RFC1345 - NATSSEFIADD MIB = 32 - - // NATSDANO is the MIB identifier with IANA name NATS-DANO. - // - // ISO-IR: International Register of Escape Sequences - // Note: The current registration authority is IPSJ/ITSCJ, Japan. - // Reference: RFC1345 - NATSDANO MIB = 33 - - // NATSDANOADD is the MIB identifier with IANA name NATS-DANO-ADD. - // - // ISO-IR: International Register of Escape Sequences - // Note: The current registration authority is IPSJ/ITSCJ, Japan. - // Reference: RFC1345 - NATSDANOADD MIB = 34 - - // ISO10Swedish is the MIB identifier with IANA name SEN_850200_B. - // - // ISO-IR: International Register of Escape Sequences - // Note: The current registration authority is IPSJ/ITSCJ, Japan. - // Reference: RFC1345 - ISO10Swedish MIB = 35 - - // KSC56011987 is the MIB identifier with IANA name KS_C_5601-1987. - // - // ISO-IR: International Register of Escape Sequences - // Note: The current registration authority is IPSJ/ITSCJ, Japan. - // Reference: RFC1345 - KSC56011987 MIB = 36 - - // ISO2022KR is the MIB identifier with IANA name ISO-2022-KR (MIME: ISO-2022-KR). - // - // rfc1557 (see also KS_C_5601-1987) - // Reference: RFC1557 - ISO2022KR MIB = 37 - - // EUCKR is the MIB identifier with IANA name EUC-KR (MIME: EUC-KR). - // - // rfc1557 (see also KS_C_5861-1992) - // Reference: RFC1557 - EUCKR MIB = 38 - - // ISO2022JP is the MIB identifier with IANA name ISO-2022-JP (MIME: ISO-2022-JP). - // - // rfc1468 (see also rfc2237 ) - // Reference: RFC1468 - ISO2022JP MIB = 39 - - // ISO2022JP2 is the MIB identifier with IANA name ISO-2022-JP-2 (MIME: ISO-2022-JP-2). - // - // rfc1554 - // Reference: RFC1554 - ISO2022JP2 MIB = 40 - - // ISO13JISC6220jp is the MIB identifier with IANA name JIS_C6220-1969-jp. - // - // ISO-IR: International Register of Escape Sequences - // Note: The current registration authority is IPSJ/ITSCJ, Japan. - // Reference: RFC1345 - ISO13JISC6220jp MIB = 41 - - // ISO14JISC6220ro is the MIB identifier with IANA name JIS_C6220-1969-ro. - // - // ISO-IR: International Register of Escape Sequences - // Note: The current registration authority is IPSJ/ITSCJ, Japan. - // Reference: RFC1345 - ISO14JISC6220ro MIB = 42 - - // ISO16Portuguese is the MIB identifier with IANA name PT. - // - // ISO-IR: International Register of Escape Sequences - // Note: The current registration authority is IPSJ/ITSCJ, Japan. - // Reference: RFC1345 - ISO16Portuguese MIB = 43 - - // ISO18Greek7Old is the MIB identifier with IANA name greek7-old. - // - // ISO-IR: International Register of Escape Sequences - // Note: The current registration authority is IPSJ/ITSCJ, Japan. - // Reference: RFC1345 - ISO18Greek7Old MIB = 44 - - // ISO19LatinGreek is the MIB identifier with IANA name latin-greek. - // - // ISO-IR: International Register of Escape Sequences - // Note: The current registration authority is IPSJ/ITSCJ, Japan. - // Reference: RFC1345 - ISO19LatinGreek MIB = 45 - - // ISO25French is the MIB identifier with IANA name NF_Z_62-010_(1973). - // - // ISO-IR: International Register of Escape Sequences - // Note: The current registration authority is IPSJ/ITSCJ, Japan. - // Reference: RFC1345 - ISO25French MIB = 46 - - // ISO27LatinGreek1 is the MIB identifier with IANA name Latin-greek-1. - // - // ISO-IR: International Register of Escape Sequences - // Note: The current registration authority is IPSJ/ITSCJ, Japan. - // Reference: RFC1345 - ISO27LatinGreek1 MIB = 47 - - // ISO5427Cyrillic is the MIB identifier with IANA name ISO_5427. - // - // ISO-IR: International Register of Escape Sequences - // Note: The current registration authority is IPSJ/ITSCJ, Japan. - // Reference: RFC1345 - ISO5427Cyrillic MIB = 48 - - // ISO42JISC62261978 is the MIB identifier with IANA name JIS_C6226-1978. - // - // ISO-IR: International Register of Escape Sequences - // Note: The current registration authority is IPSJ/ITSCJ, Japan. - // Reference: RFC1345 - ISO42JISC62261978 MIB = 49 - - // ISO47BSViewdata is the MIB identifier with IANA name BS_viewdata. - // - // ISO-IR: International Register of Escape Sequences - // Note: The current registration authority is IPSJ/ITSCJ, Japan. - // Reference: RFC1345 - ISO47BSViewdata MIB = 50 - - // ISO49INIS is the MIB identifier with IANA name INIS. - // - // ISO-IR: International Register of Escape Sequences - // Note: The current registration authority is IPSJ/ITSCJ, Japan. - // Reference: RFC1345 - ISO49INIS MIB = 51 - - // ISO50INIS8 is the MIB identifier with IANA name INIS-8. - // - // ISO-IR: International Register of Escape Sequences - // Note: The current registration authority is IPSJ/ITSCJ, Japan. - // Reference: RFC1345 - ISO50INIS8 MIB = 52 - - // ISO51INISCyrillic is the MIB identifier with IANA name INIS-cyrillic. - // - // ISO-IR: International Register of Escape Sequences - // Note: The current registration authority is IPSJ/ITSCJ, Japan. - // Reference: RFC1345 - ISO51INISCyrillic MIB = 53 - - // ISO54271981 is the MIB identifier with IANA name ISO_5427:1981. - // - // ISO-IR: International Register of Escape Sequences - // Note: The current registration authority is IPSJ/ITSCJ, Japan. - // Reference: RFC1345 - ISO54271981 MIB = 54 - - // ISO5428Greek is the MIB identifier with IANA name ISO_5428:1980. - // - // ISO-IR: International Register of Escape Sequences - // Note: The current registration authority is IPSJ/ITSCJ, Japan. - // Reference: RFC1345 - ISO5428Greek MIB = 55 - - // ISO57GB1988 is the MIB identifier with IANA name GB_1988-80. - // - // ISO-IR: International Register of Escape Sequences - // Note: The current registration authority is IPSJ/ITSCJ, Japan. - // Reference: RFC1345 - ISO57GB1988 MIB = 56 - - // ISO58GB231280 is the MIB identifier with IANA name GB_2312-80. - // - // ISO-IR: International Register of Escape Sequences - // Note: The current registration authority is IPSJ/ITSCJ, Japan. - // Reference: RFC1345 - ISO58GB231280 MIB = 57 - - // ISO61Norwegian2 is the MIB identifier with IANA name NS_4551-2. - // - // ISO-IR: International Register of Escape Sequences - // Note: The current registration authority is IPSJ/ITSCJ, Japan. - // Reference: RFC1345 - ISO61Norwegian2 MIB = 58 - - // ISO70VideotexSupp1 is the MIB identifier with IANA name videotex-suppl. - // - // ISO-IR: International Register of Escape Sequences - // Note: The current registration authority is IPSJ/ITSCJ, Japan. - // Reference: RFC1345 - ISO70VideotexSupp1 MIB = 59 - - // ISO84Portuguese2 is the MIB identifier with IANA name PT2. - // - // ISO-IR: International Register of Escape Sequences - // Note: The current registration authority is IPSJ/ITSCJ, Japan. - // Reference: RFC1345 - ISO84Portuguese2 MIB = 60 - - // ISO85Spanish2 is the MIB identifier with IANA name ES2. - // - // ISO-IR: International Register of Escape Sequences - // Note: The current registration authority is IPSJ/ITSCJ, Japan. - // Reference: RFC1345 - ISO85Spanish2 MIB = 61 - - // ISO86Hungarian is the MIB identifier with IANA name MSZ_7795.3. - // - // ISO-IR: International Register of Escape Sequences - // Note: The current registration authority is IPSJ/ITSCJ, Japan. - // Reference: RFC1345 - ISO86Hungarian MIB = 62 - - // ISO87JISX0208 is the MIB identifier with IANA name JIS_C6226-1983. - // - // ISO-IR: International Register of Escape Sequences - // Note: The current registration authority is IPSJ/ITSCJ, Japan. - // Reference: RFC1345 - ISO87JISX0208 MIB = 63 - - // ISO88Greek7 is the MIB identifier with IANA name greek7. - // - // ISO-IR: International Register of Escape Sequences - // Note: The current registration authority is IPSJ/ITSCJ, Japan. - // Reference: RFC1345 - ISO88Greek7 MIB = 64 - - // ISO89ASMO449 is the MIB identifier with IANA name ASMO_449. - // - // ISO-IR: International Register of Escape Sequences - // Note: The current registration authority is IPSJ/ITSCJ, Japan. - // Reference: RFC1345 - ISO89ASMO449 MIB = 65 - - // ISO90 is the MIB identifier with IANA name iso-ir-90. - // - // ISO-IR: International Register of Escape Sequences - // Note: The current registration authority is IPSJ/ITSCJ, Japan. - // Reference: RFC1345 - ISO90 MIB = 66 - - // ISO91JISC62291984a is the MIB identifier with IANA name JIS_C6229-1984-a. - // - // ISO-IR: International Register of Escape Sequences - // Note: The current registration authority is IPSJ/ITSCJ, Japan. - // Reference: RFC1345 - ISO91JISC62291984a MIB = 67 - - // ISO92JISC62991984b is the MIB identifier with IANA name JIS_C6229-1984-b. - // - // ISO-IR: International Register of Escape Sequences - // Note: The current registration authority is IPSJ/ITSCJ, Japan. - // Reference: RFC1345 - ISO92JISC62991984b MIB = 68 - - // ISO93JIS62291984badd is the MIB identifier with IANA name JIS_C6229-1984-b-add. - // - // ISO-IR: International Register of Escape Sequences - // Note: The current registration authority is IPSJ/ITSCJ, Japan. - // Reference: RFC1345 - ISO93JIS62291984badd MIB = 69 - - // ISO94JIS62291984hand is the MIB identifier with IANA name JIS_C6229-1984-hand. - // - // ISO-IR: International Register of Escape Sequences - // Note: The current registration authority is IPSJ/ITSCJ, Japan. - // Reference: RFC1345 - ISO94JIS62291984hand MIB = 70 - - // ISO95JIS62291984handadd is the MIB identifier with IANA name JIS_C6229-1984-hand-add. - // - // ISO-IR: International Register of Escape Sequences - // Note: The current registration authority is IPSJ/ITSCJ, Japan. - // Reference: RFC1345 - ISO95JIS62291984handadd MIB = 71 - - // ISO96JISC62291984kana is the MIB identifier with IANA name JIS_C6229-1984-kana. - // - // ISO-IR: International Register of Escape Sequences - // Note: The current registration authority is IPSJ/ITSCJ, Japan. - // Reference: RFC1345 - ISO96JISC62291984kana MIB = 72 - - // ISO2033 is the MIB identifier with IANA name ISO_2033-1983. - // - // ISO-IR: International Register of Escape Sequences - // Note: The current registration authority is IPSJ/ITSCJ, Japan. - // Reference: RFC1345 - ISO2033 MIB = 73 - - // ISO99NAPLPS is the MIB identifier with IANA name ANSI_X3.110-1983. - // - // ISO-IR: International Register of Escape Sequences - // Note: The current registration authority is IPSJ/ITSCJ, Japan. - // Reference: RFC1345 - ISO99NAPLPS MIB = 74 - - // ISO102T617bit is the MIB identifier with IANA name T.61-7bit. - // - // ISO-IR: International Register of Escape Sequences - // Note: The current registration authority is IPSJ/ITSCJ, Japan. - // Reference: RFC1345 - ISO102T617bit MIB = 75 - - // ISO103T618bit is the MIB identifier with IANA name T.61-8bit. - // - // ISO-IR: International Register of Escape Sequences - // Note: The current registration authority is IPSJ/ITSCJ, Japan. - // Reference: RFC1345 - ISO103T618bit MIB = 76 - - // ISO111ECMACyrillic is the MIB identifier with IANA name ECMA-cyrillic. - // - // ISO registry - // (formerly ECMA - // registry ) - ISO111ECMACyrillic MIB = 77 - - // ISO121Canadian1 is the MIB identifier with IANA name CSA_Z243.4-1985-1. - // - // ISO-IR: International Register of Escape Sequences - // Note: The current registration authority is IPSJ/ITSCJ, Japan. - // Reference: RFC1345 - ISO121Canadian1 MIB = 78 - - // ISO122Canadian2 is the MIB identifier with IANA name CSA_Z243.4-1985-2. - // - // ISO-IR: International Register of Escape Sequences - // Note: The current registration authority is IPSJ/ITSCJ, Japan. - // Reference: RFC1345 - ISO122Canadian2 MIB = 79 - - // ISO123CSAZ24341985gr is the MIB identifier with IANA name CSA_Z243.4-1985-gr. - // - // ISO-IR: International Register of Escape Sequences - // Note: The current registration authority is IPSJ/ITSCJ, Japan. - // Reference: RFC1345 - ISO123CSAZ24341985gr MIB = 80 - - // ISO88596E is the MIB identifier with IANA name ISO_8859-6-E (MIME: ISO-8859-6-E). - // - // rfc1556 - // Reference: RFC1556 - ISO88596E MIB = 81 - - // ISO88596I is the MIB identifier with IANA name ISO_8859-6-I (MIME: ISO-8859-6-I). - // - // rfc1556 - // Reference: RFC1556 - ISO88596I MIB = 82 - - // ISO128T101G2 is the MIB identifier with IANA name T.101-G2. - // - // ISO-IR: International Register of Escape Sequences - // Note: The current registration authority is IPSJ/ITSCJ, Japan. - // Reference: RFC1345 - ISO128T101G2 MIB = 83 - - // ISO88598E is the MIB identifier with IANA name ISO_8859-8-E (MIME: ISO-8859-8-E). - // - // rfc1556 - // Reference: RFC1556 - ISO88598E MIB = 84 - - // ISO88598I is the MIB identifier with IANA name ISO_8859-8-I (MIME: ISO-8859-8-I). - // - // rfc1556 - // Reference: RFC1556 - ISO88598I MIB = 85 - - // ISO139CSN369103 is the MIB identifier with IANA name CSN_369103. - // - // ISO-IR: International Register of Escape Sequences - // Note: The current registration authority is IPSJ/ITSCJ, Japan. - // Reference: RFC1345 - ISO139CSN369103 MIB = 86 - - // ISO141JUSIB1002 is the MIB identifier with IANA name JUS_I.B1.002. - // - // ISO-IR: International Register of Escape Sequences - // Note: The current registration authority is IPSJ/ITSCJ, Japan. - // Reference: RFC1345 - ISO141JUSIB1002 MIB = 87 - - // ISO143IECP271 is the MIB identifier with IANA name IEC_P27-1. - // - // ISO-IR: International Register of Escape Sequences - // Note: The current registration authority is IPSJ/ITSCJ, Japan. - // Reference: RFC1345 - ISO143IECP271 MIB = 88 - - // ISO146Serbian is the MIB identifier with IANA name JUS_I.B1.003-serb. - // - // ISO-IR: International Register of Escape Sequences - // Note: The current registration authority is IPSJ/ITSCJ, Japan. - // Reference: RFC1345 - ISO146Serbian MIB = 89 - - // ISO147Macedonian is the MIB identifier with IANA name JUS_I.B1.003-mac. - // - // ISO-IR: International Register of Escape Sequences - // Note: The current registration authority is IPSJ/ITSCJ, Japan. - // Reference: RFC1345 - ISO147Macedonian MIB = 90 - - // ISO150GreekCCITT is the MIB identifier with IANA name greek-ccitt. - // - // ISO-IR: International Register of Escape Sequences - // Note: The current registration authority is IPSJ/ITSCJ, Japan. - // Reference: RFC1345 - ISO150GreekCCITT MIB = 91 - - // ISO151Cuba is the MIB identifier with IANA name NC_NC00-10:81. - // - // ISO-IR: International Register of Escape Sequences - // Note: The current registration authority is IPSJ/ITSCJ, Japan. - // Reference: RFC1345 - ISO151Cuba MIB = 92 - - // ISO6937Add is the MIB identifier with IANA name ISO_6937-2-25. - // - // ISO-IR: International Register of Escape Sequences - // Note: The current registration authority is IPSJ/ITSCJ, Japan. - // Reference: RFC1345 - ISO6937Add MIB = 93 - - // ISO153GOST1976874 is the MIB identifier with IANA name GOST_19768-74. - // - // ISO-IR: International Register of Escape Sequences - // Note: The current registration authority is IPSJ/ITSCJ, Japan. - // Reference: RFC1345 - ISO153GOST1976874 MIB = 94 - - // ISO8859Supp is the MIB identifier with IANA name ISO_8859-supp. - // - // ISO-IR: International Register of Escape Sequences - // Note: The current registration authority is IPSJ/ITSCJ, Japan. - // Reference: RFC1345 - ISO8859Supp MIB = 95 - - // ISO10367Box is the MIB identifier with IANA name ISO_10367-box. - // - // ISO-IR: International Register of Escape Sequences - // Note: The current registration authority is IPSJ/ITSCJ, Japan. - // Reference: RFC1345 - ISO10367Box MIB = 96 - - // ISO158Lap is the MIB identifier with IANA name latin-lap. - // - // ISO-IR: International Register of Escape Sequences - // Note: The current registration authority is IPSJ/ITSCJ, Japan. - // Reference: RFC1345 - ISO158Lap MIB = 97 - - // ISO159JISX02121990 is the MIB identifier with IANA name JIS_X0212-1990. - // - // ISO-IR: International Register of Escape Sequences - // Note: The current registration authority is IPSJ/ITSCJ, Japan. - // Reference: RFC1345 - ISO159JISX02121990 MIB = 98 - - // ISO646Danish is the MIB identifier with IANA name DS_2089. - // - // Danish Standard, DS 2089, February 1974 - // Reference: RFC1345 - ISO646Danish MIB = 99 - - // USDK is the MIB identifier with IANA name us-dk. - // - // Reference: RFC1345 - USDK MIB = 100 - - // DKUS is the MIB identifier with IANA name dk-us. - // - // Reference: RFC1345 - DKUS MIB = 101 - - // KSC5636 is the MIB identifier with IANA name KSC5636. - // - // Reference: RFC1345 - KSC5636 MIB = 102 - - // Unicode11UTF7 is the MIB identifier with IANA name UNICODE-1-1-UTF-7. - // - // rfc1642 - // Reference: RFC1642 - Unicode11UTF7 MIB = 103 - - // ISO2022CN is the MIB identifier with IANA name ISO-2022-CN. - // - // rfc1922 - // Reference: RFC1922 - ISO2022CN MIB = 104 - - // ISO2022CNEXT is the MIB identifier with IANA name ISO-2022-CN-EXT. - // - // rfc1922 - // Reference: RFC1922 - ISO2022CNEXT MIB = 105 - - // UTF8 is the MIB identifier with IANA name UTF-8. - // - // rfc3629 - // Reference: RFC3629 - UTF8 MIB = 106 - - // ISO885913 is the MIB identifier with IANA name ISO-8859-13. - // - // ISO See http://www.iana.org/assignments/charset-reg/ISO-8859-13 http://www.iana.org/assignments/charset-reg/ISO-8859-13 - ISO885913 MIB = 109 - - // ISO885914 is the MIB identifier with IANA name ISO-8859-14. - // - // ISO See http://www.iana.org/assignments/charset-reg/ISO-8859-14 - ISO885914 MIB = 110 - - // ISO885915 is the MIB identifier with IANA name ISO-8859-15. - // - // ISO - // Please see: http://www.iana.org/assignments/charset-reg/ISO-8859-15 - ISO885915 MIB = 111 - - // ISO885916 is the MIB identifier with IANA name ISO-8859-16. - // - // ISO - ISO885916 MIB = 112 - - // GBK is the MIB identifier with IANA name GBK. - // - // Chinese IT Standardization Technical Committee - // Please see: http://www.iana.org/assignments/charset-reg/GBK - GBK MIB = 113 - - // GB18030 is the MIB identifier with IANA name GB18030. - // - // Chinese IT Standardization Technical Committee - // Please see: http://www.iana.org/assignments/charset-reg/GB18030 - GB18030 MIB = 114 - - // OSDEBCDICDF0415 is the MIB identifier with IANA name OSD_EBCDIC_DF04_15. - // - // Fujitsu-Siemens standard mainframe EBCDIC encoding - // Please see: http://www.iana.org/assignments/charset-reg/OSD-EBCDIC-DF04-15 - OSDEBCDICDF0415 MIB = 115 - - // OSDEBCDICDF03IRV is the MIB identifier with IANA name OSD_EBCDIC_DF03_IRV. - // - // Fujitsu-Siemens standard mainframe EBCDIC encoding - // Please see: http://www.iana.org/assignments/charset-reg/OSD-EBCDIC-DF03-IRV - OSDEBCDICDF03IRV MIB = 116 - - // OSDEBCDICDF041 is the MIB identifier with IANA name OSD_EBCDIC_DF04_1. - // - // Fujitsu-Siemens standard mainframe EBCDIC encoding - // Please see: http://www.iana.org/assignments/charset-reg/OSD-EBCDIC-DF04-1 - OSDEBCDICDF041 MIB = 117 - - // ISO115481 is the MIB identifier with IANA name ISO-11548-1. - // - // See http://www.iana.org/assignments/charset-reg/ISO-11548-1 - ISO115481 MIB = 118 - - // KZ1048 is the MIB identifier with IANA name KZ-1048. - // - // See http://www.iana.org/assignments/charset-reg/KZ-1048 - KZ1048 MIB = 119 - - // Unicode is the MIB identifier with IANA name ISO-10646-UCS-2. - // - // the 2-octet Basic Multilingual Plane, aka Unicode - // this needs to specify network byte order: the standard - // does not specify (it is a 16-bit integer space) - Unicode MIB = 1000 - - // UCS4 is the MIB identifier with IANA name ISO-10646-UCS-4. - // - // the full code space. (same comment about byte order, - // these are 31-bit numbers. - UCS4 MIB = 1001 - - // UnicodeASCII is the MIB identifier with IANA name ISO-10646-UCS-Basic. - // - // ASCII subset of Unicode. Basic Latin = collection 1 - // See ISO 10646, Appendix A - UnicodeASCII MIB = 1002 - - // UnicodeLatin1 is the MIB identifier with IANA name ISO-10646-Unicode-Latin1. - // - // ISO Latin-1 subset of Unicode. Basic Latin and Latin-1 - // Supplement = collections 1 and 2. See ISO 10646, - // Appendix A. See rfc1815 . - UnicodeLatin1 MIB = 1003 - - // UnicodeJapanese is the MIB identifier with IANA name ISO-10646-J-1. - // - // ISO 10646 Japanese, see rfc1815 . - UnicodeJapanese MIB = 1004 - - // UnicodeIBM1261 is the MIB identifier with IANA name ISO-Unicode-IBM-1261. - // - // IBM Latin-2, -3, -5, Extended Presentation Set, GCSGID: 1261 - UnicodeIBM1261 MIB = 1005 - - // UnicodeIBM1268 is the MIB identifier with IANA name ISO-Unicode-IBM-1268. - // - // IBM Latin-4 Extended Presentation Set, GCSGID: 1268 - UnicodeIBM1268 MIB = 1006 - - // UnicodeIBM1276 is the MIB identifier with IANA name ISO-Unicode-IBM-1276. - // - // IBM Cyrillic Greek Extended Presentation Set, GCSGID: 1276 - UnicodeIBM1276 MIB = 1007 - - // UnicodeIBM1264 is the MIB identifier with IANA name ISO-Unicode-IBM-1264. - // - // IBM Arabic Presentation Set, GCSGID: 1264 - UnicodeIBM1264 MIB = 1008 - - // UnicodeIBM1265 is the MIB identifier with IANA name ISO-Unicode-IBM-1265. - // - // IBM Hebrew Presentation Set, GCSGID: 1265 - UnicodeIBM1265 MIB = 1009 - - // Unicode11 is the MIB identifier with IANA name UNICODE-1-1. - // - // rfc1641 - // Reference: RFC1641 - Unicode11 MIB = 1010 - - // SCSU is the MIB identifier with IANA name SCSU. - // - // SCSU See http://www.iana.org/assignments/charset-reg/SCSU - SCSU MIB = 1011 - - // UTF7 is the MIB identifier with IANA name UTF-7. - // - // rfc2152 - // Reference: RFC2152 - UTF7 MIB = 1012 - - // UTF16BE is the MIB identifier with IANA name UTF-16BE. - // - // rfc2781 - // Reference: RFC2781 - UTF16BE MIB = 1013 - - // UTF16LE is the MIB identifier with IANA name UTF-16LE. - // - // rfc2781 - // Reference: RFC2781 - UTF16LE MIB = 1014 - - // UTF16 is the MIB identifier with IANA name UTF-16. - // - // rfc2781 - // Reference: RFC2781 - UTF16 MIB = 1015 - - // CESU8 is the MIB identifier with IANA name CESU-8. - // - // http://www.unicode.org/unicode/reports/tr26 - CESU8 MIB = 1016 - - // UTF32 is the MIB identifier with IANA name UTF-32. - // - // http://www.unicode.org/unicode/reports/tr19/ - UTF32 MIB = 1017 - - // UTF32BE is the MIB identifier with IANA name UTF-32BE. - // - // http://www.unicode.org/unicode/reports/tr19/ - UTF32BE MIB = 1018 - - // UTF32LE is the MIB identifier with IANA name UTF-32LE. - // - // http://www.unicode.org/unicode/reports/tr19/ - UTF32LE MIB = 1019 - - // BOCU1 is the MIB identifier with IANA name BOCU-1. - // - // http://www.unicode.org/notes/tn6/ - BOCU1 MIB = 1020 - - // Windows30Latin1 is the MIB identifier with IANA name ISO-8859-1-Windows-3.0-Latin-1. - // - // Extended ISO 8859-1 Latin-1 for Windows 3.0. - // PCL Symbol Set id: 9U - Windows30Latin1 MIB = 2000 - - // Windows31Latin1 is the MIB identifier with IANA name ISO-8859-1-Windows-3.1-Latin-1. - // - // Extended ISO 8859-1 Latin-1 for Windows 3.1. - // PCL Symbol Set id: 19U - Windows31Latin1 MIB = 2001 - - // Windows31Latin2 is the MIB identifier with IANA name ISO-8859-2-Windows-Latin-2. - // - // Extended ISO 8859-2. Latin-2 for Windows 3.1. - // PCL Symbol Set id: 9E - Windows31Latin2 MIB = 2002 - - // Windows31Latin5 is the MIB identifier with IANA name ISO-8859-9-Windows-Latin-5. - // - // Extended ISO 8859-9. Latin-5 for Windows 3.1 - // PCL Symbol Set id: 5T - Windows31Latin5 MIB = 2003 - - // HPRoman8 is the MIB identifier with IANA name hp-roman8. - // - // LaserJet IIP Printer User's Manual, - // HP part no 33471-90901, Hewlet-Packard, June 1989. - // Reference: RFC1345 - HPRoman8 MIB = 2004 - - // AdobeStandardEncoding is the MIB identifier with IANA name Adobe-Standard-Encoding. - // - // PostScript Language Reference Manual - // PCL Symbol Set id: 10J - AdobeStandardEncoding MIB = 2005 - - // VenturaUS is the MIB identifier with IANA name Ventura-US. - // - // Ventura US. ASCII plus characters typically used in - // publishing, like pilcrow, copyright, registered, trade mark, - // section, dagger, and double dagger in the range A0 (hex) - // to FF (hex). - // PCL Symbol Set id: 14J - VenturaUS MIB = 2006 - - // VenturaInternational is the MIB identifier with IANA name Ventura-International. - // - // Ventura International. ASCII plus coded characters similar - // to Roman8. - // PCL Symbol Set id: 13J - VenturaInternational MIB = 2007 - - // DECMCS is the MIB identifier with IANA name DEC-MCS. - // - // VAX/VMS User's Manual, - // Order Number: AI-Y517A-TE, April 1986. - // Reference: RFC1345 - DECMCS MIB = 2008 - - // PC850Multilingual is the MIB identifier with IANA name IBM850. - // - // IBM NLS RM Vol2 SE09-8002-01, March 1990 - // Reference: RFC1345 - PC850Multilingual MIB = 2009 - - // PC8DanishNorwegian is the MIB identifier with IANA name PC8-Danish-Norwegian. - // - // PC Danish Norwegian - // 8-bit PC set for Danish Norwegian - // PCL Symbol Set id: 11U - PC8DanishNorwegian MIB = 2012 - - // PC862LatinHebrew is the MIB identifier with IANA name IBM862. - // - // IBM NLS RM Vol2 SE09-8002-01, March 1990 - // Reference: RFC1345 - PC862LatinHebrew MIB = 2013 - - // PC8Turkish is the MIB identifier with IANA name PC8-Turkish. - // - // PC Latin Turkish. PCL Symbol Set id: 9T - PC8Turkish MIB = 2014 - - // IBMSymbols is the MIB identifier with IANA name IBM-Symbols. - // - // Presentation Set, CPGID: 259 - IBMSymbols MIB = 2015 - - // IBMThai is the MIB identifier with IANA name IBM-Thai. - // - // Presentation Set, CPGID: 838 - IBMThai MIB = 2016 - - // HPLegal is the MIB identifier with IANA name HP-Legal. - // - // PCL 5 Comparison Guide, Hewlett-Packard, - // HP part number 5961-0510, October 1992 - // PCL Symbol Set id: 1U - HPLegal MIB = 2017 - - // HPPiFont is the MIB identifier with IANA name HP-Pi-font. - // - // PCL 5 Comparison Guide, Hewlett-Packard, - // HP part number 5961-0510, October 1992 - // PCL Symbol Set id: 15U - HPPiFont MIB = 2018 - - // HPMath8 is the MIB identifier with IANA name HP-Math8. - // - // PCL 5 Comparison Guide, Hewlett-Packard, - // HP part number 5961-0510, October 1992 - // PCL Symbol Set id: 8M - HPMath8 MIB = 2019 - - // HPPSMath is the MIB identifier with IANA name Adobe-Symbol-Encoding. - // - // PostScript Language Reference Manual - // PCL Symbol Set id: 5M - HPPSMath MIB = 2020 - - // HPDesktop is the MIB identifier with IANA name HP-DeskTop. - // - // PCL 5 Comparison Guide, Hewlett-Packard, - // HP part number 5961-0510, October 1992 - // PCL Symbol Set id: 7J - HPDesktop MIB = 2021 - - // VenturaMath is the MIB identifier with IANA name Ventura-Math. - // - // PCL 5 Comparison Guide, Hewlett-Packard, - // HP part number 5961-0510, October 1992 - // PCL Symbol Set id: 6M - VenturaMath MIB = 2022 - - // MicrosoftPublishing is the MIB identifier with IANA name Microsoft-Publishing. - // - // PCL 5 Comparison Guide, Hewlett-Packard, - // HP part number 5961-0510, October 1992 - // PCL Symbol Set id: 6J - MicrosoftPublishing MIB = 2023 - - // Windows31J is the MIB identifier with IANA name Windows-31J. - // - // Windows Japanese. A further extension of Shift_JIS - // to include NEC special characters (Row 13), NEC - // selection of IBM extensions (Rows 89 to 92), and IBM - // extensions (Rows 115 to 119). The CCS's are - // JIS X0201:1997, JIS X0208:1997, and these extensions. - // This charset can be used for the top-level media type "text", - // but it is of limited or specialized use (see rfc2278 ). - // PCL Symbol Set id: 19K - Windows31J MIB = 2024 - - // GB2312 is the MIB identifier with IANA name GB2312 (MIME: GB2312). - // - // Chinese for People's Republic of China (PRC) mixed one byte, - // two byte set: - // 20-7E = one byte ASCII - // A1-FE = two byte PRC Kanji - // See GB 2312-80 - // PCL Symbol Set Id: 18C - GB2312 MIB = 2025 - - // Big5 is the MIB identifier with IANA name Big5 (MIME: Big5). - // - // Chinese for Taiwan Multi-byte set. - // PCL Symbol Set Id: 18T - Big5 MIB = 2026 - - // Macintosh is the MIB identifier with IANA name macintosh. - // - // The Unicode Standard ver1.0, ISBN 0-201-56788-1, Oct 1991 - // Reference: RFC1345 - Macintosh MIB = 2027 - - // IBM037 is the MIB identifier with IANA name IBM037. - // - // IBM NLS RM Vol2 SE09-8002-01, March 1990 - // Reference: RFC1345 - IBM037 MIB = 2028 - - // IBM038 is the MIB identifier with IANA name IBM038. - // - // IBM 3174 Character Set Ref, GA27-3831-02, March 1990 - // Reference: RFC1345 - IBM038 MIB = 2029 - - // IBM273 is the MIB identifier with IANA name IBM273. - // - // IBM NLS RM Vol2 SE09-8002-01, March 1990 - // Reference: RFC1345 - IBM273 MIB = 2030 - - // IBM274 is the MIB identifier with IANA name IBM274. - // - // IBM 3174 Character Set Ref, GA27-3831-02, March 1990 - // Reference: RFC1345 - IBM274 MIB = 2031 - - // IBM275 is the MIB identifier with IANA name IBM275. - // - // IBM NLS RM Vol2 SE09-8002-01, March 1990 - // Reference: RFC1345 - IBM275 MIB = 2032 - - // IBM277 is the MIB identifier with IANA name IBM277. - // - // IBM NLS RM Vol2 SE09-8002-01, March 1990 - // Reference: RFC1345 - IBM277 MIB = 2033 - - // IBM278 is the MIB identifier with IANA name IBM278. - // - // IBM NLS RM Vol2 SE09-8002-01, March 1990 - // Reference: RFC1345 - IBM278 MIB = 2034 - - // IBM280 is the MIB identifier with IANA name IBM280. - // - // IBM NLS RM Vol2 SE09-8002-01, March 1990 - // Reference: RFC1345 - IBM280 MIB = 2035 - - // IBM281 is the MIB identifier with IANA name IBM281. - // - // IBM 3174 Character Set Ref, GA27-3831-02, March 1990 - // Reference: RFC1345 - IBM281 MIB = 2036 - - // IBM284 is the MIB identifier with IANA name IBM284. - // - // IBM NLS RM Vol2 SE09-8002-01, March 1990 - // Reference: RFC1345 - IBM284 MIB = 2037 - - // IBM285 is the MIB identifier with IANA name IBM285. - // - // IBM NLS RM Vol2 SE09-8002-01, March 1990 - // Reference: RFC1345 - IBM285 MIB = 2038 - - // IBM290 is the MIB identifier with IANA name IBM290. - // - // IBM 3174 Character Set Ref, GA27-3831-02, March 1990 - // Reference: RFC1345 - IBM290 MIB = 2039 - - // IBM297 is the MIB identifier with IANA name IBM297. - // - // IBM NLS RM Vol2 SE09-8002-01, March 1990 - // Reference: RFC1345 - IBM297 MIB = 2040 - - // IBM420 is the MIB identifier with IANA name IBM420. - // - // IBM NLS RM Vol2 SE09-8002-01, March 1990, - // IBM NLS RM p 11-11 - // Reference: RFC1345 - IBM420 MIB = 2041 - - // IBM423 is the MIB identifier with IANA name IBM423. - // - // IBM NLS RM Vol2 SE09-8002-01, March 1990 - // Reference: RFC1345 - IBM423 MIB = 2042 - - // IBM424 is the MIB identifier with IANA name IBM424. - // - // IBM NLS RM Vol2 SE09-8002-01, March 1990 - // Reference: RFC1345 - IBM424 MIB = 2043 - - // PC8CodePage437 is the MIB identifier with IANA name IBM437. - // - // IBM NLS RM Vol2 SE09-8002-01, March 1990 - // Reference: RFC1345 - PC8CodePage437 MIB = 2011 - - // IBM500 is the MIB identifier with IANA name IBM500. - // - // IBM NLS RM Vol2 SE09-8002-01, March 1990 - // Reference: RFC1345 - IBM500 MIB = 2044 - - // IBM851 is the MIB identifier with IANA name IBM851. - // - // IBM NLS RM Vol2 SE09-8002-01, March 1990 - // Reference: RFC1345 - IBM851 MIB = 2045 - - // PCp852 is the MIB identifier with IANA name IBM852. - // - // IBM NLS RM Vol2 SE09-8002-01, March 1990 - // Reference: RFC1345 - PCp852 MIB = 2010 - - // IBM855 is the MIB identifier with IANA name IBM855. - // - // IBM NLS RM Vol2 SE09-8002-01, March 1990 - // Reference: RFC1345 - IBM855 MIB = 2046 - - // IBM857 is the MIB identifier with IANA name IBM857. - // - // IBM NLS RM Vol2 SE09-8002-01, March 1990 - // Reference: RFC1345 - IBM857 MIB = 2047 - - // IBM860 is the MIB identifier with IANA name IBM860. - // - // IBM NLS RM Vol2 SE09-8002-01, March 1990 - // Reference: RFC1345 - IBM860 MIB = 2048 - - // IBM861 is the MIB identifier with IANA name IBM861. - // - // IBM NLS RM Vol2 SE09-8002-01, March 1990 - // Reference: RFC1345 - IBM861 MIB = 2049 - - // IBM863 is the MIB identifier with IANA name IBM863. - // - // IBM Keyboard layouts and code pages, PN 07G4586 June 1991 - // Reference: RFC1345 - IBM863 MIB = 2050 - - // IBM864 is the MIB identifier with IANA name IBM864. - // - // IBM Keyboard layouts and code pages, PN 07G4586 June 1991 - // Reference: RFC1345 - IBM864 MIB = 2051 - - // IBM865 is the MIB identifier with IANA name IBM865. - // - // IBM DOS 3.3 Ref (Abridged), 94X9575 (Feb 1987) - // Reference: RFC1345 - IBM865 MIB = 2052 - - // IBM868 is the MIB identifier with IANA name IBM868. - // - // IBM NLS RM Vol2 SE09-8002-01, March 1990 - // Reference: RFC1345 - IBM868 MIB = 2053 - - // IBM869 is the MIB identifier with IANA name IBM869. - // - // IBM Keyboard layouts and code pages, PN 07G4586 June 1991 - // Reference: RFC1345 - IBM869 MIB = 2054 - - // IBM870 is the MIB identifier with IANA name IBM870. - // - // IBM NLS RM Vol2 SE09-8002-01, March 1990 - // Reference: RFC1345 - IBM870 MIB = 2055 - - // IBM871 is the MIB identifier with IANA name IBM871. - // - // IBM NLS RM Vol2 SE09-8002-01, March 1990 - // Reference: RFC1345 - IBM871 MIB = 2056 - - // IBM880 is the MIB identifier with IANA name IBM880. - // - // IBM NLS RM Vol2 SE09-8002-01, March 1990 - // Reference: RFC1345 - IBM880 MIB = 2057 - - // IBM891 is the MIB identifier with IANA name IBM891. - // - // IBM NLS RM Vol2 SE09-8002-01, March 1990 - // Reference: RFC1345 - IBM891 MIB = 2058 - - // IBM903 is the MIB identifier with IANA name IBM903. - // - // IBM NLS RM Vol2 SE09-8002-01, March 1990 - // Reference: RFC1345 - IBM903 MIB = 2059 - - // IBBM904 is the MIB identifier with IANA name IBM904. - // - // IBM NLS RM Vol2 SE09-8002-01, March 1990 - // Reference: RFC1345 - IBBM904 MIB = 2060 - - // IBM905 is the MIB identifier with IANA name IBM905. - // - // IBM 3174 Character Set Ref, GA27-3831-02, March 1990 - // Reference: RFC1345 - IBM905 MIB = 2061 - - // IBM918 is the MIB identifier with IANA name IBM918. - // - // IBM NLS RM Vol2 SE09-8002-01, March 1990 - // Reference: RFC1345 - IBM918 MIB = 2062 - - // IBM1026 is the MIB identifier with IANA name IBM1026. - // - // IBM NLS RM Vol2 SE09-8002-01, March 1990 - // Reference: RFC1345 - IBM1026 MIB = 2063 - - // IBMEBCDICATDE is the MIB identifier with IANA name EBCDIC-AT-DE. - // - // IBM 3270 Char Set Ref Ch 10, GA27-2837-9, April 1987 - // Reference: RFC1345 - IBMEBCDICATDE MIB = 2064 - - // EBCDICATDEA is the MIB identifier with IANA name EBCDIC-AT-DE-A. - // - // IBM 3270 Char Set Ref Ch 10, GA27-2837-9, April 1987 - // Reference: RFC1345 - EBCDICATDEA MIB = 2065 - - // EBCDICCAFR is the MIB identifier with IANA name EBCDIC-CA-FR. - // - // IBM 3270 Char Set Ref Ch 10, GA27-2837-9, April 1987 - // Reference: RFC1345 - EBCDICCAFR MIB = 2066 - - // EBCDICDKNO is the MIB identifier with IANA name EBCDIC-DK-NO. - // - // IBM 3270 Char Set Ref Ch 10, GA27-2837-9, April 1987 - // Reference: RFC1345 - EBCDICDKNO MIB = 2067 - - // EBCDICDKNOA is the MIB identifier with IANA name EBCDIC-DK-NO-A. - // - // IBM 3270 Char Set Ref Ch 10, GA27-2837-9, April 1987 - // Reference: RFC1345 - EBCDICDKNOA MIB = 2068 - - // EBCDICFISE is the MIB identifier with IANA name EBCDIC-FI-SE. - // - // IBM 3270 Char Set Ref Ch 10, GA27-2837-9, April 1987 - // Reference: RFC1345 - EBCDICFISE MIB = 2069 - - // EBCDICFISEA is the MIB identifier with IANA name EBCDIC-FI-SE-A. - // - // IBM 3270 Char Set Ref Ch 10, GA27-2837-9, April 1987 - // Reference: RFC1345 - EBCDICFISEA MIB = 2070 - - // EBCDICFR is the MIB identifier with IANA name EBCDIC-FR. - // - // IBM 3270 Char Set Ref Ch 10, GA27-2837-9, April 1987 - // Reference: RFC1345 - EBCDICFR MIB = 2071 - - // EBCDICIT is the MIB identifier with IANA name EBCDIC-IT. - // - // IBM 3270 Char Set Ref Ch 10, GA27-2837-9, April 1987 - // Reference: RFC1345 - EBCDICIT MIB = 2072 - - // EBCDICPT is the MIB identifier with IANA name EBCDIC-PT. - // - // IBM 3270 Char Set Ref Ch 10, GA27-2837-9, April 1987 - // Reference: RFC1345 - EBCDICPT MIB = 2073 - - // EBCDICES is the MIB identifier with IANA name EBCDIC-ES. - // - // IBM 3270 Char Set Ref Ch 10, GA27-2837-9, April 1987 - // Reference: RFC1345 - EBCDICES MIB = 2074 - - // EBCDICESA is the MIB identifier with IANA name EBCDIC-ES-A. - // - // IBM 3270 Char Set Ref Ch 10, GA27-2837-9, April 1987 - // Reference: RFC1345 - EBCDICESA MIB = 2075 - - // EBCDICESS is the MIB identifier with IANA name EBCDIC-ES-S. - // - // IBM 3270 Char Set Ref Ch 10, GA27-2837-9, April 1987 - // Reference: RFC1345 - EBCDICESS MIB = 2076 - - // EBCDICUK is the MIB identifier with IANA name EBCDIC-UK. - // - // IBM 3270 Char Set Ref Ch 10, GA27-2837-9, April 1987 - // Reference: RFC1345 - EBCDICUK MIB = 2077 - - // EBCDICUS is the MIB identifier with IANA name EBCDIC-US. - // - // IBM 3270 Char Set Ref Ch 10, GA27-2837-9, April 1987 - // Reference: RFC1345 - EBCDICUS MIB = 2078 - - // Unknown8BiT is the MIB identifier with IANA name UNKNOWN-8BIT. - // - // Reference: RFC1428 - Unknown8BiT MIB = 2079 - - // Mnemonic is the MIB identifier with IANA name MNEMONIC. - // - // rfc1345 , also known as "mnemonic+ascii+38" - // Reference: RFC1345 - Mnemonic MIB = 2080 - - // Mnem is the MIB identifier with IANA name MNEM. - // - // rfc1345 , also known as "mnemonic+ascii+8200" - // Reference: RFC1345 - Mnem MIB = 2081 - - // VISCII is the MIB identifier with IANA name VISCII. - // - // rfc1456 - // Reference: RFC1456 - VISCII MIB = 2082 - - // VIQR is the MIB identifier with IANA name VIQR. - // - // rfc1456 - // Reference: RFC1456 - VIQR MIB = 2083 - - // KOI8R is the MIB identifier with IANA name KOI8-R (MIME: KOI8-R). - // - // rfc1489 , based on GOST-19768-74, ISO-6937/8, - // INIS-Cyrillic, ISO-5427. - // Reference: RFC1489 - KOI8R MIB = 2084 - - // HZGB2312 is the MIB identifier with IANA name HZ-GB-2312. - // - // rfc1842 , rfc1843 rfc1843 rfc1842 - HZGB2312 MIB = 2085 - - // IBM866 is the MIB identifier with IANA name IBM866. - // - // IBM NLDG Volume 2 (SE09-8002-03) August 1994 - IBM866 MIB = 2086 - - // PC775Baltic is the MIB identifier with IANA name IBM775. - // - // HP PCL 5 Comparison Guide (P/N 5021-0329) pp B-13, 1996 - PC775Baltic MIB = 2087 - - // KOI8U is the MIB identifier with IANA name KOI8-U. - // - // rfc2319 - // Reference: RFC2319 - KOI8U MIB = 2088 - - // IBM00858 is the MIB identifier with IANA name IBM00858. - // - // IBM See http://www.iana.org/assignments/charset-reg/IBM00858 - IBM00858 MIB = 2089 - - // IBM00924 is the MIB identifier with IANA name IBM00924. - // - // IBM See http://www.iana.org/assignments/charset-reg/IBM00924 - IBM00924 MIB = 2090 - - // IBM01140 is the MIB identifier with IANA name IBM01140. - // - // IBM See http://www.iana.org/assignments/charset-reg/IBM01140 - IBM01140 MIB = 2091 - - // IBM01141 is the MIB identifier with IANA name IBM01141. - // - // IBM See http://www.iana.org/assignments/charset-reg/IBM01141 - IBM01141 MIB = 2092 - - // IBM01142 is the MIB identifier with IANA name IBM01142. - // - // IBM See http://www.iana.org/assignments/charset-reg/IBM01142 - IBM01142 MIB = 2093 - - // IBM01143 is the MIB identifier with IANA name IBM01143. - // - // IBM See http://www.iana.org/assignments/charset-reg/IBM01143 - IBM01143 MIB = 2094 - - // IBM01144 is the MIB identifier with IANA name IBM01144. - // - // IBM See http://www.iana.org/assignments/charset-reg/IBM01144 - IBM01144 MIB = 2095 - - // IBM01145 is the MIB identifier with IANA name IBM01145. - // - // IBM See http://www.iana.org/assignments/charset-reg/IBM01145 - IBM01145 MIB = 2096 - - // IBM01146 is the MIB identifier with IANA name IBM01146. - // - // IBM See http://www.iana.org/assignments/charset-reg/IBM01146 - IBM01146 MIB = 2097 - - // IBM01147 is the MIB identifier with IANA name IBM01147. - // - // IBM See http://www.iana.org/assignments/charset-reg/IBM01147 - IBM01147 MIB = 2098 - - // IBM01148 is the MIB identifier with IANA name IBM01148. - // - // IBM See http://www.iana.org/assignments/charset-reg/IBM01148 - IBM01148 MIB = 2099 - - // IBM01149 is the MIB identifier with IANA name IBM01149. - // - // IBM See http://www.iana.org/assignments/charset-reg/IBM01149 - IBM01149 MIB = 2100 - - // Big5HKSCS is the MIB identifier with IANA name Big5-HKSCS. - // - // See http://www.iana.org/assignments/charset-reg/Big5-HKSCS - Big5HKSCS MIB = 2101 - - // IBM1047 is the MIB identifier with IANA name IBM1047. - // - // IBM1047 (EBCDIC Latin 1/Open Systems) http://www-1.ibm.com/servers/eserver/iseries/software/globalization/pdf/cp01047z.pdf - IBM1047 MIB = 2102 - - // PTCP154 is the MIB identifier with IANA name PTCP154. - // - // See http://www.iana.org/assignments/charset-reg/PTCP154 - PTCP154 MIB = 2103 - - // Amiga1251 is the MIB identifier with IANA name Amiga-1251. - // - // See http://www.amiga.ultranet.ru/Amiga-1251.html - Amiga1251 MIB = 2104 - - // KOI7switched is the MIB identifier with IANA name KOI7-switched. - // - // See http://www.iana.org/assignments/charset-reg/KOI7-switched - KOI7switched MIB = 2105 - - // BRF is the MIB identifier with IANA name BRF. - // - // See http://www.iana.org/assignments/charset-reg/BRF - BRF MIB = 2106 - - // TSCII is the MIB identifier with IANA name TSCII. - // - // See http://www.iana.org/assignments/charset-reg/TSCII - TSCII MIB = 2107 - - // CP51932 is the MIB identifier with IANA name CP51932. - // - // See http://www.iana.org/assignments/charset-reg/CP51932 - CP51932 MIB = 2108 - - // Windows874 is the MIB identifier with IANA name windows-874. - // - // See http://www.iana.org/assignments/charset-reg/windows-874 - Windows874 MIB = 2109 - - // Windows1250 is the MIB identifier with IANA name windows-1250. - // - // Microsoft http://www.iana.org/assignments/charset-reg/windows-1250 - Windows1250 MIB = 2250 - - // Windows1251 is the MIB identifier with IANA name windows-1251. - // - // Microsoft http://www.iana.org/assignments/charset-reg/windows-1251 - Windows1251 MIB = 2251 - - // Windows1252 is the MIB identifier with IANA name windows-1252. - // - // Microsoft http://www.iana.org/assignments/charset-reg/windows-1252 - Windows1252 MIB = 2252 - - // Windows1253 is the MIB identifier with IANA name windows-1253. - // - // Microsoft http://www.iana.org/assignments/charset-reg/windows-1253 - Windows1253 MIB = 2253 - - // Windows1254 is the MIB identifier with IANA name windows-1254. - // - // Microsoft http://www.iana.org/assignments/charset-reg/windows-1254 - Windows1254 MIB = 2254 - - // Windows1255 is the MIB identifier with IANA name windows-1255. - // - // Microsoft http://www.iana.org/assignments/charset-reg/windows-1255 - Windows1255 MIB = 2255 - - // Windows1256 is the MIB identifier with IANA name windows-1256. - // - // Microsoft http://www.iana.org/assignments/charset-reg/windows-1256 - Windows1256 MIB = 2256 - - // Windows1257 is the MIB identifier with IANA name windows-1257. - // - // Microsoft http://www.iana.org/assignments/charset-reg/windows-1257 - Windows1257 MIB = 2257 - - // Windows1258 is the MIB identifier with IANA name windows-1258. - // - // Microsoft http://www.iana.org/assignments/charset-reg/windows-1258 - Windows1258 MIB = 2258 - - // TIS620 is the MIB identifier with IANA name TIS-620. - // - // Thai Industrial Standards Institute (TISI) - TIS620 MIB = 2259 - - // CP50220 is the MIB identifier with IANA name CP50220. - // - // See http://www.iana.org/assignments/charset-reg/CP50220 - CP50220 MIB = 2260 -) diff --git a/vendor/golang.org/x/text/encoding/internal/internal.go b/vendor/golang.org/x/text/encoding/internal/internal.go deleted file mode 100644 index 63bf16c..0000000 --- a/vendor/golang.org/x/text/encoding/internal/internal.go +++ /dev/null @@ -1,60 +0,0 @@ -// Copyright 2015 The Go Authors. All rights reserved. -// Use of this source code is governed by a BSD-style -// license that can be found in the LICENSE file. - -// Package internal contains code that is shared among encoding implementations. -package internal - -import ( - "golang.org/x/text/encoding" - "golang.org/x/text/encoding/internal/identifier" - "golang.org/x/text/transform" -) - -// Encoding is an implementation of the Encoding interface that adds the String -// and ID methods to an existing encoding. -type Encoding struct { - encoding.Encoding - Name string - MIB identifier.MIB -} - -// _ verifies that Encoding implements identifier.Interface. -var _ identifier.Interface = (*Encoding)(nil) - -func (e *Encoding) String() string { - return e.Name -} - -func (e *Encoding) ID() (mib identifier.MIB, other string) { - return e.MIB, "" -} - -// SimpleEncoding is an Encoding that combines two Transformers. -type SimpleEncoding struct { - Decoder transform.Transformer - Encoder transform.Transformer -} - -func (e *SimpleEncoding) NewDecoder() transform.Transformer { - return e.Decoder -} - -func (e *SimpleEncoding) NewEncoder() transform.Transformer { - return e.Encoder -} - -// FuncEncoding is an Encoding that combines two functions returning a new -// Transformer. -type FuncEncoding struct { - Decoder func() transform.Transformer - Encoder func() transform.Transformer -} - -func (e FuncEncoding) NewDecoder() transform.Transformer { - return e.Decoder() -} - -func (e FuncEncoding) NewEncoder() transform.Transformer { - return e.Encoder() -} diff --git a/vendor/golang.org/x/text/encoding/simplifiedchinese/all.go b/vendor/golang.org/x/text/encoding/simplifiedchinese/all.go deleted file mode 100644 index 5ecc526..0000000 --- a/vendor/golang.org/x/text/encoding/simplifiedchinese/all.go +++ /dev/null @@ -1,12 +0,0 @@ -// Copyright 2015 The Go Authors. All rights reserved. -// Use of this source code is governed by a BSD-style -// license that can be found in the LICENSE file. - -package simplifiedchinese - -import ( - "golang.org/x/text/encoding" -) - -// All is a list of all defined encodings in this package. -var All = []encoding.Encoding{GB18030, GBK, HZGB2312} diff --git a/vendor/golang.org/x/text/encoding/simplifiedchinese/gbk.go b/vendor/golang.org/x/text/encoding/simplifiedchinese/gbk.go deleted file mode 100644 index bff5714..0000000 --- a/vendor/golang.org/x/text/encoding/simplifiedchinese/gbk.go +++ /dev/null @@ -1,280 +0,0 @@ -// Copyright 2013 The Go Authors. All rights reserved. -// Use of this source code is governed by a BSD-style -// license that can be found in the LICENSE file. - -package simplifiedchinese - -import ( - "errors" - "unicode/utf8" - - "golang.org/x/text/encoding" - "golang.org/x/text/encoding/internal" - "golang.org/x/text/encoding/internal/identifier" - "golang.org/x/text/transform" -) - -var ( - // GB18030 is the GB18030 encoding. - GB18030 encoding.Encoding = &gbk18030 - // GBK is the GBK encoding. It encodes an extension of the GB2312 character set - // and is also known as Code Page 936. - GBK encoding.Encoding = &gbk -) - -var gbk = internal.Encoding{ - &internal.SimpleEncoding{ - gbkDecoder{gb18030: false}, - gbkEncoder{gb18030: false}, - }, - "GBK", - identifier.GBK, -} - -var gbk18030 = internal.Encoding{ - &internal.SimpleEncoding{ - gbkDecoder{gb18030: true}, - gbkEncoder{gb18030: true}, - }, - "GB18030", - identifier.GB18030, -} - -var ( - errInvalidGB18030 = errors.New("simplifiedchinese: invalid GB18030 encoding") - errInvalidGBK = errors.New("simplifiedchinese: invalid GBK encoding") -) - -type gbkDecoder struct { - transform.NopResetter - gb18030 bool -} - -func (d gbkDecoder) Transform(dst, src []byte, atEOF bool) (nDst, nSrc int, err error) { - r, size := rune(0), 0 -loop: - for ; nSrc < len(src); nSrc += size { - switch c0 := src[nSrc]; { - case c0 < utf8.RuneSelf: - r, size = rune(c0), 1 - - // Microsoft's Code Page 936 extends GBK 1.0 to encode the euro sign U+20AC - // as 0x80. The HTML5 specification at http://encoding.spec.whatwg.org/#gbk - // says to treat "gbk" as Code Page 936. - case c0 == 0x80: - r, size = '€', 1 - - case c0 < 0xff: - if nSrc+1 >= len(src) { - err = transform.ErrShortSrc - break loop - } - c1 := src[nSrc+1] - switch { - case 0x40 <= c1 && c1 < 0x7f: - c1 -= 0x40 - case 0x80 <= c1 && c1 < 0xff: - c1 -= 0x41 - case d.gb18030 && 0x30 <= c1 && c1 < 0x40: - if nSrc+3 >= len(src) { - err = transform.ErrShortSrc - break loop - } - c2 := src[nSrc+2] - if c2 < 0x81 || 0xff <= c2 { - err = errInvalidGB18030 - break loop - } - c3 := src[nSrc+3] - if c3 < 0x30 || 0x3a <= c3 { - err = errInvalidGB18030 - break loop - } - size = 4 - r = ((rune(c0-0x81)*10+rune(c1-0x30))*126+rune(c2-0x81))*10 + rune(c3-0x30) - if r < 39420 { - i, j := 0, len(gb18030) - for i < j { - h := i + (j-i)/2 - if r >= rune(gb18030[h][0]) { - i = h + 1 - } else { - j = h - } - } - dec := &gb18030[i-1] - r += rune(dec[1]) - rune(dec[0]) - goto write - } - r -= 189000 - if 0 <= r && r < 0x100000 { - r += 0x10000 - goto write - } - err = errInvalidGB18030 - break loop - default: - if d.gb18030 { - err = errInvalidGB18030 - } else { - err = errInvalidGBK - } - break loop - } - r, size = '\ufffd', 2 - if i := int(c0-0x81)*190 + int(c1); i < len(decode) { - r = rune(decode[i]) - if r == 0 { - r = '\ufffd' - } - } - - default: - if d.gb18030 { - err = errInvalidGB18030 - } else { - err = errInvalidGBK - } - break loop - } - - write: - if nDst+utf8.RuneLen(r) > len(dst) { - err = transform.ErrShortDst - break loop - } - nDst += utf8.EncodeRune(dst[nDst:], r) - } - if atEOF && err == transform.ErrShortSrc { - if d.gb18030 { - err = errInvalidGB18030 - } else { - err = errInvalidGBK - } - } - return nDst, nSrc, err -} - -type gbkEncoder struct { - transform.NopResetter - gb18030 bool -} - -func (e gbkEncoder) Transform(dst, src []byte, atEOF bool) (nDst, nSrc int, err error) { - r, r2, size := rune(0), rune(0), 0 - for ; nSrc < len(src); nSrc += size { - r = rune(src[nSrc]) - - // Decode a 1-byte rune. - if r < utf8.RuneSelf { - size = 1 - - } else { - // Decode a multi-byte rune. - r, size = utf8.DecodeRune(src[nSrc:]) - if size == 1 { - // All valid runes of size 1 (those below utf8.RuneSelf) were - // handled above. We have invalid UTF-8 or we haven't seen the - // full character yet. - if !atEOF && !utf8.FullRune(src[nSrc:]) { - err = transform.ErrShortSrc - break - } - } - - // func init checks that the switch covers all tables. - switch { - case encode0Low <= r && r < encode0High: - if r2 = rune(encode0[r-encode0Low]); r2 != 0 { - goto write2 - } - case encode1Low <= r && r < encode1High: - // Microsoft's Code Page 936 extends GBK 1.0 to encode the euro sign U+20AC - // as 0x80. The HTML5 specification at http://encoding.spec.whatwg.org/#gbk - // says to treat "gbk" as Code Page 936. - if r == '€' { - r = 0x80 - goto write1 - } - if r2 = rune(encode1[r-encode1Low]); r2 != 0 { - goto write2 - } - case encode2Low <= r && r < encode2High: - if r2 = rune(encode2[r-encode2Low]); r2 != 0 { - goto write2 - } - case encode3Low <= r && r < encode3High: - if r2 = rune(encode3[r-encode3Low]); r2 != 0 { - goto write2 - } - case encode4Low <= r && r < encode4High: - if r2 = rune(encode4[r-encode4Low]); r2 != 0 { - goto write2 - } - } - - if e.gb18030 { - if r < 0x10000 { - i, j := 0, len(gb18030) - for i < j { - h := i + (j-i)/2 - if r >= rune(gb18030[h][1]) { - i = h + 1 - } else { - j = h - } - } - dec := &gb18030[i-1] - r += rune(dec[0]) - rune(dec[1]) - goto write4 - } else if r < 0x110000 { - r += 189000 - 0x10000 - goto write4 - } - } - r = encoding.ASCIISub - } - - write1: - if nDst >= len(dst) { - err = transform.ErrShortDst - break - } - dst[nDst] = uint8(r) - nDst++ - continue - - write2: - if nDst+2 > len(dst) { - err = transform.ErrShortDst - break - } - dst[nDst+0] = uint8(r2 >> 8) - dst[nDst+1] = uint8(r2) - nDst += 2 - continue - - write4: - if nDst+4 > len(dst) { - err = transform.ErrShortDst - break - } - dst[nDst+3] = uint8(r%10 + 0x30) - r /= 10 - dst[nDst+2] = uint8(r%126 + 0x81) - r /= 126 - dst[nDst+1] = uint8(r%10 + 0x30) - r /= 10 - dst[nDst+0] = uint8(r + 0x81) - nDst += 4 - continue - } - return nDst, nSrc, err -} - -func init() { - // Check that the hard-coded encode switch covers all tables. - if numEncodeTables != 5 { - panic("bad numEncodeTables") - } -} diff --git a/vendor/golang.org/x/text/encoding/simplifiedchinese/hzgb2312.go b/vendor/golang.org/x/text/encoding/simplifiedchinese/hzgb2312.go deleted file mode 100644 index e42af96..0000000 --- a/vendor/golang.org/x/text/encoding/simplifiedchinese/hzgb2312.go +++ /dev/null @@ -1,228 +0,0 @@ -// Copyright 2013 The Go Authors. All rights reserved. -// Use of this source code is governed by a BSD-style -// license that can be found in the LICENSE file. - -package simplifiedchinese - -import ( - "errors" - "unicode/utf8" - - "golang.org/x/text/encoding" - "golang.org/x/text/encoding/internal" - "golang.org/x/text/encoding/internal/identifier" - "golang.org/x/text/transform" -) - -// HZGB2312 is the HZ-GB2312 encoding. -var HZGB2312 encoding.Encoding = &hzGB2312 - -var hzGB2312 = internal.Encoding{ - internal.FuncEncoding{hzGB2312NewDecoder, hzGB2312NewEncoder}, - "HZ-GB2312", - identifier.HZGB2312, -} - -func hzGB2312NewDecoder() transform.Transformer { - return new(hzGB2312Decoder) -} - -func hzGB2312NewEncoder() transform.Transformer { - return new(hzGB2312Encoder) -} - -var errInvalidHZGB2312 = errors.New("simplifiedchinese: invalid HZ-GB2312 encoding") - -const ( - asciiState = iota - gbState -) - -type hzGB2312Decoder int - -func (d *hzGB2312Decoder) Reset() { - *d = asciiState -} - -func (d *hzGB2312Decoder) Transform(dst, src []byte, atEOF bool) (nDst, nSrc int, err error) { - r, size := rune(0), 0 -loop: - for ; nSrc < len(src); nSrc += size { - c0 := src[nSrc] - if c0 >= utf8.RuneSelf { - err = errInvalidHZGB2312 - break loop - } - - if c0 == '~' { - if nSrc+1 >= len(src) { - err = transform.ErrShortSrc - break loop - } - size = 2 - switch src[nSrc+1] { - case '{': - *d = gbState - continue - case '}': - *d = asciiState - continue - case '~': - if nDst >= len(dst) { - err = transform.ErrShortDst - break loop - } - dst[nDst] = '~' - nDst++ - continue - case '\n': - continue - default: - err = errInvalidHZGB2312 - break loop - } - } - - if *d == asciiState { - r, size = rune(c0), 1 - } else { - if nSrc+1 >= len(src) { - err = transform.ErrShortSrc - break loop - } - c1 := src[nSrc+1] - if c0 < 0x21 || 0x7e <= c0 || c1 < 0x21 || 0x7f <= c1 { - err = errInvalidHZGB2312 - break loop - } - - r, size = '\ufffd', 2 - if i := int(c0-0x01)*190 + int(c1+0x3f); i < len(decode) { - r = rune(decode[i]) - if r == 0 { - r = '\ufffd' - } - } - } - - if nDst+utf8.RuneLen(r) > len(dst) { - err = transform.ErrShortDst - break loop - } - nDst += utf8.EncodeRune(dst[nDst:], r) - } - if atEOF && err == transform.ErrShortSrc { - err = errInvalidHZGB2312 - } - return nDst, nSrc, err -} - -type hzGB2312Encoder int - -func (d *hzGB2312Encoder) Reset() { - *d = asciiState -} - -func (e *hzGB2312Encoder) Transform(dst, src []byte, atEOF bool) (nDst, nSrc int, err error) { - r, size := rune(0), 0 - for ; nSrc < len(src); nSrc += size { - r = rune(src[nSrc]) - - // Decode a 1-byte rune. - if r < utf8.RuneSelf { - size = 1 - if r == '~' { - if nDst+2 > len(dst) { - err = transform.ErrShortDst - break - } - dst[nDst+0] = '~' - dst[nDst+1] = '~' - nDst += 2 - continue - } - - } else { - // Decode a multi-byte rune. - r, size = utf8.DecodeRune(src[nSrc:]) - if size == 1 { - // All valid runes of size 1 (those below utf8.RuneSelf) were - // handled above. We have invalid UTF-8 or we haven't seen the - // full character yet. - if !atEOF && !utf8.FullRune(src[nSrc:]) { - err = transform.ErrShortSrc - break - } - } - - // func init checks that the switch covers all tables. - switch { - case encode0Low <= r && r < encode0High: - if r = rune(encode0[r-encode0Low]); r != 0 { - goto writeGB - } - case encode1Low <= r && r < encode1High: - if r = rune(encode1[r-encode1Low]); r != 0 { - goto writeGB - } - case encode2Low <= r && r < encode2High: - if r = rune(encode2[r-encode2Low]); r != 0 { - goto writeGB - } - case encode3Low <= r && r < encode3High: - if r = rune(encode3[r-encode3Low]); r != 0 { - goto writeGB - } - case encode4Low <= r && r < encode4High: - if r = rune(encode4[r-encode4Low]); r != 0 { - goto writeGB - } - } - r = encoding.ASCIISub - } - - writeASCII: - if *e != asciiState { - if nDst+3 > len(dst) { - err = transform.ErrShortDst - break - } - *e = asciiState - dst[nDst+0] = '~' - dst[nDst+1] = '}' - nDst += 2 - } else if nDst >= len(dst) { - err = transform.ErrShortDst - break - } - dst[nDst] = uint8(r) - nDst++ - continue - - writeGB: - c0 := uint8(r>>8) - 0x80 - c1 := uint8(r) - 0x80 - if c0 < 0x21 || 0x7e <= c0 || c1 < 0x21 || 0x7f <= c1 { - r = encoding.ASCIISub - goto writeASCII - } - if *e == asciiState { - if nDst+4 > len(dst) { - err = transform.ErrShortDst - break - } - *e = gbState - dst[nDst+0] = '~' - dst[nDst+1] = '{' - nDst += 2 - } else if nDst+2 > len(dst) { - err = transform.ErrShortDst - break - } - dst[nDst+0] = c0 - dst[nDst+1] = c1 - nDst += 2 - continue - } - return nDst, nSrc, err -} diff --git a/vendor/golang.org/x/text/encoding/simplifiedchinese/maketables.go b/vendor/golang.org/x/text/encoding/simplifiedchinese/maketables.go deleted file mode 100644 index 55016c7..0000000 --- a/vendor/golang.org/x/text/encoding/simplifiedchinese/maketables.go +++ /dev/null @@ -1,161 +0,0 @@ -// Copyright 2013 The Go Authors. All rights reserved. -// Use of this source code is governed by a BSD-style -// license that can be found in the LICENSE file. - -// +build ignore - -package main - -// This program generates tables.go: -// go run maketables.go | gofmt > tables.go - -import ( - "bufio" - "fmt" - "log" - "net/http" - "sort" - "strings" -) - -func main() { - fmt.Printf("// generated by go run maketables.go; DO NOT EDIT\n\n") - fmt.Printf("// Package simplifiedchinese provides Simplified Chinese encodings such as GBK.\n") - fmt.Printf(`package simplifiedchinese // import "golang.org/x/text/encoding/simplifiedchinese"` + "\n\n") - - printGB18030() - printGBK() -} - -func printGB18030() { - res, err := http.Get("http://encoding.spec.whatwg.org/index-gb18030.txt") - if err != nil { - log.Fatalf("Get: %v", err) - } - defer res.Body.Close() - - fmt.Printf("// gb18030 is the table from http://encoding.spec.whatwg.org/index-gb18030.txt\n") - fmt.Printf("var gb18030 = [...][2]uint16{\n") - scanner := bufio.NewScanner(res.Body) - for scanner.Scan() { - s := strings.TrimSpace(scanner.Text()) - if s == "" || s[0] == '#' { - continue - } - x, y := uint32(0), uint32(0) - if _, err := fmt.Sscanf(s, "%d 0x%x", &x, &y); err != nil { - log.Fatalf("could not parse %q", s) - } - if x < 0x10000 && y < 0x10000 { - fmt.Printf("\t{0x%04x, 0x%04x},\n", x, y) - } - } - fmt.Printf("}\n\n") -} - -func printGBK() { - res, err := http.Get("http://encoding.spec.whatwg.org/index-gbk.txt") - if err != nil { - log.Fatalf("Get: %v", err) - } - defer res.Body.Close() - - mapping := [65536]uint16{} - reverse := [65536]uint16{} - - scanner := bufio.NewScanner(res.Body) - for scanner.Scan() { - s := strings.TrimSpace(scanner.Text()) - if s == "" || s[0] == '#' { - continue - } - x, y := uint16(0), uint16(0) - if _, err := fmt.Sscanf(s, "%d 0x%x", &x, &y); err != nil { - log.Fatalf("could not parse %q", s) - } - if x < 0 || 126*190 <= x { - log.Fatalf("GBK code %d is out of range", x) - } - mapping[x] = y - if reverse[y] == 0 { - c0, c1 := x/190, x%190 - if c1 >= 0x3f { - c1++ - } - reverse[y] = (0x81+c0)<<8 | (0x40 + c1) - } - } - if err := scanner.Err(); err != nil { - log.Fatalf("scanner error: %v", err) - } - - fmt.Printf("// decode is the decoding table from GBK code to Unicode.\n") - fmt.Printf("// It is defined at http://encoding.spec.whatwg.org/index-gbk.txt\n") - fmt.Printf("var decode = [...]uint16{\n") - for i, v := range mapping { - if v != 0 { - fmt.Printf("\t%d: 0x%04X,\n", i, v) - } - } - fmt.Printf("}\n\n") - - // Any run of at least separation continuous zero entries in the reverse map will - // be a separate encode table. - const separation = 1024 - - intervals := []interval(nil) - low, high := -1, -1 - for i, v := range reverse { - if v == 0 { - continue - } - if low < 0 { - low = i - } else if i-high >= separation { - if high >= 0 { - intervals = append(intervals, interval{low, high}) - } - low = i - } - high = i + 1 - } - if high >= 0 { - intervals = append(intervals, interval{low, high}) - } - sort.Sort(byDecreasingLength(intervals)) - - fmt.Printf("const numEncodeTables = %d\n\n", len(intervals)) - fmt.Printf("// encodeX are the encoding tables from Unicode to GBK code,\n") - fmt.Printf("// sorted by decreasing length.\n") - for i, v := range intervals { - fmt.Printf("// encode%d: %5d entries for runes in [%5d, %5d).\n", i, v.len(), v.low, v.high) - } - fmt.Printf("\n") - - for i, v := range intervals { - fmt.Printf("const encode%dLow, encode%dHigh = %d, %d\n\n", i, i, v.low, v.high) - fmt.Printf("var encode%d = [...]uint16{\n", i) - for j := v.low; j < v.high; j++ { - x := reverse[j] - if x == 0 { - continue - } - fmt.Printf("\t%d-%d: 0x%04X,\n", j, v.low, x) - } - fmt.Printf("}\n\n") - } -} - -// interval is a half-open interval [low, high). -type interval struct { - low, high int -} - -func (i interval) len() int { return i.high - i.low } - -// byDecreasingLength sorts intervals by decreasing length. -type byDecreasingLength []interval - -func (b byDecreasingLength) Len() int { return len(b) } -func (b byDecreasingLength) Less(i, j int) bool { return b[i].len() > b[j].len() } -func (b byDecreasingLength) Swap(i, j int) { b[i], b[j] = b[j], b[i] } diff --git a/vendor/golang.org/x/text/encoding/simplifiedchinese/tables.go b/vendor/golang.org/x/text/encoding/simplifiedchinese/tables.go deleted file mode 100644 index 415f52a..0000000 --- a/vendor/golang.org/x/text/encoding/simplifiedchinese/tables.go +++ /dev/null @@ -1,43999 +0,0 @@ -// generated by go run maketables.go; DO NOT EDIT - -// Package simplifiedchinese provides Simplified Chinese encodings such as GBK. -package simplifiedchinese // import "golang.org/x/text/encoding/simplifiedchinese" - -// gb18030 is the table from http://encoding.spec.whatwg.org/index-gb18030.txt -var gb18030 = [...][2]uint16{ - {0x0000, 0x0080}, - {0x0024, 0x00a5}, - {0x0026, 0x00a9}, - {0x002d, 0x00b2}, - {0x0032, 0x00b8}, - {0x0051, 0x00d8}, - {0x0059, 0x00e2}, - {0x005f, 0x00eb}, - {0x0060, 0x00ee}, - {0x0064, 0x00f4}, - {0x0067, 0x00f8}, - {0x0068, 0x00fb}, - {0x0069, 0x00fd}, - {0x006d, 0x0102}, - {0x007e, 0x0114}, - {0x0085, 0x011c}, - {0x0094, 0x012c}, - {0x00ac, 0x0145}, - {0x00af, 0x0149}, - {0x00b3, 0x014e}, - {0x00d0, 0x016c}, - {0x0132, 0x01cf}, - {0x0133, 0x01d1}, - {0x0134, 0x01d3}, - {0x0135, 0x01d5}, - {0x0136, 0x01d7}, - {0x0137, 0x01d9}, - {0x0138, 0x01db}, - {0x0139, 0x01dd}, - {0x0155, 0x01fa}, - {0x01ac, 0x0252}, - {0x01bb, 0x0262}, - {0x0220, 0x02c8}, - {0x0221, 0x02cc}, - {0x022e, 0x02da}, - {0x02e5, 0x03a2}, - {0x02e6, 0x03aa}, - {0x02ed, 0x03c2}, - {0x02ee, 0x03ca}, - {0x0325, 0x0402}, - {0x0333, 0x0450}, - {0x0334, 0x0452}, - {0x1ef2, 0x2011}, - {0x1ef4, 0x2017}, - {0x1ef5, 0x201a}, - {0x1ef7, 0x201e}, - {0x1efe, 0x2027}, - {0x1f07, 0x2031}, - {0x1f08, 0x2034}, - {0x1f09, 0x2036}, - {0x1f0e, 0x203c}, - {0x1f7e, 0x20ad}, - {0x1fd4, 0x2104}, - {0x1fd5, 0x2106}, - {0x1fd8, 0x210a}, - {0x1fe4, 0x2117}, - {0x1fee, 0x2122}, - {0x202c, 0x216c}, - {0x2030, 0x217a}, - {0x2046, 0x2194}, - {0x2048, 0x219a}, - {0x20b6, 0x2209}, - {0x20bc, 0x2210}, - {0x20bd, 0x2212}, - {0x20c0, 0x2216}, - {0x20c4, 0x221b}, - {0x20c6, 0x2221}, - {0x20c8, 0x2224}, - {0x20c9, 0x2226}, - {0x20ca, 0x222c}, - {0x20cc, 0x222f}, - {0x20d1, 0x2238}, - {0x20d6, 0x223e}, - {0x20e0, 0x2249}, - {0x20e3, 0x224d}, - {0x20e8, 0x2253}, - {0x20f5, 0x2262}, - {0x20f7, 0x2268}, - {0x20fd, 0x2270}, - {0x2122, 0x2296}, - {0x2125, 0x229a}, - {0x2130, 0x22a6}, - {0x2149, 0x22c0}, - {0x219b, 0x2313}, - {0x22e8, 0x246a}, - {0x22f2, 0x249c}, - {0x2356, 0x254c}, - {0x235a, 0x2574}, - {0x2367, 0x2590}, - {0x236a, 0x2596}, - {0x2374, 0x25a2}, - {0x2384, 0x25b4}, - {0x238c, 0x25be}, - {0x2394, 0x25c8}, - {0x2397, 0x25cc}, - {0x2399, 0x25d0}, - {0x23ab, 0x25e6}, - {0x23ca, 0x2607}, - {0x23cc, 0x260a}, - {0x2402, 0x2641}, - {0x2403, 0x2643}, - {0x2c41, 0x2e82}, - {0x2c43, 0x2e85}, - {0x2c46, 0x2e89}, - {0x2c48, 0x2e8d}, - {0x2c52, 0x2e98}, - {0x2c61, 0x2ea8}, - {0x2c63, 0x2eab}, - {0x2c66, 0x2eaf}, - {0x2c6a, 0x2eb4}, - {0x2c6c, 0x2eb8}, - {0x2c6f, 0x2ebc}, - {0x2c7d, 0x2ecb}, - {0x2da2, 0x2ffc}, - {0x2da6, 0x3004}, - {0x2da7, 0x3018}, - {0x2dac, 0x301f}, - {0x2dae, 0x302a}, - {0x2dc2, 0x303f}, - {0x2dc4, 0x3094}, - {0x2dcb, 0x309f}, - {0x2dcd, 0x30f7}, - {0x2dd2, 0x30ff}, - {0x2dd8, 0x312a}, - {0x2ece, 0x322a}, - {0x2ed5, 0x3232}, - {0x2f46, 0x32a4}, - {0x3030, 0x3390}, - {0x303c, 0x339f}, - {0x303e, 0x33a2}, - {0x3060, 0x33c5}, - {0x3069, 0x33cf}, - {0x306b, 0x33d3}, - {0x306d, 0x33d6}, - {0x30de, 0x3448}, - {0x3109, 0x3474}, - {0x3233, 0x359f}, - {0x32a2, 0x360f}, - {0x32ad, 0x361b}, - {0x35aa, 0x3919}, - {0x35ff, 0x396f}, - {0x365f, 0x39d1}, - {0x366d, 0x39e0}, - {0x3700, 0x3a74}, - {0x37da, 0x3b4f}, - {0x38f9, 0x3c6f}, - {0x396a, 0x3ce1}, - {0x3cdf, 0x4057}, - {0x3de7, 0x4160}, - {0x3fbe, 0x4338}, - {0x4032, 0x43ad}, - {0x4036, 0x43b2}, - {0x4061, 0x43de}, - {0x4159, 0x44d7}, - {0x42ce, 0x464d}, - {0x42e2, 0x4662}, - {0x43a3, 0x4724}, - {0x43a8, 0x472a}, - {0x43fa, 0x477d}, - {0x440a, 0x478e}, - {0x45c3, 0x4948}, - {0x45f5, 0x497b}, - {0x45f7, 0x497e}, - {0x45fb, 0x4984}, - {0x45fc, 0x4987}, - {0x4610, 0x499c}, - {0x4613, 0x49a0}, - {0x4629, 0x49b8}, - {0x48e8, 0x4c78}, - {0x490f, 0x4ca4}, - {0x497e, 0x4d1a}, - {0x4a12, 0x4daf}, - {0x4a63, 0x9fa6}, - {0x82bd, 0xe76c}, - {0x82be, 0xe7c8}, - {0x82bf, 0xe7e7}, - {0x82cc, 0xe815}, - {0x82cd, 0xe819}, - {0x82d2, 0xe81f}, - {0x82d9, 0xe827}, - {0x82dd, 0xe82d}, - {0x82e1, 0xe833}, - {0x82e9, 0xe83c}, - {0x82f0, 0xe844}, - {0x8300, 0xe856}, - {0x830e, 0xe865}, - {0x93d5, 0xf92d}, - {0x9421, 0xf97a}, - {0x943c, 0xf996}, - {0x948d, 0xf9e8}, - {0x9496, 0xf9f2}, - {0x94b0, 0xfa10}, - {0x94b1, 0xfa12}, - {0x94b2, 0xfa15}, - {0x94b5, 0xfa19}, - {0x94bb, 0xfa22}, - {0x94bc, 0xfa25}, - {0x94be, 0xfa2a}, - {0x98c4, 0xfe32}, - {0x98c5, 0xfe45}, - {0x98c9, 0xfe53}, - {0x98ca, 0xfe58}, - {0x98cb, 0xfe67}, - {0x98cc, 0xfe6c}, - {0x9961, 0xff5f}, - {0x99e2, 0xffe6}, -} - -// decode is the decoding table from GBK code to Unicode. -// It is defined at http://encoding.spec.whatwg.org/index-gbk.txt -var decode = [...]uint16{ - 0: 0x4E02, - 1: 0x4E04, - 2: 0x4E05, - 3: 0x4E06, - 4: 0x4E0F, - 5: 0x4E12, - 6: 0x4E17, - 7: 0x4E1F, - 8: 0x4E20, - 9: 0x4E21, - 10: 0x4E23, - 11: 0x4E26, - 12: 0x4E29, - 13: 0x4E2E, - 14: 0x4E2F, - 15: 0x4E31, - 16: 0x4E33, - 17: 0x4E35, - 18: 0x4E37, - 19: 0x4E3C, - 20: 0x4E40, - 21: 0x4E41, - 22: 0x4E42, - 23: 0x4E44, - 24: 0x4E46, - 25: 0x4E4A, - 26: 0x4E51, - 27: 0x4E55, - 28: 0x4E57, - 29: 0x4E5A, - 30: 0x4E5B, - 31: 0x4E62, - 32: 0x4E63, - 33: 0x4E64, - 34: 0x4E65, - 35: 0x4E67, - 36: 0x4E68, - 37: 0x4E6A, - 38: 0x4E6B, - 39: 0x4E6C, - 40: 0x4E6D, - 41: 0x4E6E, - 42: 0x4E6F, - 43: 0x4E72, - 44: 0x4E74, - 45: 0x4E75, - 46: 0x4E76, - 47: 0x4E77, - 48: 0x4E78, - 49: 0x4E79, - 50: 0x4E7A, - 51: 0x4E7B, - 52: 0x4E7C, - 53: 0x4E7D, - 54: 0x4E7F, - 55: 0x4E80, - 56: 0x4E81, - 57: 0x4E82, - 58: 0x4E83, - 59: 0x4E84, - 60: 0x4E85, - 61: 0x4E87, - 62: 0x4E8A, - 63: 0x4E90, - 64: 0x4E96, - 65: 0x4E97, - 66: 0x4E99, - 67: 0x4E9C, - 68: 0x4E9D, - 69: 0x4E9E, - 70: 0x4EA3, - 71: 0x4EAA, - 72: 0x4EAF, - 73: 0x4EB0, - 74: 0x4EB1, - 75: 0x4EB4, - 76: 0x4EB6, - 77: 0x4EB7, - 78: 0x4EB8, - 79: 0x4EB9, - 80: 0x4EBC, - 81: 0x4EBD, - 82: 0x4EBE, - 83: 0x4EC8, - 84: 0x4ECC, - 85: 0x4ECF, - 86: 0x4ED0, - 87: 0x4ED2, - 88: 0x4EDA, - 89: 0x4EDB, - 90: 0x4EDC, - 91: 0x4EE0, - 92: 0x4EE2, - 93: 0x4EE6, - 94: 0x4EE7, - 95: 0x4EE9, - 96: 0x4EED, - 97: 0x4EEE, - 98: 0x4EEF, - 99: 0x4EF1, - 100: 0x4EF4, - 101: 0x4EF8, - 102: 0x4EF9, - 103: 0x4EFA, - 104: 0x4EFC, - 105: 0x4EFE, - 106: 0x4F00, - 107: 0x4F02, - 108: 0x4F03, - 109: 0x4F04, - 110: 0x4F05, - 111: 0x4F06, - 112: 0x4F07, - 113: 0x4F08, - 114: 0x4F0B, - 115: 0x4F0C, - 116: 0x4F12, - 117: 0x4F13, - 118: 0x4F14, - 119: 0x4F15, - 120: 0x4F16, - 121: 0x4F1C, - 122: 0x4F1D, - 123: 0x4F21, - 124: 0x4F23, - 125: 0x4F28, - 126: 0x4F29, - 127: 0x4F2C, - 128: 0x4F2D, - 129: 0x4F2E, - 130: 0x4F31, - 131: 0x4F33, - 132: 0x4F35, - 133: 0x4F37, - 134: 0x4F39, - 135: 0x4F3B, - 136: 0x4F3E, - 137: 0x4F3F, - 138: 0x4F40, - 139: 0x4F41, - 140: 0x4F42, - 141: 0x4F44, - 142: 0x4F45, - 143: 0x4F47, - 144: 0x4F48, - 145: 0x4F49, - 146: 0x4F4A, - 147: 0x4F4B, - 148: 0x4F4C, - 149: 0x4F52, - 150: 0x4F54, - 151: 0x4F56, - 152: 0x4F61, - 153: 0x4F62, - 154: 0x4F66, - 155: 0x4F68, - 156: 0x4F6A, - 157: 0x4F6B, - 158: 0x4F6D, - 159: 0x4F6E, - 160: 0x4F71, - 161: 0x4F72, - 162: 0x4F75, - 163: 0x4F77, - 164: 0x4F78, - 165: 0x4F79, - 166: 0x4F7A, - 167: 0x4F7D, - 168: 0x4F80, - 169: 0x4F81, - 170: 0x4F82, - 171: 0x4F85, - 172: 0x4F86, - 173: 0x4F87, - 174: 0x4F8A, - 175: 0x4F8C, - 176: 0x4F8E, - 177: 0x4F90, - 178: 0x4F92, - 179: 0x4F93, - 180: 0x4F95, - 181: 0x4F96, - 182: 0x4F98, - 183: 0x4F99, - 184: 0x4F9A, - 185: 0x4F9C, - 186: 0x4F9E, - 187: 0x4F9F, - 188: 0x4FA1, - 189: 0x4FA2, - 190: 0x4FA4, - 191: 0x4FAB, - 192: 0x4FAD, - 193: 0x4FB0, - 194: 0x4FB1, - 195: 0x4FB2, - 196: 0x4FB3, - 197: 0x4FB4, - 198: 0x4FB6, - 199: 0x4FB7, - 200: 0x4FB8, - 201: 0x4FB9, - 202: 0x4FBA, - 203: 0x4FBB, - 204: 0x4FBC, - 205: 0x4FBD, - 206: 0x4FBE, - 207: 0x4FC0, - 208: 0x4FC1, - 209: 0x4FC2, - 210: 0x4FC6, - 211: 0x4FC7, - 212: 0x4FC8, - 213: 0x4FC9, - 214: 0x4FCB, - 215: 0x4FCC, - 216: 0x4FCD, - 217: 0x4FD2, - 218: 0x4FD3, - 219: 0x4FD4, - 220: 0x4FD5, - 221: 0x4FD6, - 222: 0x4FD9, - 223: 0x4FDB, - 224: 0x4FE0, - 225: 0x4FE2, - 226: 0x4FE4, - 227: 0x4FE5, - 228: 0x4FE7, - 229: 0x4FEB, - 230: 0x4FEC, - 231: 0x4FF0, - 232: 0x4FF2, - 233: 0x4FF4, - 234: 0x4FF5, - 235: 0x4FF6, - 236: 0x4FF7, - 237: 0x4FF9, - 238: 0x4FFB, - 239: 0x4FFC, - 240: 0x4FFD, - 241: 0x4FFF, - 242: 0x5000, - 243: 0x5001, - 244: 0x5002, - 245: 0x5003, - 246: 0x5004, - 247: 0x5005, - 248: 0x5006, - 249: 0x5007, - 250: 0x5008, - 251: 0x5009, - 252: 0x500A, - 253: 0x500B, - 254: 0x500E, - 255: 0x5010, - 256: 0x5011, - 257: 0x5013, - 258: 0x5015, - 259: 0x5016, - 260: 0x5017, - 261: 0x501B, - 262: 0x501D, - 263: 0x501E, - 264: 0x5020, - 265: 0x5022, - 266: 0x5023, - 267: 0x5024, - 268: 0x5027, - 269: 0x502B, - 270: 0x502F, - 271: 0x5030, - 272: 0x5031, - 273: 0x5032, - 274: 0x5033, - 275: 0x5034, - 276: 0x5035, - 277: 0x5036, - 278: 0x5037, - 279: 0x5038, - 280: 0x5039, - 281: 0x503B, - 282: 0x503D, - 283: 0x503F, - 284: 0x5040, - 285: 0x5041, - 286: 0x5042, - 287: 0x5044, - 288: 0x5045, - 289: 0x5046, - 290: 0x5049, - 291: 0x504A, - 292: 0x504B, - 293: 0x504D, - 294: 0x5050, - 295: 0x5051, - 296: 0x5052, - 297: 0x5053, - 298: 0x5054, - 299: 0x5056, - 300: 0x5057, - 301: 0x5058, - 302: 0x5059, - 303: 0x505B, - 304: 0x505D, - 305: 0x505E, - 306: 0x505F, - 307: 0x5060, - 308: 0x5061, - 309: 0x5062, - 310: 0x5063, - 311: 0x5064, - 312: 0x5066, - 313: 0x5067, - 314: 0x5068, - 315: 0x5069, - 316: 0x506A, - 317: 0x506B, - 318: 0x506D, - 319: 0x506E, - 320: 0x506F, - 321: 0x5070, - 322: 0x5071, - 323: 0x5072, - 324: 0x5073, - 325: 0x5074, - 326: 0x5075, - 327: 0x5078, - 328: 0x5079, - 329: 0x507A, - 330: 0x507C, - 331: 0x507D, - 332: 0x5081, - 333: 0x5082, - 334: 0x5083, - 335: 0x5084, - 336: 0x5086, - 337: 0x5087, - 338: 0x5089, - 339: 0x508A, - 340: 0x508B, - 341: 0x508C, - 342: 0x508E, - 343: 0x508F, - 344: 0x5090, - 345: 0x5091, - 346: 0x5092, - 347: 0x5093, - 348: 0x5094, - 349: 0x5095, - 350: 0x5096, - 351: 0x5097, - 352: 0x5098, - 353: 0x5099, - 354: 0x509A, - 355: 0x509B, - 356: 0x509C, - 357: 0x509D, - 358: 0x509E, - 359: 0x509F, - 360: 0x50A0, - 361: 0x50A1, - 362: 0x50A2, - 363: 0x50A4, - 364: 0x50A6, - 365: 0x50AA, - 366: 0x50AB, - 367: 0x50AD, - 368: 0x50AE, - 369: 0x50AF, - 370: 0x50B0, - 371: 0x50B1, - 372: 0x50B3, - 373: 0x50B4, - 374: 0x50B5, - 375: 0x50B6, - 376: 0x50B7, - 377: 0x50B8, - 378: 0x50B9, - 379: 0x50BC, - 380: 0x50BD, - 381: 0x50BE, - 382: 0x50BF, - 383: 0x50C0, - 384: 0x50C1, - 385: 0x50C2, - 386: 0x50C3, - 387: 0x50C4, - 388: 0x50C5, - 389: 0x50C6, - 390: 0x50C7, - 391: 0x50C8, - 392: 0x50C9, - 393: 0x50CA, - 394: 0x50CB, - 395: 0x50CC, - 396: 0x50CD, - 397: 0x50CE, - 398: 0x50D0, - 399: 0x50D1, - 400: 0x50D2, - 401: 0x50D3, - 402: 0x50D4, - 403: 0x50D5, - 404: 0x50D7, - 405: 0x50D8, - 406: 0x50D9, - 407: 0x50DB, - 408: 0x50DC, - 409: 0x50DD, - 410: 0x50DE, - 411: 0x50DF, - 412: 0x50E0, - 413: 0x50E1, - 414: 0x50E2, - 415: 0x50E3, - 416: 0x50E4, - 417: 0x50E5, - 418: 0x50E8, - 419: 0x50E9, - 420: 0x50EA, - 421: 0x50EB, - 422: 0x50EF, - 423: 0x50F0, - 424: 0x50F1, - 425: 0x50F2, - 426: 0x50F4, - 427: 0x50F6, - 428: 0x50F7, - 429: 0x50F8, - 430: 0x50F9, - 431: 0x50FA, - 432: 0x50FC, - 433: 0x50FD, - 434: 0x50FE, - 435: 0x50FF, - 436: 0x5100, - 437: 0x5101, - 438: 0x5102, - 439: 0x5103, - 440: 0x5104, - 441: 0x5105, - 442: 0x5108, - 443: 0x5109, - 444: 0x510A, - 445: 0x510C, - 446: 0x510D, - 447: 0x510E, - 448: 0x510F, - 449: 0x5110, - 450: 0x5111, - 451: 0x5113, - 452: 0x5114, - 453: 0x5115, - 454: 0x5116, - 455: 0x5117, - 456: 0x5118, - 457: 0x5119, - 458: 0x511A, - 459: 0x511B, - 460: 0x511C, - 461: 0x511D, - 462: 0x511E, - 463: 0x511F, - 464: 0x5120, - 465: 0x5122, - 466: 0x5123, - 467: 0x5124, - 468: 0x5125, - 469: 0x5126, - 470: 0x5127, - 471: 0x5128, - 472: 0x5129, - 473: 0x512A, - 474: 0x512B, - 475: 0x512C, - 476: 0x512D, - 477: 0x512E, - 478: 0x512F, - 479: 0x5130, - 480: 0x5131, - 481: 0x5132, - 482: 0x5133, - 483: 0x5134, - 484: 0x5135, - 485: 0x5136, - 486: 0x5137, - 487: 0x5138, - 488: 0x5139, - 489: 0x513A, - 490: 0x513B, - 491: 0x513C, - 492: 0x513D, - 493: 0x513E, - 494: 0x5142, - 495: 0x5147, - 496: 0x514A, - 497: 0x514C, - 498: 0x514E, - 499: 0x514F, - 500: 0x5150, - 501: 0x5152, - 502: 0x5153, - 503: 0x5157, - 504: 0x5158, - 505: 0x5159, - 506: 0x515B, - 507: 0x515D, - 508: 0x515E, - 509: 0x515F, - 510: 0x5160, - 511: 0x5161, - 512: 0x5163, - 513: 0x5164, - 514: 0x5166, - 515: 0x5167, - 516: 0x5169, - 517: 0x516A, - 518: 0x516F, - 519: 0x5172, - 520: 0x517A, - 521: 0x517E, - 522: 0x517F, - 523: 0x5183, - 524: 0x5184, - 525: 0x5186, - 526: 0x5187, - 527: 0x518A, - 528: 0x518B, - 529: 0x518E, - 530: 0x518F, - 531: 0x5190, - 532: 0x5191, - 533: 0x5193, - 534: 0x5194, - 535: 0x5198, - 536: 0x519A, - 537: 0x519D, - 538: 0x519E, - 539: 0x519F, - 540: 0x51A1, - 541: 0x51A3, - 542: 0x51A6, - 543: 0x51A7, - 544: 0x51A8, - 545: 0x51A9, - 546: 0x51AA, - 547: 0x51AD, - 548: 0x51AE, - 549: 0x51B4, - 550: 0x51B8, - 551: 0x51B9, - 552: 0x51BA, - 553: 0x51BE, - 554: 0x51BF, - 555: 0x51C1, - 556: 0x51C2, - 557: 0x51C3, - 558: 0x51C5, - 559: 0x51C8, - 560: 0x51CA, - 561: 0x51CD, - 562: 0x51CE, - 563: 0x51D0, - 564: 0x51D2, - 565: 0x51D3, - 566: 0x51D4, - 567: 0x51D5, - 568: 0x51D6, - 569: 0x51D7, - 570: 0x51D8, - 571: 0x51D9, - 572: 0x51DA, - 573: 0x51DC, - 574: 0x51DE, - 575: 0x51DF, - 576: 0x51E2, - 577: 0x51E3, - 578: 0x51E5, - 579: 0x51E6, - 580: 0x51E7, - 581: 0x51E8, - 582: 0x51E9, - 583: 0x51EA, - 584: 0x51EC, - 585: 0x51EE, - 586: 0x51F1, - 587: 0x51F2, - 588: 0x51F4, - 589: 0x51F7, - 590: 0x51FE, - 591: 0x5204, - 592: 0x5205, - 593: 0x5209, - 594: 0x520B, - 595: 0x520C, - 596: 0x520F, - 597: 0x5210, - 598: 0x5213, - 599: 0x5214, - 600: 0x5215, - 601: 0x521C, - 602: 0x521E, - 603: 0x521F, - 604: 0x5221, - 605: 0x5222, - 606: 0x5223, - 607: 0x5225, - 608: 0x5226, - 609: 0x5227, - 610: 0x522A, - 611: 0x522C, - 612: 0x522F, - 613: 0x5231, - 614: 0x5232, - 615: 0x5234, - 616: 0x5235, - 617: 0x523C, - 618: 0x523E, - 619: 0x5244, - 620: 0x5245, - 621: 0x5246, - 622: 0x5247, - 623: 0x5248, - 624: 0x5249, - 625: 0x524B, - 626: 0x524E, - 627: 0x524F, - 628: 0x5252, - 629: 0x5253, - 630: 0x5255, - 631: 0x5257, - 632: 0x5258, - 633: 0x5259, - 634: 0x525A, - 635: 0x525B, - 636: 0x525D, - 637: 0x525F, - 638: 0x5260, - 639: 0x5262, - 640: 0x5263, - 641: 0x5264, - 642: 0x5266, - 643: 0x5268, - 644: 0x526B, - 645: 0x526C, - 646: 0x526D, - 647: 0x526E, - 648: 0x5270, - 649: 0x5271, - 650: 0x5273, - 651: 0x5274, - 652: 0x5275, - 653: 0x5276, - 654: 0x5277, - 655: 0x5278, - 656: 0x5279, - 657: 0x527A, - 658: 0x527B, - 659: 0x527C, - 660: 0x527E, - 661: 0x5280, - 662: 0x5283, - 663: 0x5284, - 664: 0x5285, - 665: 0x5286, - 666: 0x5287, - 667: 0x5289, - 668: 0x528A, - 669: 0x528B, - 670: 0x528C, - 671: 0x528D, - 672: 0x528E, - 673: 0x528F, - 674: 0x5291, - 675: 0x5292, - 676: 0x5294, - 677: 0x5295, - 678: 0x5296, - 679: 0x5297, - 680: 0x5298, - 681: 0x5299, - 682: 0x529A, - 683: 0x529C, - 684: 0x52A4, - 685: 0x52A5, - 686: 0x52A6, - 687: 0x52A7, - 688: 0x52AE, - 689: 0x52AF, - 690: 0x52B0, - 691: 0x52B4, - 692: 0x52B5, - 693: 0x52B6, - 694: 0x52B7, - 695: 0x52B8, - 696: 0x52B9, - 697: 0x52BA, - 698: 0x52BB, - 699: 0x52BC, - 700: 0x52BD, - 701: 0x52C0, - 702: 0x52C1, - 703: 0x52C2, - 704: 0x52C4, - 705: 0x52C5, - 706: 0x52C6, - 707: 0x52C8, - 708: 0x52CA, - 709: 0x52CC, - 710: 0x52CD, - 711: 0x52CE, - 712: 0x52CF, - 713: 0x52D1, - 714: 0x52D3, - 715: 0x52D4, - 716: 0x52D5, - 717: 0x52D7, - 718: 0x52D9, - 719: 0x52DA, - 720: 0x52DB, - 721: 0x52DC, - 722: 0x52DD, - 723: 0x52DE, - 724: 0x52E0, - 725: 0x52E1, - 726: 0x52E2, - 727: 0x52E3, - 728: 0x52E5, - 729: 0x52E6, - 730: 0x52E7, - 731: 0x52E8, - 732: 0x52E9, - 733: 0x52EA, - 734: 0x52EB, - 735: 0x52EC, - 736: 0x52ED, - 737: 0x52EE, - 738: 0x52EF, - 739: 0x52F1, - 740: 0x52F2, - 741: 0x52F3, - 742: 0x52F4, - 743: 0x52F5, - 744: 0x52F6, - 745: 0x52F7, - 746: 0x52F8, - 747: 0x52FB, - 748: 0x52FC, - 749: 0x52FD, - 750: 0x5301, - 751: 0x5302, - 752: 0x5303, - 753: 0x5304, - 754: 0x5307, - 755: 0x5309, - 756: 0x530A, - 757: 0x530B, - 758: 0x530C, - 759: 0x530E, - 760: 0x5311, - 761: 0x5312, - 762: 0x5313, - 763: 0x5314, - 764: 0x5318, - 765: 0x531B, - 766: 0x531C, - 767: 0x531E, - 768: 0x531F, - 769: 0x5322, - 770: 0x5324, - 771: 0x5325, - 772: 0x5327, - 773: 0x5328, - 774: 0x5329, - 775: 0x532B, - 776: 0x532C, - 777: 0x532D, - 778: 0x532F, - 779: 0x5330, - 780: 0x5331, - 781: 0x5332, - 782: 0x5333, - 783: 0x5334, - 784: 0x5335, - 785: 0x5336, - 786: 0x5337, - 787: 0x5338, - 788: 0x533C, - 789: 0x533D, - 790: 0x5340, - 791: 0x5342, - 792: 0x5344, - 793: 0x5346, - 794: 0x534B, - 795: 0x534C, - 796: 0x534D, - 797: 0x5350, - 798: 0x5354, - 799: 0x5358, - 800: 0x5359, - 801: 0x535B, - 802: 0x535D, - 803: 0x5365, - 804: 0x5368, - 805: 0x536A, - 806: 0x536C, - 807: 0x536D, - 808: 0x5372, - 809: 0x5376, - 810: 0x5379, - 811: 0x537B, - 812: 0x537C, - 813: 0x537D, - 814: 0x537E, - 815: 0x5380, - 816: 0x5381, - 817: 0x5383, - 818: 0x5387, - 819: 0x5388, - 820: 0x538A, - 821: 0x538E, - 822: 0x538F, - 823: 0x5390, - 824: 0x5391, - 825: 0x5392, - 826: 0x5393, - 827: 0x5394, - 828: 0x5396, - 829: 0x5397, - 830: 0x5399, - 831: 0x539B, - 832: 0x539C, - 833: 0x539E, - 834: 0x53A0, - 835: 0x53A1, - 836: 0x53A4, - 837: 0x53A7, - 838: 0x53AA, - 839: 0x53AB, - 840: 0x53AC, - 841: 0x53AD, - 842: 0x53AF, - 843: 0x53B0, - 844: 0x53B1, - 845: 0x53B2, - 846: 0x53B3, - 847: 0x53B4, - 848: 0x53B5, - 849: 0x53B7, - 850: 0x53B8, - 851: 0x53B9, - 852: 0x53BA, - 853: 0x53BC, - 854: 0x53BD, - 855: 0x53BE, - 856: 0x53C0, - 857: 0x53C3, - 858: 0x53C4, - 859: 0x53C5, - 860: 0x53C6, - 861: 0x53C7, - 862: 0x53CE, - 863: 0x53CF, - 864: 0x53D0, - 865: 0x53D2, - 866: 0x53D3, - 867: 0x53D5, - 868: 0x53DA, - 869: 0x53DC, - 870: 0x53DD, - 871: 0x53DE, - 872: 0x53E1, - 873: 0x53E2, - 874: 0x53E7, - 875: 0x53F4, - 876: 0x53FA, - 877: 0x53FE, - 878: 0x53FF, - 879: 0x5400, - 880: 0x5402, - 881: 0x5405, - 882: 0x5407, - 883: 0x540B, - 884: 0x5414, - 885: 0x5418, - 886: 0x5419, - 887: 0x541A, - 888: 0x541C, - 889: 0x5422, - 890: 0x5424, - 891: 0x5425, - 892: 0x542A, - 893: 0x5430, - 894: 0x5433, - 895: 0x5436, - 896: 0x5437, - 897: 0x543A, - 898: 0x543D, - 899: 0x543F, - 900: 0x5441, - 901: 0x5442, - 902: 0x5444, - 903: 0x5445, - 904: 0x5447, - 905: 0x5449, - 906: 0x544C, - 907: 0x544D, - 908: 0x544E, - 909: 0x544F, - 910: 0x5451, - 911: 0x545A, - 912: 0x545D, - 913: 0x545E, - 914: 0x545F, - 915: 0x5460, - 916: 0x5461, - 917: 0x5463, - 918: 0x5465, - 919: 0x5467, - 920: 0x5469, - 921: 0x546A, - 922: 0x546B, - 923: 0x546C, - 924: 0x546D, - 925: 0x546E, - 926: 0x546F, - 927: 0x5470, - 928: 0x5474, - 929: 0x5479, - 930: 0x547A, - 931: 0x547E, - 932: 0x547F, - 933: 0x5481, - 934: 0x5483, - 935: 0x5485, - 936: 0x5487, - 937: 0x5488, - 938: 0x5489, - 939: 0x548A, - 940: 0x548D, - 941: 0x5491, - 942: 0x5493, - 943: 0x5497, - 944: 0x5498, - 945: 0x549C, - 946: 0x549E, - 947: 0x549F, - 948: 0x54A0, - 949: 0x54A1, - 950: 0x54A2, - 951: 0x54A5, - 952: 0x54AE, - 953: 0x54B0, - 954: 0x54B2, - 955: 0x54B5, - 956: 0x54B6, - 957: 0x54B7, - 958: 0x54B9, - 959: 0x54BA, - 960: 0x54BC, - 961: 0x54BE, - 962: 0x54C3, - 963: 0x54C5, - 964: 0x54CA, - 965: 0x54CB, - 966: 0x54D6, - 967: 0x54D8, - 968: 0x54DB, - 969: 0x54E0, - 970: 0x54E1, - 971: 0x54E2, - 972: 0x54E3, - 973: 0x54E4, - 974: 0x54EB, - 975: 0x54EC, - 976: 0x54EF, - 977: 0x54F0, - 978: 0x54F1, - 979: 0x54F4, - 980: 0x54F5, - 981: 0x54F6, - 982: 0x54F7, - 983: 0x54F8, - 984: 0x54F9, - 985: 0x54FB, - 986: 0x54FE, - 987: 0x5500, - 988: 0x5502, - 989: 0x5503, - 990: 0x5504, - 991: 0x5505, - 992: 0x5508, - 993: 0x550A, - 994: 0x550B, - 995: 0x550C, - 996: 0x550D, - 997: 0x550E, - 998: 0x5512, - 999: 0x5513, - 1000: 0x5515, - 1001: 0x5516, - 1002: 0x5517, - 1003: 0x5518, - 1004: 0x5519, - 1005: 0x551A, - 1006: 0x551C, - 1007: 0x551D, - 1008: 0x551E, - 1009: 0x551F, - 1010: 0x5521, - 1011: 0x5525, - 1012: 0x5526, - 1013: 0x5528, - 1014: 0x5529, - 1015: 0x552B, - 1016: 0x552D, - 1017: 0x5532, - 1018: 0x5534, - 1019: 0x5535, - 1020: 0x5536, - 1021: 0x5538, - 1022: 0x5539, - 1023: 0x553A, - 1024: 0x553B, - 1025: 0x553D, - 1026: 0x5540, - 1027: 0x5542, - 1028: 0x5545, - 1029: 0x5547, - 1030: 0x5548, - 1031: 0x554B, - 1032: 0x554C, - 1033: 0x554D, - 1034: 0x554E, - 1035: 0x554F, - 1036: 0x5551, - 1037: 0x5552, - 1038: 0x5553, - 1039: 0x5554, - 1040: 0x5557, - 1041: 0x5558, - 1042: 0x5559, - 1043: 0x555A, - 1044: 0x555B, - 1045: 0x555D, - 1046: 0x555E, - 1047: 0x555F, - 1048: 0x5560, - 1049: 0x5562, - 1050: 0x5563, - 1051: 0x5568, - 1052: 0x5569, - 1053: 0x556B, - 1054: 0x556F, - 1055: 0x5570, - 1056: 0x5571, - 1057: 0x5572, - 1058: 0x5573, - 1059: 0x5574, - 1060: 0x5579, - 1061: 0x557A, - 1062: 0x557D, - 1063: 0x557F, - 1064: 0x5585, - 1065: 0x5586, - 1066: 0x558C, - 1067: 0x558D, - 1068: 0x558E, - 1069: 0x5590, - 1070: 0x5592, - 1071: 0x5593, - 1072: 0x5595, - 1073: 0x5596, - 1074: 0x5597, - 1075: 0x559A, - 1076: 0x559B, - 1077: 0x559E, - 1078: 0x55A0, - 1079: 0x55A1, - 1080: 0x55A2, - 1081: 0x55A3, - 1082: 0x55A4, - 1083: 0x55A5, - 1084: 0x55A6, - 1085: 0x55A8, - 1086: 0x55A9, - 1087: 0x55AA, - 1088: 0x55AB, - 1089: 0x55AC, - 1090: 0x55AD, - 1091: 0x55AE, - 1092: 0x55AF, - 1093: 0x55B0, - 1094: 0x55B2, - 1095: 0x55B4, - 1096: 0x55B6, - 1097: 0x55B8, - 1098: 0x55BA, - 1099: 0x55BC, - 1100: 0x55BF, - 1101: 0x55C0, - 1102: 0x55C1, - 1103: 0x55C2, - 1104: 0x55C3, - 1105: 0x55C6, - 1106: 0x55C7, - 1107: 0x55C8, - 1108: 0x55CA, - 1109: 0x55CB, - 1110: 0x55CE, - 1111: 0x55CF, - 1112: 0x55D0, - 1113: 0x55D5, - 1114: 0x55D7, - 1115: 0x55D8, - 1116: 0x55D9, - 1117: 0x55DA, - 1118: 0x55DB, - 1119: 0x55DE, - 1120: 0x55E0, - 1121: 0x55E2, - 1122: 0x55E7, - 1123: 0x55E9, - 1124: 0x55ED, - 1125: 0x55EE, - 1126: 0x55F0, - 1127: 0x55F1, - 1128: 0x55F4, - 1129: 0x55F6, - 1130: 0x55F8, - 1131: 0x55F9, - 1132: 0x55FA, - 1133: 0x55FB, - 1134: 0x55FC, - 1135: 0x55FF, - 1136: 0x5602, - 1137: 0x5603, - 1138: 0x5604, - 1139: 0x5605, - 1140: 0x5606, - 1141: 0x5607, - 1142: 0x560A, - 1143: 0x560B, - 1144: 0x560D, - 1145: 0x5610, - 1146: 0x5611, - 1147: 0x5612, - 1148: 0x5613, - 1149: 0x5614, - 1150: 0x5615, - 1151: 0x5616, - 1152: 0x5617, - 1153: 0x5619, - 1154: 0x561A, - 1155: 0x561C, - 1156: 0x561D, - 1157: 0x5620, - 1158: 0x5621, - 1159: 0x5622, - 1160: 0x5625, - 1161: 0x5626, - 1162: 0x5628, - 1163: 0x5629, - 1164: 0x562A, - 1165: 0x562B, - 1166: 0x562E, - 1167: 0x562F, - 1168: 0x5630, - 1169: 0x5633, - 1170: 0x5635, - 1171: 0x5637, - 1172: 0x5638, - 1173: 0x563A, - 1174: 0x563C, - 1175: 0x563D, - 1176: 0x563E, - 1177: 0x5640, - 1178: 0x5641, - 1179: 0x5642, - 1180: 0x5643, - 1181: 0x5644, - 1182: 0x5645, - 1183: 0x5646, - 1184: 0x5647, - 1185: 0x5648, - 1186: 0x5649, - 1187: 0x564A, - 1188: 0x564B, - 1189: 0x564F, - 1190: 0x5650, - 1191: 0x5651, - 1192: 0x5652, - 1193: 0x5653, - 1194: 0x5655, - 1195: 0x5656, - 1196: 0x565A, - 1197: 0x565B, - 1198: 0x565D, - 1199: 0x565E, - 1200: 0x565F, - 1201: 0x5660, - 1202: 0x5661, - 1203: 0x5663, - 1204: 0x5665, - 1205: 0x5666, - 1206: 0x5667, - 1207: 0x566D, - 1208: 0x566E, - 1209: 0x566F, - 1210: 0x5670, - 1211: 0x5672, - 1212: 0x5673, - 1213: 0x5674, - 1214: 0x5675, - 1215: 0x5677, - 1216: 0x5678, - 1217: 0x5679, - 1218: 0x567A, - 1219: 0x567D, - 1220: 0x567E, - 1221: 0x567F, - 1222: 0x5680, - 1223: 0x5681, - 1224: 0x5682, - 1225: 0x5683, - 1226: 0x5684, - 1227: 0x5687, - 1228: 0x5688, - 1229: 0x5689, - 1230: 0x568A, - 1231: 0x568B, - 1232: 0x568C, - 1233: 0x568D, - 1234: 0x5690, - 1235: 0x5691, - 1236: 0x5692, - 1237: 0x5694, - 1238: 0x5695, - 1239: 0x5696, - 1240: 0x5697, - 1241: 0x5698, - 1242: 0x5699, - 1243: 0x569A, - 1244: 0x569B, - 1245: 0x569C, - 1246: 0x569D, - 1247: 0x569E, - 1248: 0x569F, - 1249: 0x56A0, - 1250: 0x56A1, - 1251: 0x56A2, - 1252: 0x56A4, - 1253: 0x56A5, - 1254: 0x56A6, - 1255: 0x56A7, - 1256: 0x56A8, - 1257: 0x56A9, - 1258: 0x56AA, - 1259: 0x56AB, - 1260: 0x56AC, - 1261: 0x56AD, - 1262: 0x56AE, - 1263: 0x56B0, - 1264: 0x56B1, - 1265: 0x56B2, - 1266: 0x56B3, - 1267: 0x56B4, - 1268: 0x56B5, - 1269: 0x56B6, - 1270: 0x56B8, - 1271: 0x56B9, - 1272: 0x56BA, - 1273: 0x56BB, - 1274: 0x56BD, - 1275: 0x56BE, - 1276: 0x56BF, - 1277: 0x56C0, - 1278: 0x56C1, - 1279: 0x56C2, - 1280: 0x56C3, - 1281: 0x56C4, - 1282: 0x56C5, - 1283: 0x56C6, - 1284: 0x56C7, - 1285: 0x56C8, - 1286: 0x56C9, - 1287: 0x56CB, - 1288: 0x56CC, - 1289: 0x56CD, - 1290: 0x56CE, - 1291: 0x56CF, - 1292: 0x56D0, - 1293: 0x56D1, - 1294: 0x56D2, - 1295: 0x56D3, - 1296: 0x56D5, - 1297: 0x56D6, - 1298: 0x56D8, - 1299: 0x56D9, - 1300: 0x56DC, - 1301: 0x56E3, - 1302: 0x56E5, - 1303: 0x56E6, - 1304: 0x56E7, - 1305: 0x56E8, - 1306: 0x56E9, - 1307: 0x56EA, - 1308: 0x56EC, - 1309: 0x56EE, - 1310: 0x56EF, - 1311: 0x56F2, - 1312: 0x56F3, - 1313: 0x56F6, - 1314: 0x56F7, - 1315: 0x56F8, - 1316: 0x56FB, - 1317: 0x56FC, - 1318: 0x5700, - 1319: 0x5701, - 1320: 0x5702, - 1321: 0x5705, - 1322: 0x5707, - 1323: 0x570B, - 1324: 0x570C, - 1325: 0x570D, - 1326: 0x570E, - 1327: 0x570F, - 1328: 0x5710, - 1329: 0x5711, - 1330: 0x5712, - 1331: 0x5713, - 1332: 0x5714, - 1333: 0x5715, - 1334: 0x5716, - 1335: 0x5717, - 1336: 0x5718, - 1337: 0x5719, - 1338: 0x571A, - 1339: 0x571B, - 1340: 0x571D, - 1341: 0x571E, - 1342: 0x5720, - 1343: 0x5721, - 1344: 0x5722, - 1345: 0x5724, - 1346: 0x5725, - 1347: 0x5726, - 1348: 0x5727, - 1349: 0x572B, - 1350: 0x5731, - 1351: 0x5732, - 1352: 0x5734, - 1353: 0x5735, - 1354: 0x5736, - 1355: 0x5737, - 1356: 0x5738, - 1357: 0x573C, - 1358: 0x573D, - 1359: 0x573F, - 1360: 0x5741, - 1361: 0x5743, - 1362: 0x5744, - 1363: 0x5745, - 1364: 0x5746, - 1365: 0x5748, - 1366: 0x5749, - 1367: 0x574B, - 1368: 0x5752, - 1369: 0x5753, - 1370: 0x5754, - 1371: 0x5755, - 1372: 0x5756, - 1373: 0x5758, - 1374: 0x5759, - 1375: 0x5762, - 1376: 0x5763, - 1377: 0x5765, - 1378: 0x5767, - 1379: 0x576C, - 1380: 0x576E, - 1381: 0x5770, - 1382: 0x5771, - 1383: 0x5772, - 1384: 0x5774, - 1385: 0x5775, - 1386: 0x5778, - 1387: 0x5779, - 1388: 0x577A, - 1389: 0x577D, - 1390: 0x577E, - 1391: 0x577F, - 1392: 0x5780, - 1393: 0x5781, - 1394: 0x5787, - 1395: 0x5788, - 1396: 0x5789, - 1397: 0x578A, - 1398: 0x578D, - 1399: 0x578E, - 1400: 0x578F, - 1401: 0x5790, - 1402: 0x5791, - 1403: 0x5794, - 1404: 0x5795, - 1405: 0x5796, - 1406: 0x5797, - 1407: 0x5798, - 1408: 0x5799, - 1409: 0x579A, - 1410: 0x579C, - 1411: 0x579D, - 1412: 0x579E, - 1413: 0x579F, - 1414: 0x57A5, - 1415: 0x57A8, - 1416: 0x57AA, - 1417: 0x57AC, - 1418: 0x57AF, - 1419: 0x57B0, - 1420: 0x57B1, - 1421: 0x57B3, - 1422: 0x57B5, - 1423: 0x57B6, - 1424: 0x57B7, - 1425: 0x57B9, - 1426: 0x57BA, - 1427: 0x57BB, - 1428: 0x57BC, - 1429: 0x57BD, - 1430: 0x57BE, - 1431: 0x57BF, - 1432: 0x57C0, - 1433: 0x57C1, - 1434: 0x57C4, - 1435: 0x57C5, - 1436: 0x57C6, - 1437: 0x57C7, - 1438: 0x57C8, - 1439: 0x57C9, - 1440: 0x57CA, - 1441: 0x57CC, - 1442: 0x57CD, - 1443: 0x57D0, - 1444: 0x57D1, - 1445: 0x57D3, - 1446: 0x57D6, - 1447: 0x57D7, - 1448: 0x57DB, - 1449: 0x57DC, - 1450: 0x57DE, - 1451: 0x57E1, - 1452: 0x57E2, - 1453: 0x57E3, - 1454: 0x57E5, - 1455: 0x57E6, - 1456: 0x57E7, - 1457: 0x57E8, - 1458: 0x57E9, - 1459: 0x57EA, - 1460: 0x57EB, - 1461: 0x57EC, - 1462: 0x57EE, - 1463: 0x57F0, - 1464: 0x57F1, - 1465: 0x57F2, - 1466: 0x57F3, - 1467: 0x57F5, - 1468: 0x57F6, - 1469: 0x57F7, - 1470: 0x57FB, - 1471: 0x57FC, - 1472: 0x57FE, - 1473: 0x57FF, - 1474: 0x5801, - 1475: 0x5803, - 1476: 0x5804, - 1477: 0x5805, - 1478: 0x5808, - 1479: 0x5809, - 1480: 0x580A, - 1481: 0x580C, - 1482: 0x580E, - 1483: 0x580F, - 1484: 0x5810, - 1485: 0x5812, - 1486: 0x5813, - 1487: 0x5814, - 1488: 0x5816, - 1489: 0x5817, - 1490: 0x5818, - 1491: 0x581A, - 1492: 0x581B, - 1493: 0x581C, - 1494: 0x581D, - 1495: 0x581F, - 1496: 0x5822, - 1497: 0x5823, - 1498: 0x5825, - 1499: 0x5826, - 1500: 0x5827, - 1501: 0x5828, - 1502: 0x5829, - 1503: 0x582B, - 1504: 0x582C, - 1505: 0x582D, - 1506: 0x582E, - 1507: 0x582F, - 1508: 0x5831, - 1509: 0x5832, - 1510: 0x5833, - 1511: 0x5834, - 1512: 0x5836, - 1513: 0x5837, - 1514: 0x5838, - 1515: 0x5839, - 1516: 0x583A, - 1517: 0x583B, - 1518: 0x583C, - 1519: 0x583D, - 1520: 0x583E, - 1521: 0x583F, - 1522: 0x5840, - 1523: 0x5841, - 1524: 0x5842, - 1525: 0x5843, - 1526: 0x5845, - 1527: 0x5846, - 1528: 0x5847, - 1529: 0x5848, - 1530: 0x5849, - 1531: 0x584A, - 1532: 0x584B, - 1533: 0x584E, - 1534: 0x584F, - 1535: 0x5850, - 1536: 0x5852, - 1537: 0x5853, - 1538: 0x5855, - 1539: 0x5856, - 1540: 0x5857, - 1541: 0x5859, - 1542: 0x585A, - 1543: 0x585B, - 1544: 0x585C, - 1545: 0x585D, - 1546: 0x585F, - 1547: 0x5860, - 1548: 0x5861, - 1549: 0x5862, - 1550: 0x5863, - 1551: 0x5864, - 1552: 0x5866, - 1553: 0x5867, - 1554: 0x5868, - 1555: 0x5869, - 1556: 0x586A, - 1557: 0x586D, - 1558: 0x586E, - 1559: 0x586F, - 1560: 0x5870, - 1561: 0x5871, - 1562: 0x5872, - 1563: 0x5873, - 1564: 0x5874, - 1565: 0x5875, - 1566: 0x5876, - 1567: 0x5877, - 1568: 0x5878, - 1569: 0x5879, - 1570: 0x587A, - 1571: 0x587B, - 1572: 0x587C, - 1573: 0x587D, - 1574: 0x587F, - 1575: 0x5882, - 1576: 0x5884, - 1577: 0x5886, - 1578: 0x5887, - 1579: 0x5888, - 1580: 0x588A, - 1581: 0x588B, - 1582: 0x588C, - 1583: 0x588D, - 1584: 0x588E, - 1585: 0x588F, - 1586: 0x5890, - 1587: 0x5891, - 1588: 0x5894, - 1589: 0x5895, - 1590: 0x5896, - 1591: 0x5897, - 1592: 0x5898, - 1593: 0x589B, - 1594: 0x589C, - 1595: 0x589D, - 1596: 0x58A0, - 1597: 0x58A1, - 1598: 0x58A2, - 1599: 0x58A3, - 1600: 0x58A4, - 1601: 0x58A5, - 1602: 0x58A6, - 1603: 0x58A7, - 1604: 0x58AA, - 1605: 0x58AB, - 1606: 0x58AC, - 1607: 0x58AD, - 1608: 0x58AE, - 1609: 0x58AF, - 1610: 0x58B0, - 1611: 0x58B1, - 1612: 0x58B2, - 1613: 0x58B3, - 1614: 0x58B4, - 1615: 0x58B5, - 1616: 0x58B6, - 1617: 0x58B7, - 1618: 0x58B8, - 1619: 0x58B9, - 1620: 0x58BA, - 1621: 0x58BB, - 1622: 0x58BD, - 1623: 0x58BE, - 1624: 0x58BF, - 1625: 0x58C0, - 1626: 0x58C2, - 1627: 0x58C3, - 1628: 0x58C4, - 1629: 0x58C6, - 1630: 0x58C7, - 1631: 0x58C8, - 1632: 0x58C9, - 1633: 0x58CA, - 1634: 0x58CB, - 1635: 0x58CC, - 1636: 0x58CD, - 1637: 0x58CE, - 1638: 0x58CF, - 1639: 0x58D0, - 1640: 0x58D2, - 1641: 0x58D3, - 1642: 0x58D4, - 1643: 0x58D6, - 1644: 0x58D7, - 1645: 0x58D8, - 1646: 0x58D9, - 1647: 0x58DA, - 1648: 0x58DB, - 1649: 0x58DC, - 1650: 0x58DD, - 1651: 0x58DE, - 1652: 0x58DF, - 1653: 0x58E0, - 1654: 0x58E1, - 1655: 0x58E2, - 1656: 0x58E3, - 1657: 0x58E5, - 1658: 0x58E6, - 1659: 0x58E7, - 1660: 0x58E8, - 1661: 0x58E9, - 1662: 0x58EA, - 1663: 0x58ED, - 1664: 0x58EF, - 1665: 0x58F1, - 1666: 0x58F2, - 1667: 0x58F4, - 1668: 0x58F5, - 1669: 0x58F7, - 1670: 0x58F8, - 1671: 0x58FA, - 1672: 0x58FB, - 1673: 0x58FC, - 1674: 0x58FD, - 1675: 0x58FE, - 1676: 0x58FF, - 1677: 0x5900, - 1678: 0x5901, - 1679: 0x5903, - 1680: 0x5905, - 1681: 0x5906, - 1682: 0x5908, - 1683: 0x5909, - 1684: 0x590A, - 1685: 0x590B, - 1686: 0x590C, - 1687: 0x590E, - 1688: 0x5910, - 1689: 0x5911, - 1690: 0x5912, - 1691: 0x5913, - 1692: 0x5917, - 1693: 0x5918, - 1694: 0x591B, - 1695: 0x591D, - 1696: 0x591E, - 1697: 0x5920, - 1698: 0x5921, - 1699: 0x5922, - 1700: 0x5923, - 1701: 0x5926, - 1702: 0x5928, - 1703: 0x592C, - 1704: 0x5930, - 1705: 0x5932, - 1706: 0x5933, - 1707: 0x5935, - 1708: 0x5936, - 1709: 0x593B, - 1710: 0x593D, - 1711: 0x593E, - 1712: 0x593F, - 1713: 0x5940, - 1714: 0x5943, - 1715: 0x5945, - 1716: 0x5946, - 1717: 0x594A, - 1718: 0x594C, - 1719: 0x594D, - 1720: 0x5950, - 1721: 0x5952, - 1722: 0x5953, - 1723: 0x5959, - 1724: 0x595B, - 1725: 0x595C, - 1726: 0x595D, - 1727: 0x595E, - 1728: 0x595F, - 1729: 0x5961, - 1730: 0x5963, - 1731: 0x5964, - 1732: 0x5966, - 1733: 0x5967, - 1734: 0x5968, - 1735: 0x5969, - 1736: 0x596A, - 1737: 0x596B, - 1738: 0x596C, - 1739: 0x596D, - 1740: 0x596E, - 1741: 0x596F, - 1742: 0x5970, - 1743: 0x5971, - 1744: 0x5972, - 1745: 0x5975, - 1746: 0x5977, - 1747: 0x597A, - 1748: 0x597B, - 1749: 0x597C, - 1750: 0x597E, - 1751: 0x597F, - 1752: 0x5980, - 1753: 0x5985, - 1754: 0x5989, - 1755: 0x598B, - 1756: 0x598C, - 1757: 0x598E, - 1758: 0x598F, - 1759: 0x5990, - 1760: 0x5991, - 1761: 0x5994, - 1762: 0x5995, - 1763: 0x5998, - 1764: 0x599A, - 1765: 0x599B, - 1766: 0x599C, - 1767: 0x599D, - 1768: 0x599F, - 1769: 0x59A0, - 1770: 0x59A1, - 1771: 0x59A2, - 1772: 0x59A6, - 1773: 0x59A7, - 1774: 0x59AC, - 1775: 0x59AD, - 1776: 0x59B0, - 1777: 0x59B1, - 1778: 0x59B3, - 1779: 0x59B4, - 1780: 0x59B5, - 1781: 0x59B6, - 1782: 0x59B7, - 1783: 0x59B8, - 1784: 0x59BA, - 1785: 0x59BC, - 1786: 0x59BD, - 1787: 0x59BF, - 1788: 0x59C0, - 1789: 0x59C1, - 1790: 0x59C2, - 1791: 0x59C3, - 1792: 0x59C4, - 1793: 0x59C5, - 1794: 0x59C7, - 1795: 0x59C8, - 1796: 0x59C9, - 1797: 0x59CC, - 1798: 0x59CD, - 1799: 0x59CE, - 1800: 0x59CF, - 1801: 0x59D5, - 1802: 0x59D6, - 1803: 0x59D9, - 1804: 0x59DB, - 1805: 0x59DE, - 1806: 0x59DF, - 1807: 0x59E0, - 1808: 0x59E1, - 1809: 0x59E2, - 1810: 0x59E4, - 1811: 0x59E6, - 1812: 0x59E7, - 1813: 0x59E9, - 1814: 0x59EA, - 1815: 0x59EB, - 1816: 0x59ED, - 1817: 0x59EE, - 1818: 0x59EF, - 1819: 0x59F0, - 1820: 0x59F1, - 1821: 0x59F2, - 1822: 0x59F3, - 1823: 0x59F4, - 1824: 0x59F5, - 1825: 0x59F6, - 1826: 0x59F7, - 1827: 0x59F8, - 1828: 0x59FA, - 1829: 0x59FC, - 1830: 0x59FD, - 1831: 0x59FE, - 1832: 0x5A00, - 1833: 0x5A02, - 1834: 0x5A0A, - 1835: 0x5A0B, - 1836: 0x5A0D, - 1837: 0x5A0E, - 1838: 0x5A0F, - 1839: 0x5A10, - 1840: 0x5A12, - 1841: 0x5A14, - 1842: 0x5A15, - 1843: 0x5A16, - 1844: 0x5A17, - 1845: 0x5A19, - 1846: 0x5A1A, - 1847: 0x5A1B, - 1848: 0x5A1D, - 1849: 0x5A1E, - 1850: 0x5A21, - 1851: 0x5A22, - 1852: 0x5A24, - 1853: 0x5A26, - 1854: 0x5A27, - 1855: 0x5A28, - 1856: 0x5A2A, - 1857: 0x5A2B, - 1858: 0x5A2C, - 1859: 0x5A2D, - 1860: 0x5A2E, - 1861: 0x5A2F, - 1862: 0x5A30, - 1863: 0x5A33, - 1864: 0x5A35, - 1865: 0x5A37, - 1866: 0x5A38, - 1867: 0x5A39, - 1868: 0x5A3A, - 1869: 0x5A3B, - 1870: 0x5A3D, - 1871: 0x5A3E, - 1872: 0x5A3F, - 1873: 0x5A41, - 1874: 0x5A42, - 1875: 0x5A43, - 1876: 0x5A44, - 1877: 0x5A45, - 1878: 0x5A47, - 1879: 0x5A48, - 1880: 0x5A4B, - 1881: 0x5A4C, - 1882: 0x5A4D, - 1883: 0x5A4E, - 1884: 0x5A4F, - 1885: 0x5A50, - 1886: 0x5A51, - 1887: 0x5A52, - 1888: 0x5A53, - 1889: 0x5A54, - 1890: 0x5A56, - 1891: 0x5A57, - 1892: 0x5A58, - 1893: 0x5A59, - 1894: 0x5A5B, - 1895: 0x5A5C, - 1896: 0x5A5D, - 1897: 0x5A5E, - 1898: 0x5A5F, - 1899: 0x5A60, - 1900: 0x5A61, - 1901: 0x5A63, - 1902: 0x5A64, - 1903: 0x5A65, - 1904: 0x5A66, - 1905: 0x5A68, - 1906: 0x5A69, - 1907: 0x5A6B, - 1908: 0x5A6C, - 1909: 0x5A6D, - 1910: 0x5A6E, - 1911: 0x5A6F, - 1912: 0x5A70, - 1913: 0x5A71, - 1914: 0x5A72, - 1915: 0x5A73, - 1916: 0x5A78, - 1917: 0x5A79, - 1918: 0x5A7B, - 1919: 0x5A7C, - 1920: 0x5A7D, - 1921: 0x5A7E, - 1922: 0x5A80, - 1923: 0x5A81, - 1924: 0x5A82, - 1925: 0x5A83, - 1926: 0x5A84, - 1927: 0x5A85, - 1928: 0x5A86, - 1929: 0x5A87, - 1930: 0x5A88, - 1931: 0x5A89, - 1932: 0x5A8A, - 1933: 0x5A8B, - 1934: 0x5A8C, - 1935: 0x5A8D, - 1936: 0x5A8E, - 1937: 0x5A8F, - 1938: 0x5A90, - 1939: 0x5A91, - 1940: 0x5A93, - 1941: 0x5A94, - 1942: 0x5A95, - 1943: 0x5A96, - 1944: 0x5A97, - 1945: 0x5A98, - 1946: 0x5A99, - 1947: 0x5A9C, - 1948: 0x5A9D, - 1949: 0x5A9E, - 1950: 0x5A9F, - 1951: 0x5AA0, - 1952: 0x5AA1, - 1953: 0x5AA2, - 1954: 0x5AA3, - 1955: 0x5AA4, - 1956: 0x5AA5, - 1957: 0x5AA6, - 1958: 0x5AA7, - 1959: 0x5AA8, - 1960: 0x5AA9, - 1961: 0x5AAB, - 1962: 0x5AAC, - 1963: 0x5AAD, - 1964: 0x5AAE, - 1965: 0x5AAF, - 1966: 0x5AB0, - 1967: 0x5AB1, - 1968: 0x5AB4, - 1969: 0x5AB6, - 1970: 0x5AB7, - 1971: 0x5AB9, - 1972: 0x5ABA, - 1973: 0x5ABB, - 1974: 0x5ABC, - 1975: 0x5ABD, - 1976: 0x5ABF, - 1977: 0x5AC0, - 1978: 0x5AC3, - 1979: 0x5AC4, - 1980: 0x5AC5, - 1981: 0x5AC6, - 1982: 0x5AC7, - 1983: 0x5AC8, - 1984: 0x5ACA, - 1985: 0x5ACB, - 1986: 0x5ACD, - 1987: 0x5ACE, - 1988: 0x5ACF, - 1989: 0x5AD0, - 1990: 0x5AD1, - 1991: 0x5AD3, - 1992: 0x5AD5, - 1993: 0x5AD7, - 1994: 0x5AD9, - 1995: 0x5ADA, - 1996: 0x5ADB, - 1997: 0x5ADD, - 1998: 0x5ADE, - 1999: 0x5ADF, - 2000: 0x5AE2, - 2001: 0x5AE4, - 2002: 0x5AE5, - 2003: 0x5AE7, - 2004: 0x5AE8, - 2005: 0x5AEA, - 2006: 0x5AEC, - 2007: 0x5AED, - 2008: 0x5AEE, - 2009: 0x5AEF, - 2010: 0x5AF0, - 2011: 0x5AF2, - 2012: 0x5AF3, - 2013: 0x5AF4, - 2014: 0x5AF5, - 2015: 0x5AF6, - 2016: 0x5AF7, - 2017: 0x5AF8, - 2018: 0x5AF9, - 2019: 0x5AFA, - 2020: 0x5AFB, - 2021: 0x5AFC, - 2022: 0x5AFD, - 2023: 0x5AFE, - 2024: 0x5AFF, - 2025: 0x5B00, - 2026: 0x5B01, - 2027: 0x5B02, - 2028: 0x5B03, - 2029: 0x5B04, - 2030: 0x5B05, - 2031: 0x5B06, - 2032: 0x5B07, - 2033: 0x5B08, - 2034: 0x5B0A, - 2035: 0x5B0B, - 2036: 0x5B0C, - 2037: 0x5B0D, - 2038: 0x5B0E, - 2039: 0x5B0F, - 2040: 0x5B10, - 2041: 0x5B11, - 2042: 0x5B12, - 2043: 0x5B13, - 2044: 0x5B14, - 2045: 0x5B15, - 2046: 0x5B18, - 2047: 0x5B19, - 2048: 0x5B1A, - 2049: 0x5B1B, - 2050: 0x5B1C, - 2051: 0x5B1D, - 2052: 0x5B1E, - 2053: 0x5B1F, - 2054: 0x5B20, - 2055: 0x5B21, - 2056: 0x5B22, - 2057: 0x5B23, - 2058: 0x5B24, - 2059: 0x5B25, - 2060: 0x5B26, - 2061: 0x5B27, - 2062: 0x5B28, - 2063: 0x5B29, - 2064: 0x5B2A, - 2065: 0x5B2B, - 2066: 0x5B2C, - 2067: 0x5B2D, - 2068: 0x5B2E, - 2069: 0x5B2F, - 2070: 0x5B30, - 2071: 0x5B31, - 2072: 0x5B33, - 2073: 0x5B35, - 2074: 0x5B36, - 2075: 0x5B38, - 2076: 0x5B39, - 2077: 0x5B3A, - 2078: 0x5B3B, - 2079: 0x5B3C, - 2080: 0x5B3D, - 2081: 0x5B3E, - 2082: 0x5B3F, - 2083: 0x5B41, - 2084: 0x5B42, - 2085: 0x5B43, - 2086: 0x5B44, - 2087: 0x5B45, - 2088: 0x5B46, - 2089: 0x5B47, - 2090: 0x5B48, - 2091: 0x5B49, - 2092: 0x5B4A, - 2093: 0x5B4B, - 2094: 0x5B4C, - 2095: 0x5B4D, - 2096: 0x5B4E, - 2097: 0x5B4F, - 2098: 0x5B52, - 2099: 0x5B56, - 2100: 0x5B5E, - 2101: 0x5B60, - 2102: 0x5B61, - 2103: 0x5B67, - 2104: 0x5B68, - 2105: 0x5B6B, - 2106: 0x5B6D, - 2107: 0x5B6E, - 2108: 0x5B6F, - 2109: 0x5B72, - 2110: 0x5B74, - 2111: 0x5B76, - 2112: 0x5B77, - 2113: 0x5B78, - 2114: 0x5B79, - 2115: 0x5B7B, - 2116: 0x5B7C, - 2117: 0x5B7E, - 2118: 0x5B7F, - 2119: 0x5B82, - 2120: 0x5B86, - 2121: 0x5B8A, - 2122: 0x5B8D, - 2123: 0x5B8E, - 2124: 0x5B90, - 2125: 0x5B91, - 2126: 0x5B92, - 2127: 0x5B94, - 2128: 0x5B96, - 2129: 0x5B9F, - 2130: 0x5BA7, - 2131: 0x5BA8, - 2132: 0x5BA9, - 2133: 0x5BAC, - 2134: 0x5BAD, - 2135: 0x5BAE, - 2136: 0x5BAF, - 2137: 0x5BB1, - 2138: 0x5BB2, - 2139: 0x5BB7, - 2140: 0x5BBA, - 2141: 0x5BBB, - 2142: 0x5BBC, - 2143: 0x5BC0, - 2144: 0x5BC1, - 2145: 0x5BC3, - 2146: 0x5BC8, - 2147: 0x5BC9, - 2148: 0x5BCA, - 2149: 0x5BCB, - 2150: 0x5BCD, - 2151: 0x5BCE, - 2152: 0x5BCF, - 2153: 0x5BD1, - 2154: 0x5BD4, - 2155: 0x5BD5, - 2156: 0x5BD6, - 2157: 0x5BD7, - 2158: 0x5BD8, - 2159: 0x5BD9, - 2160: 0x5BDA, - 2161: 0x5BDB, - 2162: 0x5BDC, - 2163: 0x5BE0, - 2164: 0x5BE2, - 2165: 0x5BE3, - 2166: 0x5BE6, - 2167: 0x5BE7, - 2168: 0x5BE9, - 2169: 0x5BEA, - 2170: 0x5BEB, - 2171: 0x5BEC, - 2172: 0x5BED, - 2173: 0x5BEF, - 2174: 0x5BF1, - 2175: 0x5BF2, - 2176: 0x5BF3, - 2177: 0x5BF4, - 2178: 0x5BF5, - 2179: 0x5BF6, - 2180: 0x5BF7, - 2181: 0x5BFD, - 2182: 0x5BFE, - 2183: 0x5C00, - 2184: 0x5C02, - 2185: 0x5C03, - 2186: 0x5C05, - 2187: 0x5C07, - 2188: 0x5C08, - 2189: 0x5C0B, - 2190: 0x5C0C, - 2191: 0x5C0D, - 2192: 0x5C0E, - 2193: 0x5C10, - 2194: 0x5C12, - 2195: 0x5C13, - 2196: 0x5C17, - 2197: 0x5C19, - 2198: 0x5C1B, - 2199: 0x5C1E, - 2200: 0x5C1F, - 2201: 0x5C20, - 2202: 0x5C21, - 2203: 0x5C23, - 2204: 0x5C26, - 2205: 0x5C28, - 2206: 0x5C29, - 2207: 0x5C2A, - 2208: 0x5C2B, - 2209: 0x5C2D, - 2210: 0x5C2E, - 2211: 0x5C2F, - 2212: 0x5C30, - 2213: 0x5C32, - 2214: 0x5C33, - 2215: 0x5C35, - 2216: 0x5C36, - 2217: 0x5C37, - 2218: 0x5C43, - 2219: 0x5C44, - 2220: 0x5C46, - 2221: 0x5C47, - 2222: 0x5C4C, - 2223: 0x5C4D, - 2224: 0x5C52, - 2225: 0x5C53, - 2226: 0x5C54, - 2227: 0x5C56, - 2228: 0x5C57, - 2229: 0x5C58, - 2230: 0x5C5A, - 2231: 0x5C5B, - 2232: 0x5C5C, - 2233: 0x5C5D, - 2234: 0x5C5F, - 2235: 0x5C62, - 2236: 0x5C64, - 2237: 0x5C67, - 2238: 0x5C68, - 2239: 0x5C69, - 2240: 0x5C6A, - 2241: 0x5C6B, - 2242: 0x5C6C, - 2243: 0x5C6D, - 2244: 0x5C70, - 2245: 0x5C72, - 2246: 0x5C73, - 2247: 0x5C74, - 2248: 0x5C75, - 2249: 0x5C76, - 2250: 0x5C77, - 2251: 0x5C78, - 2252: 0x5C7B, - 2253: 0x5C7C, - 2254: 0x5C7D, - 2255: 0x5C7E, - 2256: 0x5C80, - 2257: 0x5C83, - 2258: 0x5C84, - 2259: 0x5C85, - 2260: 0x5C86, - 2261: 0x5C87, - 2262: 0x5C89, - 2263: 0x5C8A, - 2264: 0x5C8B, - 2265: 0x5C8E, - 2266: 0x5C8F, - 2267: 0x5C92, - 2268: 0x5C93, - 2269: 0x5C95, - 2270: 0x5C9D, - 2271: 0x5C9E, - 2272: 0x5C9F, - 2273: 0x5CA0, - 2274: 0x5CA1, - 2275: 0x5CA4, - 2276: 0x5CA5, - 2277: 0x5CA6, - 2278: 0x5CA7, - 2279: 0x5CA8, - 2280: 0x5CAA, - 2281: 0x5CAE, - 2282: 0x5CAF, - 2283: 0x5CB0, - 2284: 0x5CB2, - 2285: 0x5CB4, - 2286: 0x5CB6, - 2287: 0x5CB9, - 2288: 0x5CBA, - 2289: 0x5CBB, - 2290: 0x5CBC, - 2291: 0x5CBE, - 2292: 0x5CC0, - 2293: 0x5CC2, - 2294: 0x5CC3, - 2295: 0x5CC5, - 2296: 0x5CC6, - 2297: 0x5CC7, - 2298: 0x5CC8, - 2299: 0x5CC9, - 2300: 0x5CCA, - 2301: 0x5CCC, - 2302: 0x5CCD, - 2303: 0x5CCE, - 2304: 0x5CCF, - 2305: 0x5CD0, - 2306: 0x5CD1, - 2307: 0x5CD3, - 2308: 0x5CD4, - 2309: 0x5CD5, - 2310: 0x5CD6, - 2311: 0x5CD7, - 2312: 0x5CD8, - 2313: 0x5CDA, - 2314: 0x5CDB, - 2315: 0x5CDC, - 2316: 0x5CDD, - 2317: 0x5CDE, - 2318: 0x5CDF, - 2319: 0x5CE0, - 2320: 0x5CE2, - 2321: 0x5CE3, - 2322: 0x5CE7, - 2323: 0x5CE9, - 2324: 0x5CEB, - 2325: 0x5CEC, - 2326: 0x5CEE, - 2327: 0x5CEF, - 2328: 0x5CF1, - 2329: 0x5CF2, - 2330: 0x5CF3, - 2331: 0x5CF4, - 2332: 0x5CF5, - 2333: 0x5CF6, - 2334: 0x5CF7, - 2335: 0x5CF8, - 2336: 0x5CF9, - 2337: 0x5CFA, - 2338: 0x5CFC, - 2339: 0x5CFD, - 2340: 0x5CFE, - 2341: 0x5CFF, - 2342: 0x5D00, - 2343: 0x5D01, - 2344: 0x5D04, - 2345: 0x5D05, - 2346: 0x5D08, - 2347: 0x5D09, - 2348: 0x5D0A, - 2349: 0x5D0B, - 2350: 0x5D0C, - 2351: 0x5D0D, - 2352: 0x5D0F, - 2353: 0x5D10, - 2354: 0x5D11, - 2355: 0x5D12, - 2356: 0x5D13, - 2357: 0x5D15, - 2358: 0x5D17, - 2359: 0x5D18, - 2360: 0x5D19, - 2361: 0x5D1A, - 2362: 0x5D1C, - 2363: 0x5D1D, - 2364: 0x5D1F, - 2365: 0x5D20, - 2366: 0x5D21, - 2367: 0x5D22, - 2368: 0x5D23, - 2369: 0x5D25, - 2370: 0x5D28, - 2371: 0x5D2A, - 2372: 0x5D2B, - 2373: 0x5D2C, - 2374: 0x5D2F, - 2375: 0x5D30, - 2376: 0x5D31, - 2377: 0x5D32, - 2378: 0x5D33, - 2379: 0x5D35, - 2380: 0x5D36, - 2381: 0x5D37, - 2382: 0x5D38, - 2383: 0x5D39, - 2384: 0x5D3A, - 2385: 0x5D3B, - 2386: 0x5D3C, - 2387: 0x5D3F, - 2388: 0x5D40, - 2389: 0x5D41, - 2390: 0x5D42, - 2391: 0x5D43, - 2392: 0x5D44, - 2393: 0x5D45, - 2394: 0x5D46, - 2395: 0x5D48, - 2396: 0x5D49, - 2397: 0x5D4D, - 2398: 0x5D4E, - 2399: 0x5D4F, - 2400: 0x5D50, - 2401: 0x5D51, - 2402: 0x5D52, - 2403: 0x5D53, - 2404: 0x5D54, - 2405: 0x5D55, - 2406: 0x5D56, - 2407: 0x5D57, - 2408: 0x5D59, - 2409: 0x5D5A, - 2410: 0x5D5C, - 2411: 0x5D5E, - 2412: 0x5D5F, - 2413: 0x5D60, - 2414: 0x5D61, - 2415: 0x5D62, - 2416: 0x5D63, - 2417: 0x5D64, - 2418: 0x5D65, - 2419: 0x5D66, - 2420: 0x5D67, - 2421: 0x5D68, - 2422: 0x5D6A, - 2423: 0x5D6D, - 2424: 0x5D6E, - 2425: 0x5D70, - 2426: 0x5D71, - 2427: 0x5D72, - 2428: 0x5D73, - 2429: 0x5D75, - 2430: 0x5D76, - 2431: 0x5D77, - 2432: 0x5D78, - 2433: 0x5D79, - 2434: 0x5D7A, - 2435: 0x5D7B, - 2436: 0x5D7C, - 2437: 0x5D7D, - 2438: 0x5D7E, - 2439: 0x5D7F, - 2440: 0x5D80, - 2441: 0x5D81, - 2442: 0x5D83, - 2443: 0x5D84, - 2444: 0x5D85, - 2445: 0x5D86, - 2446: 0x5D87, - 2447: 0x5D88, - 2448: 0x5D89, - 2449: 0x5D8A, - 2450: 0x5D8B, - 2451: 0x5D8C, - 2452: 0x5D8D, - 2453: 0x5D8E, - 2454: 0x5D8F, - 2455: 0x5D90, - 2456: 0x5D91, - 2457: 0x5D92, - 2458: 0x5D93, - 2459: 0x5D94, - 2460: 0x5D95, - 2461: 0x5D96, - 2462: 0x5D97, - 2463: 0x5D98, - 2464: 0x5D9A, - 2465: 0x5D9B, - 2466: 0x5D9C, - 2467: 0x5D9E, - 2468: 0x5D9F, - 2469: 0x5DA0, - 2470: 0x5DA1, - 2471: 0x5DA2, - 2472: 0x5DA3, - 2473: 0x5DA4, - 2474: 0x5DA5, - 2475: 0x5DA6, - 2476: 0x5DA7, - 2477: 0x5DA8, - 2478: 0x5DA9, - 2479: 0x5DAA, - 2480: 0x5DAB, - 2481: 0x5DAC, - 2482: 0x5DAD, - 2483: 0x5DAE, - 2484: 0x5DAF, - 2485: 0x5DB0, - 2486: 0x5DB1, - 2487: 0x5DB2, - 2488: 0x5DB3, - 2489: 0x5DB4, - 2490: 0x5DB5, - 2491: 0x5DB6, - 2492: 0x5DB8, - 2493: 0x5DB9, - 2494: 0x5DBA, - 2495: 0x5DBB, - 2496: 0x5DBC, - 2497: 0x5DBD, - 2498: 0x5DBE, - 2499: 0x5DBF, - 2500: 0x5DC0, - 2501: 0x5DC1, - 2502: 0x5DC2, - 2503: 0x5DC3, - 2504: 0x5DC4, - 2505: 0x5DC6, - 2506: 0x5DC7, - 2507: 0x5DC8, - 2508: 0x5DC9, - 2509: 0x5DCA, - 2510: 0x5DCB, - 2511: 0x5DCC, - 2512: 0x5DCE, - 2513: 0x5DCF, - 2514: 0x5DD0, - 2515: 0x5DD1, - 2516: 0x5DD2, - 2517: 0x5DD3, - 2518: 0x5DD4, - 2519: 0x5DD5, - 2520: 0x5DD6, - 2521: 0x5DD7, - 2522: 0x5DD8, - 2523: 0x5DD9, - 2524: 0x5DDA, - 2525: 0x5DDC, - 2526: 0x5DDF, - 2527: 0x5DE0, - 2528: 0x5DE3, - 2529: 0x5DE4, - 2530: 0x5DEA, - 2531: 0x5DEC, - 2532: 0x5DED, - 2533: 0x5DF0, - 2534: 0x5DF5, - 2535: 0x5DF6, - 2536: 0x5DF8, - 2537: 0x5DF9, - 2538: 0x5DFA, - 2539: 0x5DFB, - 2540: 0x5DFC, - 2541: 0x5DFF, - 2542: 0x5E00, - 2543: 0x5E04, - 2544: 0x5E07, - 2545: 0x5E09, - 2546: 0x5E0A, - 2547: 0x5E0B, - 2548: 0x5E0D, - 2549: 0x5E0E, - 2550: 0x5E12, - 2551: 0x5E13, - 2552: 0x5E17, - 2553: 0x5E1E, - 2554: 0x5E1F, - 2555: 0x5E20, - 2556: 0x5E21, - 2557: 0x5E22, - 2558: 0x5E23, - 2559: 0x5E24, - 2560: 0x5E25, - 2561: 0x5E28, - 2562: 0x5E29, - 2563: 0x5E2A, - 2564: 0x5E2B, - 2565: 0x5E2C, - 2566: 0x5E2F, - 2567: 0x5E30, - 2568: 0x5E32, - 2569: 0x5E33, - 2570: 0x5E34, - 2571: 0x5E35, - 2572: 0x5E36, - 2573: 0x5E39, - 2574: 0x5E3A, - 2575: 0x5E3E, - 2576: 0x5E3F, - 2577: 0x5E40, - 2578: 0x5E41, - 2579: 0x5E43, - 2580: 0x5E46, - 2581: 0x5E47, - 2582: 0x5E48, - 2583: 0x5E49, - 2584: 0x5E4A, - 2585: 0x5E4B, - 2586: 0x5E4D, - 2587: 0x5E4E, - 2588: 0x5E4F, - 2589: 0x5E50, - 2590: 0x5E51, - 2591: 0x5E52, - 2592: 0x5E53, - 2593: 0x5E56, - 2594: 0x5E57, - 2595: 0x5E58, - 2596: 0x5E59, - 2597: 0x5E5A, - 2598: 0x5E5C, - 2599: 0x5E5D, - 2600: 0x5E5F, - 2601: 0x5E60, - 2602: 0x5E63, - 2603: 0x5E64, - 2604: 0x5E65, - 2605: 0x5E66, - 2606: 0x5E67, - 2607: 0x5E68, - 2608: 0x5E69, - 2609: 0x5E6A, - 2610: 0x5E6B, - 2611: 0x5E6C, - 2612: 0x5E6D, - 2613: 0x5E6E, - 2614: 0x5E6F, - 2615: 0x5E70, - 2616: 0x5E71, - 2617: 0x5E75, - 2618: 0x5E77, - 2619: 0x5E79, - 2620: 0x5E7E, - 2621: 0x5E81, - 2622: 0x5E82, - 2623: 0x5E83, - 2624: 0x5E85, - 2625: 0x5E88, - 2626: 0x5E89, - 2627: 0x5E8C, - 2628: 0x5E8D, - 2629: 0x5E8E, - 2630: 0x5E92, - 2631: 0x5E98, - 2632: 0x5E9B, - 2633: 0x5E9D, - 2634: 0x5EA1, - 2635: 0x5EA2, - 2636: 0x5EA3, - 2637: 0x5EA4, - 2638: 0x5EA8, - 2639: 0x5EA9, - 2640: 0x5EAA, - 2641: 0x5EAB, - 2642: 0x5EAC, - 2643: 0x5EAE, - 2644: 0x5EAF, - 2645: 0x5EB0, - 2646: 0x5EB1, - 2647: 0x5EB2, - 2648: 0x5EB4, - 2649: 0x5EBA, - 2650: 0x5EBB, - 2651: 0x5EBC, - 2652: 0x5EBD, - 2653: 0x5EBF, - 2654: 0x5EC0, - 2655: 0x5EC1, - 2656: 0x5EC2, - 2657: 0x5EC3, - 2658: 0x5EC4, - 2659: 0x5EC5, - 2660: 0x5EC6, - 2661: 0x5EC7, - 2662: 0x5EC8, - 2663: 0x5ECB, - 2664: 0x5ECC, - 2665: 0x5ECD, - 2666: 0x5ECE, - 2667: 0x5ECF, - 2668: 0x5ED0, - 2669: 0x5ED4, - 2670: 0x5ED5, - 2671: 0x5ED7, - 2672: 0x5ED8, - 2673: 0x5ED9, - 2674: 0x5EDA, - 2675: 0x5EDC, - 2676: 0x5EDD, - 2677: 0x5EDE, - 2678: 0x5EDF, - 2679: 0x5EE0, - 2680: 0x5EE1, - 2681: 0x5EE2, - 2682: 0x5EE3, - 2683: 0x5EE4, - 2684: 0x5EE5, - 2685: 0x5EE6, - 2686: 0x5EE7, - 2687: 0x5EE9, - 2688: 0x5EEB, - 2689: 0x5EEC, - 2690: 0x5EED, - 2691: 0x5EEE, - 2692: 0x5EEF, - 2693: 0x5EF0, - 2694: 0x5EF1, - 2695: 0x5EF2, - 2696: 0x5EF3, - 2697: 0x5EF5, - 2698: 0x5EF8, - 2699: 0x5EF9, - 2700: 0x5EFB, - 2701: 0x5EFC, - 2702: 0x5EFD, - 2703: 0x5F05, - 2704: 0x5F06, - 2705: 0x5F07, - 2706: 0x5F09, - 2707: 0x5F0C, - 2708: 0x5F0D, - 2709: 0x5F0E, - 2710: 0x5F10, - 2711: 0x5F12, - 2712: 0x5F14, - 2713: 0x5F16, - 2714: 0x5F19, - 2715: 0x5F1A, - 2716: 0x5F1C, - 2717: 0x5F1D, - 2718: 0x5F1E, - 2719: 0x5F21, - 2720: 0x5F22, - 2721: 0x5F23, - 2722: 0x5F24, - 2723: 0x5F28, - 2724: 0x5F2B, - 2725: 0x5F2C, - 2726: 0x5F2E, - 2727: 0x5F30, - 2728: 0x5F32, - 2729: 0x5F33, - 2730: 0x5F34, - 2731: 0x5F35, - 2732: 0x5F36, - 2733: 0x5F37, - 2734: 0x5F38, - 2735: 0x5F3B, - 2736: 0x5F3D, - 2737: 0x5F3E, - 2738: 0x5F3F, - 2739: 0x5F41, - 2740: 0x5F42, - 2741: 0x5F43, - 2742: 0x5F44, - 2743: 0x5F45, - 2744: 0x5F46, - 2745: 0x5F47, - 2746: 0x5F48, - 2747: 0x5F49, - 2748: 0x5F4A, - 2749: 0x5F4B, - 2750: 0x5F4C, - 2751: 0x5F4D, - 2752: 0x5F4E, - 2753: 0x5F4F, - 2754: 0x5F51, - 2755: 0x5F54, - 2756: 0x5F59, - 2757: 0x5F5A, - 2758: 0x5F5B, - 2759: 0x5F5C, - 2760: 0x5F5E, - 2761: 0x5F5F, - 2762: 0x5F60, - 2763: 0x5F63, - 2764: 0x5F65, - 2765: 0x5F67, - 2766: 0x5F68, - 2767: 0x5F6B, - 2768: 0x5F6E, - 2769: 0x5F6F, - 2770: 0x5F72, - 2771: 0x5F74, - 2772: 0x5F75, - 2773: 0x5F76, - 2774: 0x5F78, - 2775: 0x5F7A, - 2776: 0x5F7D, - 2777: 0x5F7E, - 2778: 0x5F7F, - 2779: 0x5F83, - 2780: 0x5F86, - 2781: 0x5F8D, - 2782: 0x5F8E, - 2783: 0x5F8F, - 2784: 0x5F91, - 2785: 0x5F93, - 2786: 0x5F94, - 2787: 0x5F96, - 2788: 0x5F9A, - 2789: 0x5F9B, - 2790: 0x5F9D, - 2791: 0x5F9E, - 2792: 0x5F9F, - 2793: 0x5FA0, - 2794: 0x5FA2, - 2795: 0x5FA3, - 2796: 0x5FA4, - 2797: 0x5FA5, - 2798: 0x5FA6, - 2799: 0x5FA7, - 2800: 0x5FA9, - 2801: 0x5FAB, - 2802: 0x5FAC, - 2803: 0x5FAF, - 2804: 0x5FB0, - 2805: 0x5FB1, - 2806: 0x5FB2, - 2807: 0x5FB3, - 2808: 0x5FB4, - 2809: 0x5FB6, - 2810: 0x5FB8, - 2811: 0x5FB9, - 2812: 0x5FBA, - 2813: 0x5FBB, - 2814: 0x5FBE, - 2815: 0x5FBF, - 2816: 0x5FC0, - 2817: 0x5FC1, - 2818: 0x5FC2, - 2819: 0x5FC7, - 2820: 0x5FC8, - 2821: 0x5FCA, - 2822: 0x5FCB, - 2823: 0x5FCE, - 2824: 0x5FD3, - 2825: 0x5FD4, - 2826: 0x5FD5, - 2827: 0x5FDA, - 2828: 0x5FDB, - 2829: 0x5FDC, - 2830: 0x5FDE, - 2831: 0x5FDF, - 2832: 0x5FE2, - 2833: 0x5FE3, - 2834: 0x5FE5, - 2835: 0x5FE6, - 2836: 0x5FE8, - 2837: 0x5FE9, - 2838: 0x5FEC, - 2839: 0x5FEF, - 2840: 0x5FF0, - 2841: 0x5FF2, - 2842: 0x5FF3, - 2843: 0x5FF4, - 2844: 0x5FF6, - 2845: 0x5FF7, - 2846: 0x5FF9, - 2847: 0x5FFA, - 2848: 0x5FFC, - 2849: 0x6007, - 2850: 0x6008, - 2851: 0x6009, - 2852: 0x600B, - 2853: 0x600C, - 2854: 0x6010, - 2855: 0x6011, - 2856: 0x6013, - 2857: 0x6017, - 2858: 0x6018, - 2859: 0x601A, - 2860: 0x601E, - 2861: 0x601F, - 2862: 0x6022, - 2863: 0x6023, - 2864: 0x6024, - 2865: 0x602C, - 2866: 0x602D, - 2867: 0x602E, - 2868: 0x6030, - 2869: 0x6031, - 2870: 0x6032, - 2871: 0x6033, - 2872: 0x6034, - 2873: 0x6036, - 2874: 0x6037, - 2875: 0x6038, - 2876: 0x6039, - 2877: 0x603A, - 2878: 0x603D, - 2879: 0x603E, - 2880: 0x6040, - 2881: 0x6044, - 2882: 0x6045, - 2883: 0x6046, - 2884: 0x6047, - 2885: 0x6048, - 2886: 0x6049, - 2887: 0x604A, - 2888: 0x604C, - 2889: 0x604E, - 2890: 0x604F, - 2891: 0x6051, - 2892: 0x6053, - 2893: 0x6054, - 2894: 0x6056, - 2895: 0x6057, - 2896: 0x6058, - 2897: 0x605B, - 2898: 0x605C, - 2899: 0x605E, - 2900: 0x605F, - 2901: 0x6060, - 2902: 0x6061, - 2903: 0x6065, - 2904: 0x6066, - 2905: 0x606E, - 2906: 0x6071, - 2907: 0x6072, - 2908: 0x6074, - 2909: 0x6075, - 2910: 0x6077, - 2911: 0x607E, - 2912: 0x6080, - 2913: 0x6081, - 2914: 0x6082, - 2915: 0x6085, - 2916: 0x6086, - 2917: 0x6087, - 2918: 0x6088, - 2919: 0x608A, - 2920: 0x608B, - 2921: 0x608E, - 2922: 0x608F, - 2923: 0x6090, - 2924: 0x6091, - 2925: 0x6093, - 2926: 0x6095, - 2927: 0x6097, - 2928: 0x6098, - 2929: 0x6099, - 2930: 0x609C, - 2931: 0x609E, - 2932: 0x60A1, - 2933: 0x60A2, - 2934: 0x60A4, - 2935: 0x60A5, - 2936: 0x60A7, - 2937: 0x60A9, - 2938: 0x60AA, - 2939: 0x60AE, - 2940: 0x60B0, - 2941: 0x60B3, - 2942: 0x60B5, - 2943: 0x60B6, - 2944: 0x60B7, - 2945: 0x60B9, - 2946: 0x60BA, - 2947: 0x60BD, - 2948: 0x60BE, - 2949: 0x60BF, - 2950: 0x60C0, - 2951: 0x60C1, - 2952: 0x60C2, - 2953: 0x60C3, - 2954: 0x60C4, - 2955: 0x60C7, - 2956: 0x60C8, - 2957: 0x60C9, - 2958: 0x60CC, - 2959: 0x60CD, - 2960: 0x60CE, - 2961: 0x60CF, - 2962: 0x60D0, - 2963: 0x60D2, - 2964: 0x60D3, - 2965: 0x60D4, - 2966: 0x60D6, - 2967: 0x60D7, - 2968: 0x60D9, - 2969: 0x60DB, - 2970: 0x60DE, - 2971: 0x60E1, - 2972: 0x60E2, - 2973: 0x60E3, - 2974: 0x60E4, - 2975: 0x60E5, - 2976: 0x60EA, - 2977: 0x60F1, - 2978: 0x60F2, - 2979: 0x60F5, - 2980: 0x60F7, - 2981: 0x60F8, - 2982: 0x60FB, - 2983: 0x60FC, - 2984: 0x60FD, - 2985: 0x60FE, - 2986: 0x60FF, - 2987: 0x6102, - 2988: 0x6103, - 2989: 0x6104, - 2990: 0x6105, - 2991: 0x6107, - 2992: 0x610A, - 2993: 0x610B, - 2994: 0x610C, - 2995: 0x6110, - 2996: 0x6111, - 2997: 0x6112, - 2998: 0x6113, - 2999: 0x6114, - 3000: 0x6116, - 3001: 0x6117, - 3002: 0x6118, - 3003: 0x6119, - 3004: 0x611B, - 3005: 0x611C, - 3006: 0x611D, - 3007: 0x611E, - 3008: 0x6121, - 3009: 0x6122, - 3010: 0x6125, - 3011: 0x6128, - 3012: 0x6129, - 3013: 0x612A, - 3014: 0x612C, - 3015: 0x612D, - 3016: 0x612E, - 3017: 0x612F, - 3018: 0x6130, - 3019: 0x6131, - 3020: 0x6132, - 3021: 0x6133, - 3022: 0x6134, - 3023: 0x6135, - 3024: 0x6136, - 3025: 0x6137, - 3026: 0x6138, - 3027: 0x6139, - 3028: 0x613A, - 3029: 0x613B, - 3030: 0x613C, - 3031: 0x613D, - 3032: 0x613E, - 3033: 0x6140, - 3034: 0x6141, - 3035: 0x6142, - 3036: 0x6143, - 3037: 0x6144, - 3038: 0x6145, - 3039: 0x6146, - 3040: 0x6147, - 3041: 0x6149, - 3042: 0x614B, - 3043: 0x614D, - 3044: 0x614F, - 3045: 0x6150, - 3046: 0x6152, - 3047: 0x6153, - 3048: 0x6154, - 3049: 0x6156, - 3050: 0x6157, - 3051: 0x6158, - 3052: 0x6159, - 3053: 0x615A, - 3054: 0x615B, - 3055: 0x615C, - 3056: 0x615E, - 3057: 0x615F, - 3058: 0x6160, - 3059: 0x6161, - 3060: 0x6163, - 3061: 0x6164, - 3062: 0x6165, - 3063: 0x6166, - 3064: 0x6169, - 3065: 0x616A, - 3066: 0x616B, - 3067: 0x616C, - 3068: 0x616D, - 3069: 0x616E, - 3070: 0x616F, - 3071: 0x6171, - 3072: 0x6172, - 3073: 0x6173, - 3074: 0x6174, - 3075: 0x6176, - 3076: 0x6178, - 3077: 0x6179, - 3078: 0x617A, - 3079: 0x617B, - 3080: 0x617C, - 3081: 0x617D, - 3082: 0x617E, - 3083: 0x617F, - 3084: 0x6180, - 3085: 0x6181, - 3086: 0x6182, - 3087: 0x6183, - 3088: 0x6184, - 3089: 0x6185, - 3090: 0x6186, - 3091: 0x6187, - 3092: 0x6188, - 3093: 0x6189, - 3094: 0x618A, - 3095: 0x618C, - 3096: 0x618D, - 3097: 0x618F, - 3098: 0x6190, - 3099: 0x6191, - 3100: 0x6192, - 3101: 0x6193, - 3102: 0x6195, - 3103: 0x6196, - 3104: 0x6197, - 3105: 0x6198, - 3106: 0x6199, - 3107: 0x619A, - 3108: 0x619B, - 3109: 0x619C, - 3110: 0x619E, - 3111: 0x619F, - 3112: 0x61A0, - 3113: 0x61A1, - 3114: 0x61A2, - 3115: 0x61A3, - 3116: 0x61A4, - 3117: 0x61A5, - 3118: 0x61A6, - 3119: 0x61AA, - 3120: 0x61AB, - 3121: 0x61AD, - 3122: 0x61AE, - 3123: 0x61AF, - 3124: 0x61B0, - 3125: 0x61B1, - 3126: 0x61B2, - 3127: 0x61B3, - 3128: 0x61B4, - 3129: 0x61B5, - 3130: 0x61B6, - 3131: 0x61B8, - 3132: 0x61B9, - 3133: 0x61BA, - 3134: 0x61BB, - 3135: 0x61BC, - 3136: 0x61BD, - 3137: 0x61BF, - 3138: 0x61C0, - 3139: 0x61C1, - 3140: 0x61C3, - 3141: 0x61C4, - 3142: 0x61C5, - 3143: 0x61C6, - 3144: 0x61C7, - 3145: 0x61C9, - 3146: 0x61CC, - 3147: 0x61CD, - 3148: 0x61CE, - 3149: 0x61CF, - 3150: 0x61D0, - 3151: 0x61D3, - 3152: 0x61D5, - 3153: 0x61D6, - 3154: 0x61D7, - 3155: 0x61D8, - 3156: 0x61D9, - 3157: 0x61DA, - 3158: 0x61DB, - 3159: 0x61DC, - 3160: 0x61DD, - 3161: 0x61DE, - 3162: 0x61DF, - 3163: 0x61E0, - 3164: 0x61E1, - 3165: 0x61E2, - 3166: 0x61E3, - 3167: 0x61E4, - 3168: 0x61E5, - 3169: 0x61E7, - 3170: 0x61E8, - 3171: 0x61E9, - 3172: 0x61EA, - 3173: 0x61EB, - 3174: 0x61EC, - 3175: 0x61ED, - 3176: 0x61EE, - 3177: 0x61EF, - 3178: 0x61F0, - 3179: 0x61F1, - 3180: 0x61F2, - 3181: 0x61F3, - 3182: 0x61F4, - 3183: 0x61F6, - 3184: 0x61F7, - 3185: 0x61F8, - 3186: 0x61F9, - 3187: 0x61FA, - 3188: 0x61FB, - 3189: 0x61FC, - 3190: 0x61FD, - 3191: 0x61FE, - 3192: 0x6200, - 3193: 0x6201, - 3194: 0x6202, - 3195: 0x6203, - 3196: 0x6204, - 3197: 0x6205, - 3198: 0x6207, - 3199: 0x6209, - 3200: 0x6213, - 3201: 0x6214, - 3202: 0x6219, - 3203: 0x621C, - 3204: 0x621D, - 3205: 0x621E, - 3206: 0x6220, - 3207: 0x6223, - 3208: 0x6226, - 3209: 0x6227, - 3210: 0x6228, - 3211: 0x6229, - 3212: 0x622B, - 3213: 0x622D, - 3214: 0x622F, - 3215: 0x6230, - 3216: 0x6231, - 3217: 0x6232, - 3218: 0x6235, - 3219: 0x6236, - 3220: 0x6238, - 3221: 0x6239, - 3222: 0x623A, - 3223: 0x623B, - 3224: 0x623C, - 3225: 0x6242, - 3226: 0x6244, - 3227: 0x6245, - 3228: 0x6246, - 3229: 0x624A, - 3230: 0x624F, - 3231: 0x6250, - 3232: 0x6255, - 3233: 0x6256, - 3234: 0x6257, - 3235: 0x6259, - 3236: 0x625A, - 3237: 0x625C, - 3238: 0x625D, - 3239: 0x625E, - 3240: 0x625F, - 3241: 0x6260, - 3242: 0x6261, - 3243: 0x6262, - 3244: 0x6264, - 3245: 0x6265, - 3246: 0x6268, - 3247: 0x6271, - 3248: 0x6272, - 3249: 0x6274, - 3250: 0x6275, - 3251: 0x6277, - 3252: 0x6278, - 3253: 0x627A, - 3254: 0x627B, - 3255: 0x627D, - 3256: 0x6281, - 3257: 0x6282, - 3258: 0x6283, - 3259: 0x6285, - 3260: 0x6286, - 3261: 0x6287, - 3262: 0x6288, - 3263: 0x628B, - 3264: 0x628C, - 3265: 0x628D, - 3266: 0x628E, - 3267: 0x628F, - 3268: 0x6290, - 3269: 0x6294, - 3270: 0x6299, - 3271: 0x629C, - 3272: 0x629D, - 3273: 0x629E, - 3274: 0x62A3, - 3275: 0x62A6, - 3276: 0x62A7, - 3277: 0x62A9, - 3278: 0x62AA, - 3279: 0x62AD, - 3280: 0x62AE, - 3281: 0x62AF, - 3282: 0x62B0, - 3283: 0x62B2, - 3284: 0x62B3, - 3285: 0x62B4, - 3286: 0x62B6, - 3287: 0x62B7, - 3288: 0x62B8, - 3289: 0x62BA, - 3290: 0x62BE, - 3291: 0x62C0, - 3292: 0x62C1, - 3293: 0x62C3, - 3294: 0x62CB, - 3295: 0x62CF, - 3296: 0x62D1, - 3297: 0x62D5, - 3298: 0x62DD, - 3299: 0x62DE, - 3300: 0x62E0, - 3301: 0x62E1, - 3302: 0x62E4, - 3303: 0x62EA, - 3304: 0x62EB, - 3305: 0x62F0, - 3306: 0x62F2, - 3307: 0x62F5, - 3308: 0x62F8, - 3309: 0x62F9, - 3310: 0x62FA, - 3311: 0x62FB, - 3312: 0x6300, - 3313: 0x6303, - 3314: 0x6304, - 3315: 0x6305, - 3316: 0x6306, - 3317: 0x630A, - 3318: 0x630B, - 3319: 0x630C, - 3320: 0x630D, - 3321: 0x630F, - 3322: 0x6310, - 3323: 0x6312, - 3324: 0x6313, - 3325: 0x6314, - 3326: 0x6315, - 3327: 0x6317, - 3328: 0x6318, - 3329: 0x6319, - 3330: 0x631C, - 3331: 0x6326, - 3332: 0x6327, - 3333: 0x6329, - 3334: 0x632C, - 3335: 0x632D, - 3336: 0x632E, - 3337: 0x6330, - 3338: 0x6331, - 3339: 0x6333, - 3340: 0x6334, - 3341: 0x6335, - 3342: 0x6336, - 3343: 0x6337, - 3344: 0x6338, - 3345: 0x633B, - 3346: 0x633C, - 3347: 0x633E, - 3348: 0x633F, - 3349: 0x6340, - 3350: 0x6341, - 3351: 0x6344, - 3352: 0x6347, - 3353: 0x6348, - 3354: 0x634A, - 3355: 0x6351, - 3356: 0x6352, - 3357: 0x6353, - 3358: 0x6354, - 3359: 0x6356, - 3360: 0x6357, - 3361: 0x6358, - 3362: 0x6359, - 3363: 0x635A, - 3364: 0x635B, - 3365: 0x635C, - 3366: 0x635D, - 3367: 0x6360, - 3368: 0x6364, - 3369: 0x6365, - 3370: 0x6366, - 3371: 0x6368, - 3372: 0x636A, - 3373: 0x636B, - 3374: 0x636C, - 3375: 0x636F, - 3376: 0x6370, - 3377: 0x6372, - 3378: 0x6373, - 3379: 0x6374, - 3380: 0x6375, - 3381: 0x6378, - 3382: 0x6379, - 3383: 0x637C, - 3384: 0x637D, - 3385: 0x637E, - 3386: 0x637F, - 3387: 0x6381, - 3388: 0x6383, - 3389: 0x6384, - 3390: 0x6385, - 3391: 0x6386, - 3392: 0x638B, - 3393: 0x638D, - 3394: 0x6391, - 3395: 0x6393, - 3396: 0x6394, - 3397: 0x6395, - 3398: 0x6397, - 3399: 0x6399, - 3400: 0x639A, - 3401: 0x639B, - 3402: 0x639C, - 3403: 0x639D, - 3404: 0x639E, - 3405: 0x639F, - 3406: 0x63A1, - 3407: 0x63A4, - 3408: 0x63A6, - 3409: 0x63AB, - 3410: 0x63AF, - 3411: 0x63B1, - 3412: 0x63B2, - 3413: 0x63B5, - 3414: 0x63B6, - 3415: 0x63B9, - 3416: 0x63BB, - 3417: 0x63BD, - 3418: 0x63BF, - 3419: 0x63C0, - 3420: 0x63C1, - 3421: 0x63C2, - 3422: 0x63C3, - 3423: 0x63C5, - 3424: 0x63C7, - 3425: 0x63C8, - 3426: 0x63CA, - 3427: 0x63CB, - 3428: 0x63CC, - 3429: 0x63D1, - 3430: 0x63D3, - 3431: 0x63D4, - 3432: 0x63D5, - 3433: 0x63D7, - 3434: 0x63D8, - 3435: 0x63D9, - 3436: 0x63DA, - 3437: 0x63DB, - 3438: 0x63DC, - 3439: 0x63DD, - 3440: 0x63DF, - 3441: 0x63E2, - 3442: 0x63E4, - 3443: 0x63E5, - 3444: 0x63E6, - 3445: 0x63E7, - 3446: 0x63E8, - 3447: 0x63EB, - 3448: 0x63EC, - 3449: 0x63EE, - 3450: 0x63EF, - 3451: 0x63F0, - 3452: 0x63F1, - 3453: 0x63F3, - 3454: 0x63F5, - 3455: 0x63F7, - 3456: 0x63F9, - 3457: 0x63FA, - 3458: 0x63FB, - 3459: 0x63FC, - 3460: 0x63FE, - 3461: 0x6403, - 3462: 0x6404, - 3463: 0x6406, - 3464: 0x6407, - 3465: 0x6408, - 3466: 0x6409, - 3467: 0x640A, - 3468: 0x640D, - 3469: 0x640E, - 3470: 0x6411, - 3471: 0x6412, - 3472: 0x6415, - 3473: 0x6416, - 3474: 0x6417, - 3475: 0x6418, - 3476: 0x6419, - 3477: 0x641A, - 3478: 0x641D, - 3479: 0x641F, - 3480: 0x6422, - 3481: 0x6423, - 3482: 0x6424, - 3483: 0x6425, - 3484: 0x6427, - 3485: 0x6428, - 3486: 0x6429, - 3487: 0x642B, - 3488: 0x642E, - 3489: 0x642F, - 3490: 0x6430, - 3491: 0x6431, - 3492: 0x6432, - 3493: 0x6433, - 3494: 0x6435, - 3495: 0x6436, - 3496: 0x6437, - 3497: 0x6438, - 3498: 0x6439, - 3499: 0x643B, - 3500: 0x643C, - 3501: 0x643E, - 3502: 0x6440, - 3503: 0x6442, - 3504: 0x6443, - 3505: 0x6449, - 3506: 0x644B, - 3507: 0x644C, - 3508: 0x644D, - 3509: 0x644E, - 3510: 0x644F, - 3511: 0x6450, - 3512: 0x6451, - 3513: 0x6453, - 3514: 0x6455, - 3515: 0x6456, - 3516: 0x6457, - 3517: 0x6459, - 3518: 0x645A, - 3519: 0x645B, - 3520: 0x645C, - 3521: 0x645D, - 3522: 0x645F, - 3523: 0x6460, - 3524: 0x6461, - 3525: 0x6462, - 3526: 0x6463, - 3527: 0x6464, - 3528: 0x6465, - 3529: 0x6466, - 3530: 0x6468, - 3531: 0x646A, - 3532: 0x646B, - 3533: 0x646C, - 3534: 0x646E, - 3535: 0x646F, - 3536: 0x6470, - 3537: 0x6471, - 3538: 0x6472, - 3539: 0x6473, - 3540: 0x6474, - 3541: 0x6475, - 3542: 0x6476, - 3543: 0x6477, - 3544: 0x647B, - 3545: 0x647C, - 3546: 0x647D, - 3547: 0x647E, - 3548: 0x647F, - 3549: 0x6480, - 3550: 0x6481, - 3551: 0x6483, - 3552: 0x6486, - 3553: 0x6488, - 3554: 0x6489, - 3555: 0x648A, - 3556: 0x648B, - 3557: 0x648C, - 3558: 0x648D, - 3559: 0x648E, - 3560: 0x648F, - 3561: 0x6490, - 3562: 0x6493, - 3563: 0x6494, - 3564: 0x6497, - 3565: 0x6498, - 3566: 0x649A, - 3567: 0x649B, - 3568: 0x649C, - 3569: 0x649D, - 3570: 0x649F, - 3571: 0x64A0, - 3572: 0x64A1, - 3573: 0x64A2, - 3574: 0x64A3, - 3575: 0x64A5, - 3576: 0x64A6, - 3577: 0x64A7, - 3578: 0x64A8, - 3579: 0x64AA, - 3580: 0x64AB, - 3581: 0x64AF, - 3582: 0x64B1, - 3583: 0x64B2, - 3584: 0x64B3, - 3585: 0x64B4, - 3586: 0x64B6, - 3587: 0x64B9, - 3588: 0x64BB, - 3589: 0x64BD, - 3590: 0x64BE, - 3591: 0x64BF, - 3592: 0x64C1, - 3593: 0x64C3, - 3594: 0x64C4, - 3595: 0x64C6, - 3596: 0x64C7, - 3597: 0x64C8, - 3598: 0x64C9, - 3599: 0x64CA, - 3600: 0x64CB, - 3601: 0x64CC, - 3602: 0x64CF, - 3603: 0x64D1, - 3604: 0x64D3, - 3605: 0x64D4, - 3606: 0x64D5, - 3607: 0x64D6, - 3608: 0x64D9, - 3609: 0x64DA, - 3610: 0x64DB, - 3611: 0x64DC, - 3612: 0x64DD, - 3613: 0x64DF, - 3614: 0x64E0, - 3615: 0x64E1, - 3616: 0x64E3, - 3617: 0x64E5, - 3618: 0x64E7, - 3619: 0x64E8, - 3620: 0x64E9, - 3621: 0x64EA, - 3622: 0x64EB, - 3623: 0x64EC, - 3624: 0x64ED, - 3625: 0x64EE, - 3626: 0x64EF, - 3627: 0x64F0, - 3628: 0x64F1, - 3629: 0x64F2, - 3630: 0x64F3, - 3631: 0x64F4, - 3632: 0x64F5, - 3633: 0x64F6, - 3634: 0x64F7, - 3635: 0x64F8, - 3636: 0x64F9, - 3637: 0x64FA, - 3638: 0x64FB, - 3639: 0x64FC, - 3640: 0x64FD, - 3641: 0x64FE, - 3642: 0x64FF, - 3643: 0x6501, - 3644: 0x6502, - 3645: 0x6503, - 3646: 0x6504, - 3647: 0x6505, - 3648: 0x6506, - 3649: 0x6507, - 3650: 0x6508, - 3651: 0x650A, - 3652: 0x650B, - 3653: 0x650C, - 3654: 0x650D, - 3655: 0x650E, - 3656: 0x650F, - 3657: 0x6510, - 3658: 0x6511, - 3659: 0x6513, - 3660: 0x6514, - 3661: 0x6515, - 3662: 0x6516, - 3663: 0x6517, - 3664: 0x6519, - 3665: 0x651A, - 3666: 0x651B, - 3667: 0x651C, - 3668: 0x651D, - 3669: 0x651E, - 3670: 0x651F, - 3671: 0x6520, - 3672: 0x6521, - 3673: 0x6522, - 3674: 0x6523, - 3675: 0x6524, - 3676: 0x6526, - 3677: 0x6527, - 3678: 0x6528, - 3679: 0x6529, - 3680: 0x652A, - 3681: 0x652C, - 3682: 0x652D, - 3683: 0x6530, - 3684: 0x6531, - 3685: 0x6532, - 3686: 0x6533, - 3687: 0x6537, - 3688: 0x653A, - 3689: 0x653C, - 3690: 0x653D, - 3691: 0x6540, - 3692: 0x6541, - 3693: 0x6542, - 3694: 0x6543, - 3695: 0x6544, - 3696: 0x6546, - 3697: 0x6547, - 3698: 0x654A, - 3699: 0x654B, - 3700: 0x654D, - 3701: 0x654E, - 3702: 0x6550, - 3703: 0x6552, - 3704: 0x6553, - 3705: 0x6554, - 3706: 0x6557, - 3707: 0x6558, - 3708: 0x655A, - 3709: 0x655C, - 3710: 0x655F, - 3711: 0x6560, - 3712: 0x6561, - 3713: 0x6564, - 3714: 0x6565, - 3715: 0x6567, - 3716: 0x6568, - 3717: 0x6569, - 3718: 0x656A, - 3719: 0x656D, - 3720: 0x656E, - 3721: 0x656F, - 3722: 0x6571, - 3723: 0x6573, - 3724: 0x6575, - 3725: 0x6576, - 3726: 0x6578, - 3727: 0x6579, - 3728: 0x657A, - 3729: 0x657B, - 3730: 0x657C, - 3731: 0x657D, - 3732: 0x657E, - 3733: 0x657F, - 3734: 0x6580, - 3735: 0x6581, - 3736: 0x6582, - 3737: 0x6583, - 3738: 0x6584, - 3739: 0x6585, - 3740: 0x6586, - 3741: 0x6588, - 3742: 0x6589, - 3743: 0x658A, - 3744: 0x658D, - 3745: 0x658E, - 3746: 0x658F, - 3747: 0x6592, - 3748: 0x6594, - 3749: 0x6595, - 3750: 0x6596, - 3751: 0x6598, - 3752: 0x659A, - 3753: 0x659D, - 3754: 0x659E, - 3755: 0x65A0, - 3756: 0x65A2, - 3757: 0x65A3, - 3758: 0x65A6, - 3759: 0x65A8, - 3760: 0x65AA, - 3761: 0x65AC, - 3762: 0x65AE, - 3763: 0x65B1, - 3764: 0x65B2, - 3765: 0x65B3, - 3766: 0x65B4, - 3767: 0x65B5, - 3768: 0x65B6, - 3769: 0x65B7, - 3770: 0x65B8, - 3771: 0x65BA, - 3772: 0x65BB, - 3773: 0x65BE, - 3774: 0x65BF, - 3775: 0x65C0, - 3776: 0x65C2, - 3777: 0x65C7, - 3778: 0x65C8, - 3779: 0x65C9, - 3780: 0x65CA, - 3781: 0x65CD, - 3782: 0x65D0, - 3783: 0x65D1, - 3784: 0x65D3, - 3785: 0x65D4, - 3786: 0x65D5, - 3787: 0x65D8, - 3788: 0x65D9, - 3789: 0x65DA, - 3790: 0x65DB, - 3791: 0x65DC, - 3792: 0x65DD, - 3793: 0x65DE, - 3794: 0x65DF, - 3795: 0x65E1, - 3796: 0x65E3, - 3797: 0x65E4, - 3798: 0x65EA, - 3799: 0x65EB, - 3800: 0x65F2, - 3801: 0x65F3, - 3802: 0x65F4, - 3803: 0x65F5, - 3804: 0x65F8, - 3805: 0x65F9, - 3806: 0x65FB, - 3807: 0x65FC, - 3808: 0x65FD, - 3809: 0x65FE, - 3810: 0x65FF, - 3811: 0x6601, - 3812: 0x6604, - 3813: 0x6605, - 3814: 0x6607, - 3815: 0x6608, - 3816: 0x6609, - 3817: 0x660B, - 3818: 0x660D, - 3819: 0x6610, - 3820: 0x6611, - 3821: 0x6612, - 3822: 0x6616, - 3823: 0x6617, - 3824: 0x6618, - 3825: 0x661A, - 3826: 0x661B, - 3827: 0x661C, - 3828: 0x661E, - 3829: 0x6621, - 3830: 0x6622, - 3831: 0x6623, - 3832: 0x6624, - 3833: 0x6626, - 3834: 0x6629, - 3835: 0x662A, - 3836: 0x662B, - 3837: 0x662C, - 3838: 0x662E, - 3839: 0x6630, - 3840: 0x6632, - 3841: 0x6633, - 3842: 0x6637, - 3843: 0x6638, - 3844: 0x6639, - 3845: 0x663A, - 3846: 0x663B, - 3847: 0x663D, - 3848: 0x663F, - 3849: 0x6640, - 3850: 0x6642, - 3851: 0x6644, - 3852: 0x6645, - 3853: 0x6646, - 3854: 0x6647, - 3855: 0x6648, - 3856: 0x6649, - 3857: 0x664A, - 3858: 0x664D, - 3859: 0x664E, - 3860: 0x6650, - 3861: 0x6651, - 3862: 0x6658, - 3863: 0x6659, - 3864: 0x665B, - 3865: 0x665C, - 3866: 0x665D, - 3867: 0x665E, - 3868: 0x6660, - 3869: 0x6662, - 3870: 0x6663, - 3871: 0x6665, - 3872: 0x6667, - 3873: 0x6669, - 3874: 0x666A, - 3875: 0x666B, - 3876: 0x666C, - 3877: 0x666D, - 3878: 0x6671, - 3879: 0x6672, - 3880: 0x6673, - 3881: 0x6675, - 3882: 0x6678, - 3883: 0x6679, - 3884: 0x667B, - 3885: 0x667C, - 3886: 0x667D, - 3887: 0x667F, - 3888: 0x6680, - 3889: 0x6681, - 3890: 0x6683, - 3891: 0x6685, - 3892: 0x6686, - 3893: 0x6688, - 3894: 0x6689, - 3895: 0x668A, - 3896: 0x668B, - 3897: 0x668D, - 3898: 0x668E, - 3899: 0x668F, - 3900: 0x6690, - 3901: 0x6692, - 3902: 0x6693, - 3903: 0x6694, - 3904: 0x6695, - 3905: 0x6698, - 3906: 0x6699, - 3907: 0x669A, - 3908: 0x669B, - 3909: 0x669C, - 3910: 0x669E, - 3911: 0x669F, - 3912: 0x66A0, - 3913: 0x66A1, - 3914: 0x66A2, - 3915: 0x66A3, - 3916: 0x66A4, - 3917: 0x66A5, - 3918: 0x66A6, - 3919: 0x66A9, - 3920: 0x66AA, - 3921: 0x66AB, - 3922: 0x66AC, - 3923: 0x66AD, - 3924: 0x66AF, - 3925: 0x66B0, - 3926: 0x66B1, - 3927: 0x66B2, - 3928: 0x66B3, - 3929: 0x66B5, - 3930: 0x66B6, - 3931: 0x66B7, - 3932: 0x66B8, - 3933: 0x66BA, - 3934: 0x66BB, - 3935: 0x66BC, - 3936: 0x66BD, - 3937: 0x66BF, - 3938: 0x66C0, - 3939: 0x66C1, - 3940: 0x66C2, - 3941: 0x66C3, - 3942: 0x66C4, - 3943: 0x66C5, - 3944: 0x66C6, - 3945: 0x66C7, - 3946: 0x66C8, - 3947: 0x66C9, - 3948: 0x66CA, - 3949: 0x66CB, - 3950: 0x66CC, - 3951: 0x66CD, - 3952: 0x66CE, - 3953: 0x66CF, - 3954: 0x66D0, - 3955: 0x66D1, - 3956: 0x66D2, - 3957: 0x66D3, - 3958: 0x66D4, - 3959: 0x66D5, - 3960: 0x66D6, - 3961: 0x66D7, - 3962: 0x66D8, - 3963: 0x66DA, - 3964: 0x66DE, - 3965: 0x66DF, - 3966: 0x66E0, - 3967: 0x66E1, - 3968: 0x66E2, - 3969: 0x66E3, - 3970: 0x66E4, - 3971: 0x66E5, - 3972: 0x66E7, - 3973: 0x66E8, - 3974: 0x66EA, - 3975: 0x66EB, - 3976: 0x66EC, - 3977: 0x66ED, - 3978: 0x66EE, - 3979: 0x66EF, - 3980: 0x66F1, - 3981: 0x66F5, - 3982: 0x66F6, - 3983: 0x66F8, - 3984: 0x66FA, - 3985: 0x66FB, - 3986: 0x66FD, - 3987: 0x6701, - 3988: 0x6702, - 3989: 0x6703, - 3990: 0x6704, - 3991: 0x6705, - 3992: 0x6706, - 3993: 0x6707, - 3994: 0x670C, - 3995: 0x670E, - 3996: 0x670F, - 3997: 0x6711, - 3998: 0x6712, - 3999: 0x6713, - 4000: 0x6716, - 4001: 0x6718, - 4002: 0x6719, - 4003: 0x671A, - 4004: 0x671C, - 4005: 0x671E, - 4006: 0x6720, - 4007: 0x6721, - 4008: 0x6722, - 4009: 0x6723, - 4010: 0x6724, - 4011: 0x6725, - 4012: 0x6727, - 4013: 0x6729, - 4014: 0x672E, - 4015: 0x6730, - 4016: 0x6732, - 4017: 0x6733, - 4018: 0x6736, - 4019: 0x6737, - 4020: 0x6738, - 4021: 0x6739, - 4022: 0x673B, - 4023: 0x673C, - 4024: 0x673E, - 4025: 0x673F, - 4026: 0x6741, - 4027: 0x6744, - 4028: 0x6745, - 4029: 0x6747, - 4030: 0x674A, - 4031: 0x674B, - 4032: 0x674D, - 4033: 0x6752, - 4034: 0x6754, - 4035: 0x6755, - 4036: 0x6757, - 4037: 0x6758, - 4038: 0x6759, - 4039: 0x675A, - 4040: 0x675B, - 4041: 0x675D, - 4042: 0x6762, - 4043: 0x6763, - 4044: 0x6764, - 4045: 0x6766, - 4046: 0x6767, - 4047: 0x676B, - 4048: 0x676C, - 4049: 0x676E, - 4050: 0x6771, - 4051: 0x6774, - 4052: 0x6776, - 4053: 0x6778, - 4054: 0x6779, - 4055: 0x677A, - 4056: 0x677B, - 4057: 0x677D, - 4058: 0x6780, - 4059: 0x6782, - 4060: 0x6783, - 4061: 0x6785, - 4062: 0x6786, - 4063: 0x6788, - 4064: 0x678A, - 4065: 0x678C, - 4066: 0x678D, - 4067: 0x678E, - 4068: 0x678F, - 4069: 0x6791, - 4070: 0x6792, - 4071: 0x6793, - 4072: 0x6794, - 4073: 0x6796, - 4074: 0x6799, - 4075: 0x679B, - 4076: 0x679F, - 4077: 0x67A0, - 4078: 0x67A1, - 4079: 0x67A4, - 4080: 0x67A6, - 4081: 0x67A9, - 4082: 0x67AC, - 4083: 0x67AE, - 4084: 0x67B1, - 4085: 0x67B2, - 4086: 0x67B4, - 4087: 0x67B9, - 4088: 0x67BA, - 4089: 0x67BB, - 4090: 0x67BC, - 4091: 0x67BD, - 4092: 0x67BE, - 4093: 0x67BF, - 4094: 0x67C0, - 4095: 0x67C2, - 4096: 0x67C5, - 4097: 0x67C6, - 4098: 0x67C7, - 4099: 0x67C8, - 4100: 0x67C9, - 4101: 0x67CA, - 4102: 0x67CB, - 4103: 0x67CC, - 4104: 0x67CD, - 4105: 0x67CE, - 4106: 0x67D5, - 4107: 0x67D6, - 4108: 0x67D7, - 4109: 0x67DB, - 4110: 0x67DF, - 4111: 0x67E1, - 4112: 0x67E3, - 4113: 0x67E4, - 4114: 0x67E6, - 4115: 0x67E7, - 4116: 0x67E8, - 4117: 0x67EA, - 4118: 0x67EB, - 4119: 0x67ED, - 4120: 0x67EE, - 4121: 0x67F2, - 4122: 0x67F5, - 4123: 0x67F6, - 4124: 0x67F7, - 4125: 0x67F8, - 4126: 0x67F9, - 4127: 0x67FA, - 4128: 0x67FB, - 4129: 0x67FC, - 4130: 0x67FE, - 4131: 0x6801, - 4132: 0x6802, - 4133: 0x6803, - 4134: 0x6804, - 4135: 0x6806, - 4136: 0x680D, - 4137: 0x6810, - 4138: 0x6812, - 4139: 0x6814, - 4140: 0x6815, - 4141: 0x6818, - 4142: 0x6819, - 4143: 0x681A, - 4144: 0x681B, - 4145: 0x681C, - 4146: 0x681E, - 4147: 0x681F, - 4148: 0x6820, - 4149: 0x6822, - 4150: 0x6823, - 4151: 0x6824, - 4152: 0x6825, - 4153: 0x6826, - 4154: 0x6827, - 4155: 0x6828, - 4156: 0x682B, - 4157: 0x682C, - 4158: 0x682D, - 4159: 0x682E, - 4160: 0x682F, - 4161: 0x6830, - 4162: 0x6831, - 4163: 0x6834, - 4164: 0x6835, - 4165: 0x6836, - 4166: 0x683A, - 4167: 0x683B, - 4168: 0x683F, - 4169: 0x6847, - 4170: 0x684B, - 4171: 0x684D, - 4172: 0x684F, - 4173: 0x6852, - 4174: 0x6856, - 4175: 0x6857, - 4176: 0x6858, - 4177: 0x6859, - 4178: 0x685A, - 4179: 0x685B, - 4180: 0x685C, - 4181: 0x685D, - 4182: 0x685E, - 4183: 0x685F, - 4184: 0x686A, - 4185: 0x686C, - 4186: 0x686D, - 4187: 0x686E, - 4188: 0x686F, - 4189: 0x6870, - 4190: 0x6871, - 4191: 0x6872, - 4192: 0x6873, - 4193: 0x6875, - 4194: 0x6878, - 4195: 0x6879, - 4196: 0x687A, - 4197: 0x687B, - 4198: 0x687C, - 4199: 0x687D, - 4200: 0x687E, - 4201: 0x687F, - 4202: 0x6880, - 4203: 0x6882, - 4204: 0x6884, - 4205: 0x6887, - 4206: 0x6888, - 4207: 0x6889, - 4208: 0x688A, - 4209: 0x688B, - 4210: 0x688C, - 4211: 0x688D, - 4212: 0x688E, - 4213: 0x6890, - 4214: 0x6891, - 4215: 0x6892, - 4216: 0x6894, - 4217: 0x6895, - 4218: 0x6896, - 4219: 0x6898, - 4220: 0x6899, - 4221: 0x689A, - 4222: 0x689B, - 4223: 0x689C, - 4224: 0x689D, - 4225: 0x689E, - 4226: 0x689F, - 4227: 0x68A0, - 4228: 0x68A1, - 4229: 0x68A3, - 4230: 0x68A4, - 4231: 0x68A5, - 4232: 0x68A9, - 4233: 0x68AA, - 4234: 0x68AB, - 4235: 0x68AC, - 4236: 0x68AE, - 4237: 0x68B1, - 4238: 0x68B2, - 4239: 0x68B4, - 4240: 0x68B6, - 4241: 0x68B7, - 4242: 0x68B8, - 4243: 0x68B9, - 4244: 0x68BA, - 4245: 0x68BB, - 4246: 0x68BC, - 4247: 0x68BD, - 4248: 0x68BE, - 4249: 0x68BF, - 4250: 0x68C1, - 4251: 0x68C3, - 4252: 0x68C4, - 4253: 0x68C5, - 4254: 0x68C6, - 4255: 0x68C7, - 4256: 0x68C8, - 4257: 0x68CA, - 4258: 0x68CC, - 4259: 0x68CE, - 4260: 0x68CF, - 4261: 0x68D0, - 4262: 0x68D1, - 4263: 0x68D3, - 4264: 0x68D4, - 4265: 0x68D6, - 4266: 0x68D7, - 4267: 0x68D9, - 4268: 0x68DB, - 4269: 0x68DC, - 4270: 0x68DD, - 4271: 0x68DE, - 4272: 0x68DF, - 4273: 0x68E1, - 4274: 0x68E2, - 4275: 0x68E4, - 4276: 0x68E5, - 4277: 0x68E6, - 4278: 0x68E7, - 4279: 0x68E8, - 4280: 0x68E9, - 4281: 0x68EA, - 4282: 0x68EB, - 4283: 0x68EC, - 4284: 0x68ED, - 4285: 0x68EF, - 4286: 0x68F2, - 4287: 0x68F3, - 4288: 0x68F4, - 4289: 0x68F6, - 4290: 0x68F7, - 4291: 0x68F8, - 4292: 0x68FB, - 4293: 0x68FD, - 4294: 0x68FE, - 4295: 0x68FF, - 4296: 0x6900, - 4297: 0x6902, - 4298: 0x6903, - 4299: 0x6904, - 4300: 0x6906, - 4301: 0x6907, - 4302: 0x6908, - 4303: 0x6909, - 4304: 0x690A, - 4305: 0x690C, - 4306: 0x690F, - 4307: 0x6911, - 4308: 0x6913, - 4309: 0x6914, - 4310: 0x6915, - 4311: 0x6916, - 4312: 0x6917, - 4313: 0x6918, - 4314: 0x6919, - 4315: 0x691A, - 4316: 0x691B, - 4317: 0x691C, - 4318: 0x691D, - 4319: 0x691E, - 4320: 0x6921, - 4321: 0x6922, - 4322: 0x6923, - 4323: 0x6925, - 4324: 0x6926, - 4325: 0x6927, - 4326: 0x6928, - 4327: 0x6929, - 4328: 0x692A, - 4329: 0x692B, - 4330: 0x692C, - 4331: 0x692E, - 4332: 0x692F, - 4333: 0x6931, - 4334: 0x6932, - 4335: 0x6933, - 4336: 0x6935, - 4337: 0x6936, - 4338: 0x6937, - 4339: 0x6938, - 4340: 0x693A, - 4341: 0x693B, - 4342: 0x693C, - 4343: 0x693E, - 4344: 0x6940, - 4345: 0x6941, - 4346: 0x6943, - 4347: 0x6944, - 4348: 0x6945, - 4349: 0x6946, - 4350: 0x6947, - 4351: 0x6948, - 4352: 0x6949, - 4353: 0x694A, - 4354: 0x694B, - 4355: 0x694C, - 4356: 0x694D, - 4357: 0x694E, - 4358: 0x694F, - 4359: 0x6950, - 4360: 0x6951, - 4361: 0x6952, - 4362: 0x6953, - 4363: 0x6955, - 4364: 0x6956, - 4365: 0x6958, - 4366: 0x6959, - 4367: 0x695B, - 4368: 0x695C, - 4369: 0x695F, - 4370: 0x6961, - 4371: 0x6962, - 4372: 0x6964, - 4373: 0x6965, - 4374: 0x6967, - 4375: 0x6968, - 4376: 0x6969, - 4377: 0x696A, - 4378: 0x696C, - 4379: 0x696D, - 4380: 0x696F, - 4381: 0x6970, - 4382: 0x6972, - 4383: 0x6973, - 4384: 0x6974, - 4385: 0x6975, - 4386: 0x6976, - 4387: 0x697A, - 4388: 0x697B, - 4389: 0x697D, - 4390: 0x697E, - 4391: 0x697F, - 4392: 0x6981, - 4393: 0x6983, - 4394: 0x6985, - 4395: 0x698A, - 4396: 0x698B, - 4397: 0x698C, - 4398: 0x698E, - 4399: 0x698F, - 4400: 0x6990, - 4401: 0x6991, - 4402: 0x6992, - 4403: 0x6993, - 4404: 0x6996, - 4405: 0x6997, - 4406: 0x6999, - 4407: 0x699A, - 4408: 0x699D, - 4409: 0x699E, - 4410: 0x699F, - 4411: 0x69A0, - 4412: 0x69A1, - 4413: 0x69A2, - 4414: 0x69A3, - 4415: 0x69A4, - 4416: 0x69A5, - 4417: 0x69A6, - 4418: 0x69A9, - 4419: 0x69AA, - 4420: 0x69AC, - 4421: 0x69AE, - 4422: 0x69AF, - 4423: 0x69B0, - 4424: 0x69B2, - 4425: 0x69B3, - 4426: 0x69B5, - 4427: 0x69B6, - 4428: 0x69B8, - 4429: 0x69B9, - 4430: 0x69BA, - 4431: 0x69BC, - 4432: 0x69BD, - 4433: 0x69BE, - 4434: 0x69BF, - 4435: 0x69C0, - 4436: 0x69C2, - 4437: 0x69C3, - 4438: 0x69C4, - 4439: 0x69C5, - 4440: 0x69C6, - 4441: 0x69C7, - 4442: 0x69C8, - 4443: 0x69C9, - 4444: 0x69CB, - 4445: 0x69CD, - 4446: 0x69CF, - 4447: 0x69D1, - 4448: 0x69D2, - 4449: 0x69D3, - 4450: 0x69D5, - 4451: 0x69D6, - 4452: 0x69D7, - 4453: 0x69D8, - 4454: 0x69D9, - 4455: 0x69DA, - 4456: 0x69DC, - 4457: 0x69DD, - 4458: 0x69DE, - 4459: 0x69E1, - 4460: 0x69E2, - 4461: 0x69E3, - 4462: 0x69E4, - 4463: 0x69E5, - 4464: 0x69E6, - 4465: 0x69E7, - 4466: 0x69E8, - 4467: 0x69E9, - 4468: 0x69EA, - 4469: 0x69EB, - 4470: 0x69EC, - 4471: 0x69EE, - 4472: 0x69EF, - 4473: 0x69F0, - 4474: 0x69F1, - 4475: 0x69F3, - 4476: 0x69F4, - 4477: 0x69F5, - 4478: 0x69F6, - 4479: 0x69F7, - 4480: 0x69F8, - 4481: 0x69F9, - 4482: 0x69FA, - 4483: 0x69FB, - 4484: 0x69FC, - 4485: 0x69FE, - 4486: 0x6A00, - 4487: 0x6A01, - 4488: 0x6A02, - 4489: 0x6A03, - 4490: 0x6A04, - 4491: 0x6A05, - 4492: 0x6A06, - 4493: 0x6A07, - 4494: 0x6A08, - 4495: 0x6A09, - 4496: 0x6A0B, - 4497: 0x6A0C, - 4498: 0x6A0D, - 4499: 0x6A0E, - 4500: 0x6A0F, - 4501: 0x6A10, - 4502: 0x6A11, - 4503: 0x6A12, - 4504: 0x6A13, - 4505: 0x6A14, - 4506: 0x6A15, - 4507: 0x6A16, - 4508: 0x6A19, - 4509: 0x6A1A, - 4510: 0x6A1B, - 4511: 0x6A1C, - 4512: 0x6A1D, - 4513: 0x6A1E, - 4514: 0x6A20, - 4515: 0x6A22, - 4516: 0x6A23, - 4517: 0x6A24, - 4518: 0x6A25, - 4519: 0x6A26, - 4520: 0x6A27, - 4521: 0x6A29, - 4522: 0x6A2B, - 4523: 0x6A2C, - 4524: 0x6A2D, - 4525: 0x6A2E, - 4526: 0x6A30, - 4527: 0x6A32, - 4528: 0x6A33, - 4529: 0x6A34, - 4530: 0x6A36, - 4531: 0x6A37, - 4532: 0x6A38, - 4533: 0x6A39, - 4534: 0x6A3A, - 4535: 0x6A3B, - 4536: 0x6A3C, - 4537: 0x6A3F, - 4538: 0x6A40, - 4539: 0x6A41, - 4540: 0x6A42, - 4541: 0x6A43, - 4542: 0x6A45, - 4543: 0x6A46, - 4544: 0x6A48, - 4545: 0x6A49, - 4546: 0x6A4A, - 4547: 0x6A4B, - 4548: 0x6A4C, - 4549: 0x6A4D, - 4550: 0x6A4E, - 4551: 0x6A4F, - 4552: 0x6A51, - 4553: 0x6A52, - 4554: 0x6A53, - 4555: 0x6A54, - 4556: 0x6A55, - 4557: 0x6A56, - 4558: 0x6A57, - 4559: 0x6A5A, - 4560: 0x6A5C, - 4561: 0x6A5D, - 4562: 0x6A5E, - 4563: 0x6A5F, - 4564: 0x6A60, - 4565: 0x6A62, - 4566: 0x6A63, - 4567: 0x6A64, - 4568: 0x6A66, - 4569: 0x6A67, - 4570: 0x6A68, - 4571: 0x6A69, - 4572: 0x6A6A, - 4573: 0x6A6B, - 4574: 0x6A6C, - 4575: 0x6A6D, - 4576: 0x6A6E, - 4577: 0x6A6F, - 4578: 0x6A70, - 4579: 0x6A72, - 4580: 0x6A73, - 4581: 0x6A74, - 4582: 0x6A75, - 4583: 0x6A76, - 4584: 0x6A77, - 4585: 0x6A78, - 4586: 0x6A7A, - 4587: 0x6A7B, - 4588: 0x6A7D, - 4589: 0x6A7E, - 4590: 0x6A7F, - 4591: 0x6A81, - 4592: 0x6A82, - 4593: 0x6A83, - 4594: 0x6A85, - 4595: 0x6A86, - 4596: 0x6A87, - 4597: 0x6A88, - 4598: 0x6A89, - 4599: 0x6A8A, - 4600: 0x6A8B, - 4601: 0x6A8C, - 4602: 0x6A8D, - 4603: 0x6A8F, - 4604: 0x6A92, - 4605: 0x6A93, - 4606: 0x6A94, - 4607: 0x6A95, - 4608: 0x6A96, - 4609: 0x6A98, - 4610: 0x6A99, - 4611: 0x6A9A, - 4612: 0x6A9B, - 4613: 0x6A9C, - 4614: 0x6A9D, - 4615: 0x6A9E, - 4616: 0x6A9F, - 4617: 0x6AA1, - 4618: 0x6AA2, - 4619: 0x6AA3, - 4620: 0x6AA4, - 4621: 0x6AA5, - 4622: 0x6AA6, - 4623: 0x6AA7, - 4624: 0x6AA8, - 4625: 0x6AAA, - 4626: 0x6AAD, - 4627: 0x6AAE, - 4628: 0x6AAF, - 4629: 0x6AB0, - 4630: 0x6AB1, - 4631: 0x6AB2, - 4632: 0x6AB3, - 4633: 0x6AB4, - 4634: 0x6AB5, - 4635: 0x6AB6, - 4636: 0x6AB7, - 4637: 0x6AB8, - 4638: 0x6AB9, - 4639: 0x6ABA, - 4640: 0x6ABB, - 4641: 0x6ABC, - 4642: 0x6ABD, - 4643: 0x6ABE, - 4644: 0x6ABF, - 4645: 0x6AC0, - 4646: 0x6AC1, - 4647: 0x6AC2, - 4648: 0x6AC3, - 4649: 0x6AC4, - 4650: 0x6AC5, - 4651: 0x6AC6, - 4652: 0x6AC7, - 4653: 0x6AC8, - 4654: 0x6AC9, - 4655: 0x6ACA, - 4656: 0x6ACB, - 4657: 0x6ACC, - 4658: 0x6ACD, - 4659: 0x6ACE, - 4660: 0x6ACF, - 4661: 0x6AD0, - 4662: 0x6AD1, - 4663: 0x6AD2, - 4664: 0x6AD3, - 4665: 0x6AD4, - 4666: 0x6AD5, - 4667: 0x6AD6, - 4668: 0x6AD7, - 4669: 0x6AD8, - 4670: 0x6AD9, - 4671: 0x6ADA, - 4672: 0x6ADB, - 4673: 0x6ADC, - 4674: 0x6ADD, - 4675: 0x6ADE, - 4676: 0x6ADF, - 4677: 0x6AE0, - 4678: 0x6AE1, - 4679: 0x6AE2, - 4680: 0x6AE3, - 4681: 0x6AE4, - 4682: 0x6AE5, - 4683: 0x6AE6, - 4684: 0x6AE7, - 4685: 0x6AE8, - 4686: 0x6AE9, - 4687: 0x6AEA, - 4688: 0x6AEB, - 4689: 0x6AEC, - 4690: 0x6AED, - 4691: 0x6AEE, - 4692: 0x6AEF, - 4693: 0x6AF0, - 4694: 0x6AF1, - 4695: 0x6AF2, - 4696: 0x6AF3, - 4697: 0x6AF4, - 4698: 0x6AF5, - 4699: 0x6AF6, - 4700: 0x6AF7, - 4701: 0x6AF8, - 4702: 0x6AF9, - 4703: 0x6AFA, - 4704: 0x6AFB, - 4705: 0x6AFC, - 4706: 0x6AFD, - 4707: 0x6AFE, - 4708: 0x6AFF, - 4709: 0x6B00, - 4710: 0x6B01, - 4711: 0x6B02, - 4712: 0x6B03, - 4713: 0x6B04, - 4714: 0x6B05, - 4715: 0x6B06, - 4716: 0x6B07, - 4717: 0x6B08, - 4718: 0x6B09, - 4719: 0x6B0A, - 4720: 0x6B0B, - 4721: 0x6B0C, - 4722: 0x6B0D, - 4723: 0x6B0E, - 4724: 0x6B0F, - 4725: 0x6B10, - 4726: 0x6B11, - 4727: 0x6B12, - 4728: 0x6B13, - 4729: 0x6B14, - 4730: 0x6B15, - 4731: 0x6B16, - 4732: 0x6B17, - 4733: 0x6B18, - 4734: 0x6B19, - 4735: 0x6B1A, - 4736: 0x6B1B, - 4737: 0x6B1C, - 4738: 0x6B1D, - 4739: 0x6B1E, - 4740: 0x6B1F, - 4741: 0x6B25, - 4742: 0x6B26, - 4743: 0x6B28, - 4744: 0x6B29, - 4745: 0x6B2A, - 4746: 0x6B2B, - 4747: 0x6B2C, - 4748: 0x6B2D, - 4749: 0x6B2E, - 4750: 0x6B2F, - 4751: 0x6B30, - 4752: 0x6B31, - 4753: 0x6B33, - 4754: 0x6B34, - 4755: 0x6B35, - 4756: 0x6B36, - 4757: 0x6B38, - 4758: 0x6B3B, - 4759: 0x6B3C, - 4760: 0x6B3D, - 4761: 0x6B3F, - 4762: 0x6B40, - 4763: 0x6B41, - 4764: 0x6B42, - 4765: 0x6B44, - 4766: 0x6B45, - 4767: 0x6B48, - 4768: 0x6B4A, - 4769: 0x6B4B, - 4770: 0x6B4D, - 4771: 0x6B4E, - 4772: 0x6B4F, - 4773: 0x6B50, - 4774: 0x6B51, - 4775: 0x6B52, - 4776: 0x6B53, - 4777: 0x6B54, - 4778: 0x6B55, - 4779: 0x6B56, - 4780: 0x6B57, - 4781: 0x6B58, - 4782: 0x6B5A, - 4783: 0x6B5B, - 4784: 0x6B5C, - 4785: 0x6B5D, - 4786: 0x6B5E, - 4787: 0x6B5F, - 4788: 0x6B60, - 4789: 0x6B61, - 4790: 0x6B68, - 4791: 0x6B69, - 4792: 0x6B6B, - 4793: 0x6B6C, - 4794: 0x6B6D, - 4795: 0x6B6E, - 4796: 0x6B6F, - 4797: 0x6B70, - 4798: 0x6B71, - 4799: 0x6B72, - 4800: 0x6B73, - 4801: 0x6B74, - 4802: 0x6B75, - 4803: 0x6B76, - 4804: 0x6B77, - 4805: 0x6B78, - 4806: 0x6B7A, - 4807: 0x6B7D, - 4808: 0x6B7E, - 4809: 0x6B7F, - 4810: 0x6B80, - 4811: 0x6B85, - 4812: 0x6B88, - 4813: 0x6B8C, - 4814: 0x6B8E, - 4815: 0x6B8F, - 4816: 0x6B90, - 4817: 0x6B91, - 4818: 0x6B94, - 4819: 0x6B95, - 4820: 0x6B97, - 4821: 0x6B98, - 4822: 0x6B99, - 4823: 0x6B9C, - 4824: 0x6B9D, - 4825: 0x6B9E, - 4826: 0x6B9F, - 4827: 0x6BA0, - 4828: 0x6BA2, - 4829: 0x6BA3, - 4830: 0x6BA4, - 4831: 0x6BA5, - 4832: 0x6BA6, - 4833: 0x6BA7, - 4834: 0x6BA8, - 4835: 0x6BA9, - 4836: 0x6BAB, - 4837: 0x6BAC, - 4838: 0x6BAD, - 4839: 0x6BAE, - 4840: 0x6BAF, - 4841: 0x6BB0, - 4842: 0x6BB1, - 4843: 0x6BB2, - 4844: 0x6BB6, - 4845: 0x6BB8, - 4846: 0x6BB9, - 4847: 0x6BBA, - 4848: 0x6BBB, - 4849: 0x6BBC, - 4850: 0x6BBD, - 4851: 0x6BBE, - 4852: 0x6BC0, - 4853: 0x6BC3, - 4854: 0x6BC4, - 4855: 0x6BC6, - 4856: 0x6BC7, - 4857: 0x6BC8, - 4858: 0x6BC9, - 4859: 0x6BCA, - 4860: 0x6BCC, - 4861: 0x6BCE, - 4862: 0x6BD0, - 4863: 0x6BD1, - 4864: 0x6BD8, - 4865: 0x6BDA, - 4866: 0x6BDC, - 4867: 0x6BDD, - 4868: 0x6BDE, - 4869: 0x6BDF, - 4870: 0x6BE0, - 4871: 0x6BE2, - 4872: 0x6BE3, - 4873: 0x6BE4, - 4874: 0x6BE5, - 4875: 0x6BE6, - 4876: 0x6BE7, - 4877: 0x6BE8, - 4878: 0x6BE9, - 4879: 0x6BEC, - 4880: 0x6BED, - 4881: 0x6BEE, - 4882: 0x6BF0, - 4883: 0x6BF1, - 4884: 0x6BF2, - 4885: 0x6BF4, - 4886: 0x6BF6, - 4887: 0x6BF7, - 4888: 0x6BF8, - 4889: 0x6BFA, - 4890: 0x6BFB, - 4891: 0x6BFC, - 4892: 0x6BFE, - 4893: 0x6BFF, - 4894: 0x6C00, - 4895: 0x6C01, - 4896: 0x6C02, - 4897: 0x6C03, - 4898: 0x6C04, - 4899: 0x6C08, - 4900: 0x6C09, - 4901: 0x6C0A, - 4902: 0x6C0B, - 4903: 0x6C0C, - 4904: 0x6C0E, - 4905: 0x6C12, - 4906: 0x6C17, - 4907: 0x6C1C, - 4908: 0x6C1D, - 4909: 0x6C1E, - 4910: 0x6C20, - 4911: 0x6C23, - 4912: 0x6C25, - 4913: 0x6C2B, - 4914: 0x6C2C, - 4915: 0x6C2D, - 4916: 0x6C31, - 4917: 0x6C33, - 4918: 0x6C36, - 4919: 0x6C37, - 4920: 0x6C39, - 4921: 0x6C3A, - 4922: 0x6C3B, - 4923: 0x6C3C, - 4924: 0x6C3E, - 4925: 0x6C3F, - 4926: 0x6C43, - 4927: 0x6C44, - 4928: 0x6C45, - 4929: 0x6C48, - 4930: 0x6C4B, - 4931: 0x6C4C, - 4932: 0x6C4D, - 4933: 0x6C4E, - 4934: 0x6C4F, - 4935: 0x6C51, - 4936: 0x6C52, - 4937: 0x6C53, - 4938: 0x6C56, - 4939: 0x6C58, - 4940: 0x6C59, - 4941: 0x6C5A, - 4942: 0x6C62, - 4943: 0x6C63, - 4944: 0x6C65, - 4945: 0x6C66, - 4946: 0x6C67, - 4947: 0x6C6B, - 4948: 0x6C6C, - 4949: 0x6C6D, - 4950: 0x6C6E, - 4951: 0x6C6F, - 4952: 0x6C71, - 4953: 0x6C73, - 4954: 0x6C75, - 4955: 0x6C77, - 4956: 0x6C78, - 4957: 0x6C7A, - 4958: 0x6C7B, - 4959: 0x6C7C, - 4960: 0x6C7F, - 4961: 0x6C80, - 4962: 0x6C84, - 4963: 0x6C87, - 4964: 0x6C8A, - 4965: 0x6C8B, - 4966: 0x6C8D, - 4967: 0x6C8E, - 4968: 0x6C91, - 4969: 0x6C92, - 4970: 0x6C95, - 4971: 0x6C96, - 4972: 0x6C97, - 4973: 0x6C98, - 4974: 0x6C9A, - 4975: 0x6C9C, - 4976: 0x6C9D, - 4977: 0x6C9E, - 4978: 0x6CA0, - 4979: 0x6CA2, - 4980: 0x6CA8, - 4981: 0x6CAC, - 4982: 0x6CAF, - 4983: 0x6CB0, - 4984: 0x6CB4, - 4985: 0x6CB5, - 4986: 0x6CB6, - 4987: 0x6CB7, - 4988: 0x6CBA, - 4989: 0x6CC0, - 4990: 0x6CC1, - 4991: 0x6CC2, - 4992: 0x6CC3, - 4993: 0x6CC6, - 4994: 0x6CC7, - 4995: 0x6CC8, - 4996: 0x6CCB, - 4997: 0x6CCD, - 4998: 0x6CCE, - 4999: 0x6CCF, - 5000: 0x6CD1, - 5001: 0x6CD2, - 5002: 0x6CD8, - 5003: 0x6CD9, - 5004: 0x6CDA, - 5005: 0x6CDC, - 5006: 0x6CDD, - 5007: 0x6CDF, - 5008: 0x6CE4, - 5009: 0x6CE6, - 5010: 0x6CE7, - 5011: 0x6CE9, - 5012: 0x6CEC, - 5013: 0x6CED, - 5014: 0x6CF2, - 5015: 0x6CF4, - 5016: 0x6CF9, - 5017: 0x6CFF, - 5018: 0x6D00, - 5019: 0x6D02, - 5020: 0x6D03, - 5021: 0x6D05, - 5022: 0x6D06, - 5023: 0x6D08, - 5024: 0x6D09, - 5025: 0x6D0A, - 5026: 0x6D0D, - 5027: 0x6D0F, - 5028: 0x6D10, - 5029: 0x6D11, - 5030: 0x6D13, - 5031: 0x6D14, - 5032: 0x6D15, - 5033: 0x6D16, - 5034: 0x6D18, - 5035: 0x6D1C, - 5036: 0x6D1D, - 5037: 0x6D1F, - 5038: 0x6D20, - 5039: 0x6D21, - 5040: 0x6D22, - 5041: 0x6D23, - 5042: 0x6D24, - 5043: 0x6D26, - 5044: 0x6D28, - 5045: 0x6D29, - 5046: 0x6D2C, - 5047: 0x6D2D, - 5048: 0x6D2F, - 5049: 0x6D30, - 5050: 0x6D34, - 5051: 0x6D36, - 5052: 0x6D37, - 5053: 0x6D38, - 5054: 0x6D3A, - 5055: 0x6D3F, - 5056: 0x6D40, - 5057: 0x6D42, - 5058: 0x6D44, - 5059: 0x6D49, - 5060: 0x6D4C, - 5061: 0x6D50, - 5062: 0x6D55, - 5063: 0x6D56, - 5064: 0x6D57, - 5065: 0x6D58, - 5066: 0x6D5B, - 5067: 0x6D5D, - 5068: 0x6D5F, - 5069: 0x6D61, - 5070: 0x6D62, - 5071: 0x6D64, - 5072: 0x6D65, - 5073: 0x6D67, - 5074: 0x6D68, - 5075: 0x6D6B, - 5076: 0x6D6C, - 5077: 0x6D6D, - 5078: 0x6D70, - 5079: 0x6D71, - 5080: 0x6D72, - 5081: 0x6D73, - 5082: 0x6D75, - 5083: 0x6D76, - 5084: 0x6D79, - 5085: 0x6D7A, - 5086: 0x6D7B, - 5087: 0x6D7D, - 5088: 0x6D7E, - 5089: 0x6D7F, - 5090: 0x6D80, - 5091: 0x6D81, - 5092: 0x6D83, - 5093: 0x6D84, - 5094: 0x6D86, - 5095: 0x6D87, - 5096: 0x6D8A, - 5097: 0x6D8B, - 5098: 0x6D8D, - 5099: 0x6D8F, - 5100: 0x6D90, - 5101: 0x6D92, - 5102: 0x6D96, - 5103: 0x6D97, - 5104: 0x6D98, - 5105: 0x6D99, - 5106: 0x6D9A, - 5107: 0x6D9C, - 5108: 0x6DA2, - 5109: 0x6DA5, - 5110: 0x6DAC, - 5111: 0x6DAD, - 5112: 0x6DB0, - 5113: 0x6DB1, - 5114: 0x6DB3, - 5115: 0x6DB4, - 5116: 0x6DB6, - 5117: 0x6DB7, - 5118: 0x6DB9, - 5119: 0x6DBA, - 5120: 0x6DBB, - 5121: 0x6DBC, - 5122: 0x6DBD, - 5123: 0x6DBE, - 5124: 0x6DC1, - 5125: 0x6DC2, - 5126: 0x6DC3, - 5127: 0x6DC8, - 5128: 0x6DC9, - 5129: 0x6DCA, - 5130: 0x6DCD, - 5131: 0x6DCE, - 5132: 0x6DCF, - 5133: 0x6DD0, - 5134: 0x6DD2, - 5135: 0x6DD3, - 5136: 0x6DD4, - 5137: 0x6DD5, - 5138: 0x6DD7, - 5139: 0x6DDA, - 5140: 0x6DDB, - 5141: 0x6DDC, - 5142: 0x6DDF, - 5143: 0x6DE2, - 5144: 0x6DE3, - 5145: 0x6DE5, - 5146: 0x6DE7, - 5147: 0x6DE8, - 5148: 0x6DE9, - 5149: 0x6DEA, - 5150: 0x6DED, - 5151: 0x6DEF, - 5152: 0x6DF0, - 5153: 0x6DF2, - 5154: 0x6DF4, - 5155: 0x6DF5, - 5156: 0x6DF6, - 5157: 0x6DF8, - 5158: 0x6DFA, - 5159: 0x6DFD, - 5160: 0x6DFE, - 5161: 0x6DFF, - 5162: 0x6E00, - 5163: 0x6E01, - 5164: 0x6E02, - 5165: 0x6E03, - 5166: 0x6E04, - 5167: 0x6E06, - 5168: 0x6E07, - 5169: 0x6E08, - 5170: 0x6E09, - 5171: 0x6E0B, - 5172: 0x6E0F, - 5173: 0x6E12, - 5174: 0x6E13, - 5175: 0x6E15, - 5176: 0x6E18, - 5177: 0x6E19, - 5178: 0x6E1B, - 5179: 0x6E1C, - 5180: 0x6E1E, - 5181: 0x6E1F, - 5182: 0x6E22, - 5183: 0x6E26, - 5184: 0x6E27, - 5185: 0x6E28, - 5186: 0x6E2A, - 5187: 0x6E2C, - 5188: 0x6E2E, - 5189: 0x6E30, - 5190: 0x6E31, - 5191: 0x6E33, - 5192: 0x6E35, - 5193: 0x6E36, - 5194: 0x6E37, - 5195: 0x6E39, - 5196: 0x6E3B, - 5197: 0x6E3C, - 5198: 0x6E3D, - 5199: 0x6E3E, - 5200: 0x6E3F, - 5201: 0x6E40, - 5202: 0x6E41, - 5203: 0x6E42, - 5204: 0x6E45, - 5205: 0x6E46, - 5206: 0x6E47, - 5207: 0x6E48, - 5208: 0x6E49, - 5209: 0x6E4A, - 5210: 0x6E4B, - 5211: 0x6E4C, - 5212: 0x6E4F, - 5213: 0x6E50, - 5214: 0x6E51, - 5215: 0x6E52, - 5216: 0x6E55, - 5217: 0x6E57, - 5218: 0x6E59, - 5219: 0x6E5A, - 5220: 0x6E5C, - 5221: 0x6E5D, - 5222: 0x6E5E, - 5223: 0x6E60, - 5224: 0x6E61, - 5225: 0x6E62, - 5226: 0x6E63, - 5227: 0x6E64, - 5228: 0x6E65, - 5229: 0x6E66, - 5230: 0x6E67, - 5231: 0x6E68, - 5232: 0x6E69, - 5233: 0x6E6A, - 5234: 0x6E6C, - 5235: 0x6E6D, - 5236: 0x6E6F, - 5237: 0x6E70, - 5238: 0x6E71, - 5239: 0x6E72, - 5240: 0x6E73, - 5241: 0x6E74, - 5242: 0x6E75, - 5243: 0x6E76, - 5244: 0x6E77, - 5245: 0x6E78, - 5246: 0x6E79, - 5247: 0x6E7A, - 5248: 0x6E7B, - 5249: 0x6E7C, - 5250: 0x6E7D, - 5251: 0x6E80, - 5252: 0x6E81, - 5253: 0x6E82, - 5254: 0x6E84, - 5255: 0x6E87, - 5256: 0x6E88, - 5257: 0x6E8A, - 5258: 0x6E8B, - 5259: 0x6E8C, - 5260: 0x6E8D, - 5261: 0x6E8E, - 5262: 0x6E91, - 5263: 0x6E92, - 5264: 0x6E93, - 5265: 0x6E94, - 5266: 0x6E95, - 5267: 0x6E96, - 5268: 0x6E97, - 5269: 0x6E99, - 5270: 0x6E9A, - 5271: 0x6E9B, - 5272: 0x6E9D, - 5273: 0x6E9E, - 5274: 0x6EA0, - 5275: 0x6EA1, - 5276: 0x6EA3, - 5277: 0x6EA4, - 5278: 0x6EA6, - 5279: 0x6EA8, - 5280: 0x6EA9, - 5281: 0x6EAB, - 5282: 0x6EAC, - 5283: 0x6EAD, - 5284: 0x6EAE, - 5285: 0x6EB0, - 5286: 0x6EB3, - 5287: 0x6EB5, - 5288: 0x6EB8, - 5289: 0x6EB9, - 5290: 0x6EBC, - 5291: 0x6EBE, - 5292: 0x6EBF, - 5293: 0x6EC0, - 5294: 0x6EC3, - 5295: 0x6EC4, - 5296: 0x6EC5, - 5297: 0x6EC6, - 5298: 0x6EC8, - 5299: 0x6EC9, - 5300: 0x6ECA, - 5301: 0x6ECC, - 5302: 0x6ECD, - 5303: 0x6ECE, - 5304: 0x6ED0, - 5305: 0x6ED2, - 5306: 0x6ED6, - 5307: 0x6ED8, - 5308: 0x6ED9, - 5309: 0x6EDB, - 5310: 0x6EDC, - 5311: 0x6EDD, - 5312: 0x6EE3, - 5313: 0x6EE7, - 5314: 0x6EEA, - 5315: 0x6EEB, - 5316: 0x6EEC, - 5317: 0x6EED, - 5318: 0x6EEE, - 5319: 0x6EEF, - 5320: 0x6EF0, - 5321: 0x6EF1, - 5322: 0x6EF2, - 5323: 0x6EF3, - 5324: 0x6EF5, - 5325: 0x6EF6, - 5326: 0x6EF7, - 5327: 0x6EF8, - 5328: 0x6EFA, - 5329: 0x6EFB, - 5330: 0x6EFC, - 5331: 0x6EFD, - 5332: 0x6EFE, - 5333: 0x6EFF, - 5334: 0x6F00, - 5335: 0x6F01, - 5336: 0x6F03, - 5337: 0x6F04, - 5338: 0x6F05, - 5339: 0x6F07, - 5340: 0x6F08, - 5341: 0x6F0A, - 5342: 0x6F0B, - 5343: 0x6F0C, - 5344: 0x6F0D, - 5345: 0x6F0E, - 5346: 0x6F10, - 5347: 0x6F11, - 5348: 0x6F12, - 5349: 0x6F16, - 5350: 0x6F17, - 5351: 0x6F18, - 5352: 0x6F19, - 5353: 0x6F1A, - 5354: 0x6F1B, - 5355: 0x6F1C, - 5356: 0x6F1D, - 5357: 0x6F1E, - 5358: 0x6F1F, - 5359: 0x6F21, - 5360: 0x6F22, - 5361: 0x6F23, - 5362: 0x6F25, - 5363: 0x6F26, - 5364: 0x6F27, - 5365: 0x6F28, - 5366: 0x6F2C, - 5367: 0x6F2E, - 5368: 0x6F30, - 5369: 0x6F32, - 5370: 0x6F34, - 5371: 0x6F35, - 5372: 0x6F37, - 5373: 0x6F38, - 5374: 0x6F39, - 5375: 0x6F3A, - 5376: 0x6F3B, - 5377: 0x6F3C, - 5378: 0x6F3D, - 5379: 0x6F3F, - 5380: 0x6F40, - 5381: 0x6F41, - 5382: 0x6F42, - 5383: 0x6F43, - 5384: 0x6F44, - 5385: 0x6F45, - 5386: 0x6F48, - 5387: 0x6F49, - 5388: 0x6F4A, - 5389: 0x6F4C, - 5390: 0x6F4E, - 5391: 0x6F4F, - 5392: 0x6F50, - 5393: 0x6F51, - 5394: 0x6F52, - 5395: 0x6F53, - 5396: 0x6F54, - 5397: 0x6F55, - 5398: 0x6F56, - 5399: 0x6F57, - 5400: 0x6F59, - 5401: 0x6F5A, - 5402: 0x6F5B, - 5403: 0x6F5D, - 5404: 0x6F5F, - 5405: 0x6F60, - 5406: 0x6F61, - 5407: 0x6F63, - 5408: 0x6F64, - 5409: 0x6F65, - 5410: 0x6F67, - 5411: 0x6F68, - 5412: 0x6F69, - 5413: 0x6F6A, - 5414: 0x6F6B, - 5415: 0x6F6C, - 5416: 0x6F6F, - 5417: 0x6F70, - 5418: 0x6F71, - 5419: 0x6F73, - 5420: 0x6F75, - 5421: 0x6F76, - 5422: 0x6F77, - 5423: 0x6F79, - 5424: 0x6F7B, - 5425: 0x6F7D, - 5426: 0x6F7E, - 5427: 0x6F7F, - 5428: 0x6F80, - 5429: 0x6F81, - 5430: 0x6F82, - 5431: 0x6F83, - 5432: 0x6F85, - 5433: 0x6F86, - 5434: 0x6F87, - 5435: 0x6F8A, - 5436: 0x6F8B, - 5437: 0x6F8F, - 5438: 0x6F90, - 5439: 0x6F91, - 5440: 0x6F92, - 5441: 0x6F93, - 5442: 0x6F94, - 5443: 0x6F95, - 5444: 0x6F96, - 5445: 0x6F97, - 5446: 0x6F98, - 5447: 0x6F99, - 5448: 0x6F9A, - 5449: 0x6F9B, - 5450: 0x6F9D, - 5451: 0x6F9E, - 5452: 0x6F9F, - 5453: 0x6FA0, - 5454: 0x6FA2, - 5455: 0x6FA3, - 5456: 0x6FA4, - 5457: 0x6FA5, - 5458: 0x6FA6, - 5459: 0x6FA8, - 5460: 0x6FA9, - 5461: 0x6FAA, - 5462: 0x6FAB, - 5463: 0x6FAC, - 5464: 0x6FAD, - 5465: 0x6FAE, - 5466: 0x6FAF, - 5467: 0x6FB0, - 5468: 0x6FB1, - 5469: 0x6FB2, - 5470: 0x6FB4, - 5471: 0x6FB5, - 5472: 0x6FB7, - 5473: 0x6FB8, - 5474: 0x6FBA, - 5475: 0x6FBB, - 5476: 0x6FBC, - 5477: 0x6FBD, - 5478: 0x6FBE, - 5479: 0x6FBF, - 5480: 0x6FC1, - 5481: 0x6FC3, - 5482: 0x6FC4, - 5483: 0x6FC5, - 5484: 0x6FC6, - 5485: 0x6FC7, - 5486: 0x6FC8, - 5487: 0x6FCA, - 5488: 0x6FCB, - 5489: 0x6FCC, - 5490: 0x6FCD, - 5491: 0x6FCE, - 5492: 0x6FCF, - 5493: 0x6FD0, - 5494: 0x6FD3, - 5495: 0x6FD4, - 5496: 0x6FD5, - 5497: 0x6FD6, - 5498: 0x6FD7, - 5499: 0x6FD8, - 5500: 0x6FD9, - 5501: 0x6FDA, - 5502: 0x6FDB, - 5503: 0x6FDC, - 5504: 0x6FDD, - 5505: 0x6FDF, - 5506: 0x6FE2, - 5507: 0x6FE3, - 5508: 0x6FE4, - 5509: 0x6FE5, - 5510: 0x6FE6, - 5511: 0x6FE7, - 5512: 0x6FE8, - 5513: 0x6FE9, - 5514: 0x6FEA, - 5515: 0x6FEB, - 5516: 0x6FEC, - 5517: 0x6FED, - 5518: 0x6FF0, - 5519: 0x6FF1, - 5520: 0x6FF2, - 5521: 0x6FF3, - 5522: 0x6FF4, - 5523: 0x6FF5, - 5524: 0x6FF6, - 5525: 0x6FF7, - 5526: 0x6FF8, - 5527: 0x6FF9, - 5528: 0x6FFA, - 5529: 0x6FFB, - 5530: 0x6FFC, - 5531: 0x6FFD, - 5532: 0x6FFE, - 5533: 0x6FFF, - 5534: 0x7000, - 5535: 0x7001, - 5536: 0x7002, - 5537: 0x7003, - 5538: 0x7004, - 5539: 0x7005, - 5540: 0x7006, - 5541: 0x7007, - 5542: 0x7008, - 5543: 0x7009, - 5544: 0x700A, - 5545: 0x700B, - 5546: 0x700C, - 5547: 0x700D, - 5548: 0x700E, - 5549: 0x700F, - 5550: 0x7010, - 5551: 0x7012, - 5552: 0x7013, - 5553: 0x7014, - 5554: 0x7015, - 5555: 0x7016, - 5556: 0x7017, - 5557: 0x7018, - 5558: 0x7019, - 5559: 0x701C, - 5560: 0x701D, - 5561: 0x701E, - 5562: 0x701F, - 5563: 0x7020, - 5564: 0x7021, - 5565: 0x7022, - 5566: 0x7024, - 5567: 0x7025, - 5568: 0x7026, - 5569: 0x7027, - 5570: 0x7028, - 5571: 0x7029, - 5572: 0x702A, - 5573: 0x702B, - 5574: 0x702C, - 5575: 0x702D, - 5576: 0x702E, - 5577: 0x702F, - 5578: 0x7030, - 5579: 0x7031, - 5580: 0x7032, - 5581: 0x7033, - 5582: 0x7034, - 5583: 0x7036, - 5584: 0x7037, - 5585: 0x7038, - 5586: 0x703A, - 5587: 0x703B, - 5588: 0x703C, - 5589: 0x703D, - 5590: 0x703E, - 5591: 0x703F, - 5592: 0x7040, - 5593: 0x7041, - 5594: 0x7042, - 5595: 0x7043, - 5596: 0x7044, - 5597: 0x7045, - 5598: 0x7046, - 5599: 0x7047, - 5600: 0x7048, - 5601: 0x7049, - 5602: 0x704A, - 5603: 0x704B, - 5604: 0x704D, - 5605: 0x704E, - 5606: 0x7050, - 5607: 0x7051, - 5608: 0x7052, - 5609: 0x7053, - 5610: 0x7054, - 5611: 0x7055, - 5612: 0x7056, - 5613: 0x7057, - 5614: 0x7058, - 5615: 0x7059, - 5616: 0x705A, - 5617: 0x705B, - 5618: 0x705C, - 5619: 0x705D, - 5620: 0x705F, - 5621: 0x7060, - 5622: 0x7061, - 5623: 0x7062, - 5624: 0x7063, - 5625: 0x7064, - 5626: 0x7065, - 5627: 0x7066, - 5628: 0x7067, - 5629: 0x7068, - 5630: 0x7069, - 5631: 0x706A, - 5632: 0x706E, - 5633: 0x7071, - 5634: 0x7072, - 5635: 0x7073, - 5636: 0x7074, - 5637: 0x7077, - 5638: 0x7079, - 5639: 0x707A, - 5640: 0x707B, - 5641: 0x707D, - 5642: 0x7081, - 5643: 0x7082, - 5644: 0x7083, - 5645: 0x7084, - 5646: 0x7086, - 5647: 0x7087, - 5648: 0x7088, - 5649: 0x708B, - 5650: 0x708C, - 5651: 0x708D, - 5652: 0x708F, - 5653: 0x7090, - 5654: 0x7091, - 5655: 0x7093, - 5656: 0x7097, - 5657: 0x7098, - 5658: 0x709A, - 5659: 0x709B, - 5660: 0x709E, - 5661: 0x709F, - 5662: 0x70A0, - 5663: 0x70A1, - 5664: 0x70A2, - 5665: 0x70A3, - 5666: 0x70A4, - 5667: 0x70A5, - 5668: 0x70A6, - 5669: 0x70A7, - 5670: 0x70A8, - 5671: 0x70A9, - 5672: 0x70AA, - 5673: 0x70B0, - 5674: 0x70B2, - 5675: 0x70B4, - 5676: 0x70B5, - 5677: 0x70B6, - 5678: 0x70BA, - 5679: 0x70BE, - 5680: 0x70BF, - 5681: 0x70C4, - 5682: 0x70C5, - 5683: 0x70C6, - 5684: 0x70C7, - 5685: 0x70C9, - 5686: 0x70CB, - 5687: 0x70CC, - 5688: 0x70CD, - 5689: 0x70CE, - 5690: 0x70CF, - 5691: 0x70D0, - 5692: 0x70D1, - 5693: 0x70D2, - 5694: 0x70D3, - 5695: 0x70D4, - 5696: 0x70D5, - 5697: 0x70D6, - 5698: 0x70D7, - 5699: 0x70DA, - 5700: 0x70DC, - 5701: 0x70DD, - 5702: 0x70DE, - 5703: 0x70E0, - 5704: 0x70E1, - 5705: 0x70E2, - 5706: 0x70E3, - 5707: 0x70E5, - 5708: 0x70EA, - 5709: 0x70EE, - 5710: 0x70F0, - 5711: 0x70F1, - 5712: 0x70F2, - 5713: 0x70F3, - 5714: 0x70F4, - 5715: 0x70F5, - 5716: 0x70F6, - 5717: 0x70F8, - 5718: 0x70FA, - 5719: 0x70FB, - 5720: 0x70FC, - 5721: 0x70FE, - 5722: 0x70FF, - 5723: 0x7100, - 5724: 0x7101, - 5725: 0x7102, - 5726: 0x7103, - 5727: 0x7104, - 5728: 0x7105, - 5729: 0x7106, - 5730: 0x7107, - 5731: 0x7108, - 5732: 0x710B, - 5733: 0x710C, - 5734: 0x710D, - 5735: 0x710E, - 5736: 0x710F, - 5737: 0x7111, - 5738: 0x7112, - 5739: 0x7114, - 5740: 0x7117, - 5741: 0x711B, - 5742: 0x711C, - 5743: 0x711D, - 5744: 0x711E, - 5745: 0x711F, - 5746: 0x7120, - 5747: 0x7121, - 5748: 0x7122, - 5749: 0x7123, - 5750: 0x7124, - 5751: 0x7125, - 5752: 0x7127, - 5753: 0x7128, - 5754: 0x7129, - 5755: 0x712A, - 5756: 0x712B, - 5757: 0x712C, - 5758: 0x712D, - 5759: 0x712E, - 5760: 0x7132, - 5761: 0x7133, - 5762: 0x7134, - 5763: 0x7135, - 5764: 0x7137, - 5765: 0x7138, - 5766: 0x7139, - 5767: 0x713A, - 5768: 0x713B, - 5769: 0x713C, - 5770: 0x713D, - 5771: 0x713E, - 5772: 0x713F, - 5773: 0x7140, - 5774: 0x7141, - 5775: 0x7142, - 5776: 0x7143, - 5777: 0x7144, - 5778: 0x7146, - 5779: 0x7147, - 5780: 0x7148, - 5781: 0x7149, - 5782: 0x714B, - 5783: 0x714D, - 5784: 0x714F, - 5785: 0x7150, - 5786: 0x7151, - 5787: 0x7152, - 5788: 0x7153, - 5789: 0x7154, - 5790: 0x7155, - 5791: 0x7156, - 5792: 0x7157, - 5793: 0x7158, - 5794: 0x7159, - 5795: 0x715A, - 5796: 0x715B, - 5797: 0x715D, - 5798: 0x715F, - 5799: 0x7160, - 5800: 0x7161, - 5801: 0x7162, - 5802: 0x7163, - 5803: 0x7165, - 5804: 0x7169, - 5805: 0x716A, - 5806: 0x716B, - 5807: 0x716C, - 5808: 0x716D, - 5809: 0x716F, - 5810: 0x7170, - 5811: 0x7171, - 5812: 0x7174, - 5813: 0x7175, - 5814: 0x7176, - 5815: 0x7177, - 5816: 0x7179, - 5817: 0x717B, - 5818: 0x717C, - 5819: 0x717E, - 5820: 0x717F, - 5821: 0x7180, - 5822: 0x7181, - 5823: 0x7182, - 5824: 0x7183, - 5825: 0x7185, - 5826: 0x7186, - 5827: 0x7187, - 5828: 0x7188, - 5829: 0x7189, - 5830: 0x718B, - 5831: 0x718C, - 5832: 0x718D, - 5833: 0x718E, - 5834: 0x7190, - 5835: 0x7191, - 5836: 0x7192, - 5837: 0x7193, - 5838: 0x7195, - 5839: 0x7196, - 5840: 0x7197, - 5841: 0x719A, - 5842: 0x719B, - 5843: 0x719C, - 5844: 0x719D, - 5845: 0x719E, - 5846: 0x71A1, - 5847: 0x71A2, - 5848: 0x71A3, - 5849: 0x71A4, - 5850: 0x71A5, - 5851: 0x71A6, - 5852: 0x71A7, - 5853: 0x71A9, - 5854: 0x71AA, - 5855: 0x71AB, - 5856: 0x71AD, - 5857: 0x71AE, - 5858: 0x71AF, - 5859: 0x71B0, - 5860: 0x71B1, - 5861: 0x71B2, - 5862: 0x71B4, - 5863: 0x71B6, - 5864: 0x71B7, - 5865: 0x71B8, - 5866: 0x71BA, - 5867: 0x71BB, - 5868: 0x71BC, - 5869: 0x71BD, - 5870: 0x71BE, - 5871: 0x71BF, - 5872: 0x71C0, - 5873: 0x71C1, - 5874: 0x71C2, - 5875: 0x71C4, - 5876: 0x71C5, - 5877: 0x71C6, - 5878: 0x71C7, - 5879: 0x71C8, - 5880: 0x71C9, - 5881: 0x71CA, - 5882: 0x71CB, - 5883: 0x71CC, - 5884: 0x71CD, - 5885: 0x71CF, - 5886: 0x71D0, - 5887: 0x71D1, - 5888: 0x71D2, - 5889: 0x71D3, - 5890: 0x71D6, - 5891: 0x71D7, - 5892: 0x71D8, - 5893: 0x71D9, - 5894: 0x71DA, - 5895: 0x71DB, - 5896: 0x71DC, - 5897: 0x71DD, - 5898: 0x71DE, - 5899: 0x71DF, - 5900: 0x71E1, - 5901: 0x71E2, - 5902: 0x71E3, - 5903: 0x71E4, - 5904: 0x71E6, - 5905: 0x71E8, - 5906: 0x71E9, - 5907: 0x71EA, - 5908: 0x71EB, - 5909: 0x71EC, - 5910: 0x71ED, - 5911: 0x71EF, - 5912: 0x71F0, - 5913: 0x71F1, - 5914: 0x71F2, - 5915: 0x71F3, - 5916: 0x71F4, - 5917: 0x71F5, - 5918: 0x71F6, - 5919: 0x71F7, - 5920: 0x71F8, - 5921: 0x71FA, - 5922: 0x71FB, - 5923: 0x71FC, - 5924: 0x71FD, - 5925: 0x71FE, - 5926: 0x71FF, - 5927: 0x7200, - 5928: 0x7201, - 5929: 0x7202, - 5930: 0x7203, - 5931: 0x7204, - 5932: 0x7205, - 5933: 0x7207, - 5934: 0x7208, - 5935: 0x7209, - 5936: 0x720A, - 5937: 0x720B, - 5938: 0x720C, - 5939: 0x720D, - 5940: 0x720E, - 5941: 0x720F, - 5942: 0x7210, - 5943: 0x7211, - 5944: 0x7212, - 5945: 0x7213, - 5946: 0x7214, - 5947: 0x7215, - 5948: 0x7216, - 5949: 0x7217, - 5950: 0x7218, - 5951: 0x7219, - 5952: 0x721A, - 5953: 0x721B, - 5954: 0x721C, - 5955: 0x721E, - 5956: 0x721F, - 5957: 0x7220, - 5958: 0x7221, - 5959: 0x7222, - 5960: 0x7223, - 5961: 0x7224, - 5962: 0x7225, - 5963: 0x7226, - 5964: 0x7227, - 5965: 0x7229, - 5966: 0x722B, - 5967: 0x722D, - 5968: 0x722E, - 5969: 0x722F, - 5970: 0x7232, - 5971: 0x7233, - 5972: 0x7234, - 5973: 0x723A, - 5974: 0x723C, - 5975: 0x723E, - 5976: 0x7240, - 5977: 0x7241, - 5978: 0x7242, - 5979: 0x7243, - 5980: 0x7244, - 5981: 0x7245, - 5982: 0x7246, - 5983: 0x7249, - 5984: 0x724A, - 5985: 0x724B, - 5986: 0x724E, - 5987: 0x724F, - 5988: 0x7250, - 5989: 0x7251, - 5990: 0x7253, - 5991: 0x7254, - 5992: 0x7255, - 5993: 0x7257, - 5994: 0x7258, - 5995: 0x725A, - 5996: 0x725C, - 5997: 0x725E, - 5998: 0x7260, - 5999: 0x7263, - 6000: 0x7264, - 6001: 0x7265, - 6002: 0x7268, - 6003: 0x726A, - 6004: 0x726B, - 6005: 0x726C, - 6006: 0x726D, - 6007: 0x7270, - 6008: 0x7271, - 6009: 0x7273, - 6010: 0x7274, - 6011: 0x7276, - 6012: 0x7277, - 6013: 0x7278, - 6014: 0x727B, - 6015: 0x727C, - 6016: 0x727D, - 6017: 0x7282, - 6018: 0x7283, - 6019: 0x7285, - 6020: 0x7286, - 6021: 0x7287, - 6022: 0x7288, - 6023: 0x7289, - 6024: 0x728C, - 6025: 0x728E, - 6026: 0x7290, - 6027: 0x7291, - 6028: 0x7293, - 6029: 0x7294, - 6030: 0x7295, - 6031: 0x7296, - 6032: 0x7297, - 6033: 0x7298, - 6034: 0x7299, - 6035: 0x729A, - 6036: 0x729B, - 6037: 0x729C, - 6038: 0x729D, - 6039: 0x729E, - 6040: 0x72A0, - 6041: 0x72A1, - 6042: 0x72A2, - 6043: 0x72A3, - 6044: 0x72A4, - 6045: 0x72A5, - 6046: 0x72A6, - 6047: 0x72A7, - 6048: 0x72A8, - 6049: 0x72A9, - 6050: 0x72AA, - 6051: 0x72AB, - 6052: 0x72AE, - 6053: 0x72B1, - 6054: 0x72B2, - 6055: 0x72B3, - 6056: 0x72B5, - 6057: 0x72BA, - 6058: 0x72BB, - 6059: 0x72BC, - 6060: 0x72BD, - 6061: 0x72BE, - 6062: 0x72BF, - 6063: 0x72C0, - 6064: 0x72C5, - 6065: 0x72C6, - 6066: 0x72C7, - 6067: 0x72C9, - 6068: 0x72CA, - 6069: 0x72CB, - 6070: 0x72CC, - 6071: 0x72CF, - 6072: 0x72D1, - 6073: 0x72D3, - 6074: 0x72D4, - 6075: 0x72D5, - 6076: 0x72D6, - 6077: 0x72D8, - 6078: 0x72DA, - 6079: 0x72DB, - 6176: 0x3000, - 6177: 0x3001, - 6178: 0x3002, - 6179: 0x00B7, - 6180: 0x02C9, - 6181: 0x02C7, - 6182: 0x00A8, - 6183: 0x3003, - 6184: 0x3005, - 6185: 0x2014, - 6186: 0xFF5E, - 6187: 0x2016, - 6188: 0x2026, - 6189: 0x2018, - 6190: 0x2019, - 6191: 0x201C, - 6192: 0x201D, - 6193: 0x3014, - 6194: 0x3015, - 6195: 0x3008, - 6196: 0x3009, - 6197: 0x300A, - 6198: 0x300B, - 6199: 0x300C, - 6200: 0x300D, - 6201: 0x300E, - 6202: 0x300F, - 6203: 0x3016, - 6204: 0x3017, - 6205: 0x3010, - 6206: 0x3011, - 6207: 0x00B1, - 6208: 0x00D7, - 6209: 0x00F7, - 6210: 0x2236, - 6211: 0x2227, - 6212: 0x2228, - 6213: 0x2211, - 6214: 0x220F, - 6215: 0x222A, - 6216: 0x2229, - 6217: 0x2208, - 6218: 0x2237, - 6219: 0x221A, - 6220: 0x22A5, - 6221: 0x2225, - 6222: 0x2220, - 6223: 0x2312, - 6224: 0x2299, - 6225: 0x222B, - 6226: 0x222E, - 6227: 0x2261, - 6228: 0x224C, - 6229: 0x2248, - 6230: 0x223D, - 6231: 0x221D, - 6232: 0x2260, - 6233: 0x226E, - 6234: 0x226F, - 6235: 0x2264, - 6236: 0x2265, - 6237: 0x221E, - 6238: 0x2235, - 6239: 0x2234, - 6240: 0x2642, - 6241: 0x2640, - 6242: 0x00B0, - 6243: 0x2032, - 6244: 0x2033, - 6245: 0x2103, - 6246: 0xFF04, - 6247: 0x00A4, - 6248: 0xFFE0, - 6249: 0xFFE1, - 6250: 0x2030, - 6251: 0x00A7, - 6252: 0x2116, - 6253: 0x2606, - 6254: 0x2605, - 6255: 0x25CB, - 6256: 0x25CF, - 6257: 0x25CE, - 6258: 0x25C7, - 6259: 0x25C6, - 6260: 0x25A1, - 6261: 0x25A0, - 6262: 0x25B3, - 6263: 0x25B2, - 6264: 0x203B, - 6265: 0x2192, - 6266: 0x2190, - 6267: 0x2191, - 6268: 0x2193, - 6269: 0x3013, - 6366: 0x2170, - 6367: 0x2171, - 6368: 0x2172, - 6369: 0x2173, - 6370: 0x2174, - 6371: 0x2175, - 6372: 0x2176, - 6373: 0x2177, - 6374: 0x2178, - 6375: 0x2179, - 6382: 0x2488, - 6383: 0x2489, - 6384: 0x248A, - 6385: 0x248B, - 6386: 0x248C, - 6387: 0x248D, - 6388: 0x248E, - 6389: 0x248F, - 6390: 0x2490, - 6391: 0x2491, - 6392: 0x2492, - 6393: 0x2493, - 6394: 0x2494, - 6395: 0x2495, - 6396: 0x2496, - 6397: 0x2497, - 6398: 0x2498, - 6399: 0x2499, - 6400: 0x249A, - 6401: 0x249B, - 6402: 0x2474, - 6403: 0x2475, - 6404: 0x2476, - 6405: 0x2477, - 6406: 0x2478, - 6407: 0x2479, - 6408: 0x247A, - 6409: 0x247B, - 6410: 0x247C, - 6411: 0x247D, - 6412: 0x247E, - 6413: 0x247F, - 6414: 0x2480, - 6415: 0x2481, - 6416: 0x2482, - 6417: 0x2483, - 6418: 0x2484, - 6419: 0x2485, - 6420: 0x2486, - 6421: 0x2487, - 6422: 0x2460, - 6423: 0x2461, - 6424: 0x2462, - 6425: 0x2463, - 6426: 0x2464, - 6427: 0x2465, - 6428: 0x2466, - 6429: 0x2467, - 6430: 0x2468, - 6431: 0x2469, - 6432: 0x20AC, - 6434: 0x3220, - 6435: 0x3221, - 6436: 0x3222, - 6437: 0x3223, - 6438: 0x3224, - 6439: 0x3225, - 6440: 0x3226, - 6441: 0x3227, - 6442: 0x3228, - 6443: 0x3229, - 6446: 0x2160, - 6447: 0x2161, - 6448: 0x2162, - 6449: 0x2163, - 6450: 0x2164, - 6451: 0x2165, - 6452: 0x2166, - 6453: 0x2167, - 6454: 0x2168, - 6455: 0x2169, - 6456: 0x216A, - 6457: 0x216B, - 6555: 0x3000, - 6556: 0xFF01, - 6557: 0xFF02, - 6558: 0xFF03, - 6559: 0xFFE5, - 6560: 0xFF05, - 6561: 0xFF06, - 6562: 0xFF07, - 6563: 0xFF08, - 6564: 0xFF09, - 6565: 0xFF0A, - 6566: 0xFF0B, - 6567: 0xFF0C, - 6568: 0xFF0D, - 6569: 0xFF0E, - 6570: 0xFF0F, - 6571: 0xFF10, - 6572: 0xFF11, - 6573: 0xFF12, - 6574: 0xFF13, - 6575: 0xFF14, - 6576: 0xFF15, - 6577: 0xFF16, - 6578: 0xFF17, - 6579: 0xFF18, - 6580: 0xFF19, - 6581: 0xFF1A, - 6582: 0xFF1B, - 6583: 0xFF1C, - 6584: 0xFF1D, - 6585: 0xFF1E, - 6586: 0xFF1F, - 6587: 0xFF20, - 6588: 0xFF21, - 6589: 0xFF22, - 6590: 0xFF23, - 6591: 0xFF24, - 6592: 0xFF25, - 6593: 0xFF26, - 6594: 0xFF27, - 6595: 0xFF28, - 6596: 0xFF29, - 6597: 0xFF2A, - 6598: 0xFF2B, - 6599: 0xFF2C, - 6600: 0xFF2D, - 6601: 0xFF2E, - 6602: 0xFF2F, - 6603: 0xFF30, - 6604: 0xFF31, - 6605: 0xFF32, - 6606: 0xFF33, - 6607: 0xFF34, - 6608: 0xFF35, - 6609: 0xFF36, - 6610: 0xFF37, - 6611: 0xFF38, - 6612: 0xFF39, - 6613: 0xFF3A, - 6614: 0xFF3B, - 6615: 0xFF3C, - 6616: 0xFF3D, - 6617: 0xFF3E, - 6618: 0xFF3F, - 6619: 0xFF40, - 6620: 0xFF41, - 6621: 0xFF42, - 6622: 0xFF43, - 6623: 0xFF44, - 6624: 0xFF45, - 6625: 0xFF46, - 6626: 0xFF47, - 6627: 0xFF48, - 6628: 0xFF49, - 6629: 0xFF4A, - 6630: 0xFF4B, - 6631: 0xFF4C, - 6632: 0xFF4D, - 6633: 0xFF4E, - 6634: 0xFF4F, - 6635: 0xFF50, - 6636: 0xFF51, - 6637: 0xFF52, - 6638: 0xFF53, - 6639: 0xFF54, - 6640: 0xFF55, - 6641: 0xFF56, - 6642: 0xFF57, - 6643: 0xFF58, - 6644: 0xFF59, - 6645: 0xFF5A, - 6646: 0xFF5B, - 6647: 0xFF5C, - 6648: 0xFF5D, - 6649: 0xFFE3, - 6746: 0x3041, - 6747: 0x3042, - 6748: 0x3043, - 6749: 0x3044, - 6750: 0x3045, - 6751: 0x3046, - 6752: 0x3047, - 6753: 0x3048, - 6754: 0x3049, - 6755: 0x304A, - 6756: 0x304B, - 6757: 0x304C, - 6758: 0x304D, - 6759: 0x304E, - 6760: 0x304F, - 6761: 0x3050, - 6762: 0x3051, - 6763: 0x3052, - 6764: 0x3053, - 6765: 0x3054, - 6766: 0x3055, - 6767: 0x3056, - 6768: 0x3057, - 6769: 0x3058, - 6770: 0x3059, - 6771: 0x305A, - 6772: 0x305B, - 6773: 0x305C, - 6774: 0x305D, - 6775: 0x305E, - 6776: 0x305F, - 6777: 0x3060, - 6778: 0x3061, - 6779: 0x3062, - 6780: 0x3063, - 6781: 0x3064, - 6782: 0x3065, - 6783: 0x3066, - 6784: 0x3067, - 6785: 0x3068, - 6786: 0x3069, - 6787: 0x306A, - 6788: 0x306B, - 6789: 0x306C, - 6790: 0x306D, - 6791: 0x306E, - 6792: 0x306F, - 6793: 0x3070, - 6794: 0x3071, - 6795: 0x3072, - 6796: 0x3073, - 6797: 0x3074, - 6798: 0x3075, - 6799: 0x3076, - 6800: 0x3077, - 6801: 0x3078, - 6802: 0x3079, - 6803: 0x307A, - 6804: 0x307B, - 6805: 0x307C, - 6806: 0x307D, - 6807: 0x307E, - 6808: 0x307F, - 6809: 0x3080, - 6810: 0x3081, - 6811: 0x3082, - 6812: 0x3083, - 6813: 0x3084, - 6814: 0x3085, - 6815: 0x3086, - 6816: 0x3087, - 6817: 0x3088, - 6818: 0x3089, - 6819: 0x308A, - 6820: 0x308B, - 6821: 0x308C, - 6822: 0x308D, - 6823: 0x308E, - 6824: 0x308F, - 6825: 0x3090, - 6826: 0x3091, - 6827: 0x3092, - 6828: 0x3093, - 6936: 0x30A1, - 6937: 0x30A2, - 6938: 0x30A3, - 6939: 0x30A4, - 6940: 0x30A5, - 6941: 0x30A6, - 6942: 0x30A7, - 6943: 0x30A8, - 6944: 0x30A9, - 6945: 0x30AA, - 6946: 0x30AB, - 6947: 0x30AC, - 6948: 0x30AD, - 6949: 0x30AE, - 6950: 0x30AF, - 6951: 0x30B0, - 6952: 0x30B1, - 6953: 0x30B2, - 6954: 0x30B3, - 6955: 0x30B4, - 6956: 0x30B5, - 6957: 0x30B6, - 6958: 0x30B7, - 6959: 0x30B8, - 6960: 0x30B9, - 6961: 0x30BA, - 6962: 0x30BB, - 6963: 0x30BC, - 6964: 0x30BD, - 6965: 0x30BE, - 6966: 0x30BF, - 6967: 0x30C0, - 6968: 0x30C1, - 6969: 0x30C2, - 6970: 0x30C3, - 6971: 0x30C4, - 6972: 0x30C5, - 6973: 0x30C6, - 6974: 0x30C7, - 6975: 0x30C8, - 6976: 0x30C9, - 6977: 0x30CA, - 6978: 0x30CB, - 6979: 0x30CC, - 6980: 0x30CD, - 6981: 0x30CE, - 6982: 0x30CF, - 6983: 0x30D0, - 6984: 0x30D1, - 6985: 0x30D2, - 6986: 0x30D3, - 6987: 0x30D4, - 6988: 0x30D5, - 6989: 0x30D6, - 6990: 0x30D7, - 6991: 0x30D8, - 6992: 0x30D9, - 6993: 0x30DA, - 6994: 0x30DB, - 6995: 0x30DC, - 6996: 0x30DD, - 6997: 0x30DE, - 6998: 0x30DF, - 6999: 0x30E0, - 7000: 0x30E1, - 7001: 0x30E2, - 7002: 0x30E3, - 7003: 0x30E4, - 7004: 0x30E5, - 7005: 0x30E6, - 7006: 0x30E7, - 7007: 0x30E8, - 7008: 0x30E9, - 7009: 0x30EA, - 7010: 0x30EB, - 7011: 0x30EC, - 7012: 0x30ED, - 7013: 0x30EE, - 7014: 0x30EF, - 7015: 0x30F0, - 7016: 0x30F1, - 7017: 0x30F2, - 7018: 0x30F3, - 7019: 0x30F4, - 7020: 0x30F5, - 7021: 0x30F6, - 7126: 0x0391, - 7127: 0x0392, - 7128: 0x0393, - 7129: 0x0394, - 7130: 0x0395, - 7131: 0x0396, - 7132: 0x0397, - 7133: 0x0398, - 7134: 0x0399, - 7135: 0x039A, - 7136: 0x039B, - 7137: 0x039C, - 7138: 0x039D, - 7139: 0x039E, - 7140: 0x039F, - 7141: 0x03A0, - 7142: 0x03A1, - 7143: 0x03A3, - 7144: 0x03A4, - 7145: 0x03A5, - 7146: 0x03A6, - 7147: 0x03A7, - 7148: 0x03A8, - 7149: 0x03A9, - 7158: 0x03B1, - 7159: 0x03B2, - 7160: 0x03B3, - 7161: 0x03B4, - 7162: 0x03B5, - 7163: 0x03B6, - 7164: 0x03B7, - 7165: 0x03B8, - 7166: 0x03B9, - 7167: 0x03BA, - 7168: 0x03BB, - 7169: 0x03BC, - 7170: 0x03BD, - 7171: 0x03BE, - 7172: 0x03BF, - 7173: 0x03C0, - 7174: 0x03C1, - 7175: 0x03C3, - 7176: 0x03C4, - 7177: 0x03C5, - 7178: 0x03C6, - 7179: 0x03C7, - 7180: 0x03C8, - 7181: 0x03C9, - 7189: 0xFE35, - 7190: 0xFE36, - 7191: 0xFE39, - 7192: 0xFE3A, - 7193: 0xFE3F, - 7194: 0xFE40, - 7195: 0xFE3D, - 7196: 0xFE3E, - 7197: 0xFE41, - 7198: 0xFE42, - 7199: 0xFE43, - 7200: 0xFE44, - 7203: 0xFE3B, - 7204: 0xFE3C, - 7205: 0xFE37, - 7206: 0xFE38, - 7207: 0xFE31, - 7209: 0xFE33, - 7210: 0xFE34, - 7316: 0x0410, - 7317: 0x0411, - 7318: 0x0412, - 7319: 0x0413, - 7320: 0x0414, - 7321: 0x0415, - 7322: 0x0401, - 7323: 0x0416, - 7324: 0x0417, - 7325: 0x0418, - 7326: 0x0419, - 7327: 0x041A, - 7328: 0x041B, - 7329: 0x041C, - 7330: 0x041D, - 7331: 0x041E, - 7332: 0x041F, - 7333: 0x0420, - 7334: 0x0421, - 7335: 0x0422, - 7336: 0x0423, - 7337: 0x0424, - 7338: 0x0425, - 7339: 0x0426, - 7340: 0x0427, - 7341: 0x0428, - 7342: 0x0429, - 7343: 0x042A, - 7344: 0x042B, - 7345: 0x042C, - 7346: 0x042D, - 7347: 0x042E, - 7348: 0x042F, - 7364: 0x0430, - 7365: 0x0431, - 7366: 0x0432, - 7367: 0x0433, - 7368: 0x0434, - 7369: 0x0435, - 7370: 0x0451, - 7371: 0x0436, - 7372: 0x0437, - 7373: 0x0438, - 7374: 0x0439, - 7375: 0x043A, - 7376: 0x043B, - 7377: 0x043C, - 7378: 0x043D, - 7379: 0x043E, - 7380: 0x043F, - 7381: 0x0440, - 7382: 0x0441, - 7383: 0x0442, - 7384: 0x0443, - 7385: 0x0444, - 7386: 0x0445, - 7387: 0x0446, - 7388: 0x0447, - 7389: 0x0448, - 7390: 0x0449, - 7391: 0x044A, - 7392: 0x044B, - 7393: 0x044C, - 7394: 0x044D, - 7395: 0x044E, - 7396: 0x044F, - 7410: 0x02CA, - 7411: 0x02CB, - 7412: 0x02D9, - 7413: 0x2013, - 7414: 0x2015, - 7415: 0x2025, - 7416: 0x2035, - 7417: 0x2105, - 7418: 0x2109, - 7419: 0x2196, - 7420: 0x2197, - 7421: 0x2198, - 7422: 0x2199, - 7423: 0x2215, - 7424: 0x221F, - 7425: 0x2223, - 7426: 0x2252, - 7427: 0x2266, - 7428: 0x2267, - 7429: 0x22BF, - 7430: 0x2550, - 7431: 0x2551, - 7432: 0x2552, - 7433: 0x2553, - 7434: 0x2554, - 7435: 0x2555, - 7436: 0x2556, - 7437: 0x2557, - 7438: 0x2558, - 7439: 0x2559, - 7440: 0x255A, - 7441: 0x255B, - 7442: 0x255C, - 7443: 0x255D, - 7444: 0x255E, - 7445: 0x255F, - 7446: 0x2560, - 7447: 0x2561, - 7448: 0x2562, - 7449: 0x2563, - 7450: 0x2564, - 7451: 0x2565, - 7452: 0x2566, - 7453: 0x2567, - 7454: 0x2568, - 7455: 0x2569, - 7456: 0x256A, - 7457: 0x256B, - 7458: 0x256C, - 7459: 0x256D, - 7460: 0x256E, - 7461: 0x256F, - 7462: 0x2570, - 7463: 0x2571, - 7464: 0x2572, - 7465: 0x2573, - 7466: 0x2581, - 7467: 0x2582, - 7468: 0x2583, - 7469: 0x2584, - 7470: 0x2585, - 7471: 0x2586, - 7472: 0x2587, - 7473: 0x2588, - 7474: 0x2589, - 7475: 0x258A, - 7476: 0x258B, - 7477: 0x258C, - 7478: 0x258D, - 7479: 0x258E, - 7480: 0x258F, - 7481: 0x2593, - 7482: 0x2594, - 7483: 0x2595, - 7484: 0x25BC, - 7485: 0x25BD, - 7486: 0x25E2, - 7487: 0x25E3, - 7488: 0x25E4, - 7489: 0x25E5, - 7490: 0x2609, - 7491: 0x2295, - 7492: 0x3012, - 7493: 0x301D, - 7494: 0x301E, - 7506: 0x0101, - 7507: 0x00E1, - 7508: 0x01CE, - 7509: 0x00E0, - 7510: 0x0113, - 7511: 0x00E9, - 7512: 0x011B, - 7513: 0x00E8, - 7514: 0x012B, - 7515: 0x00ED, - 7516: 0x01D0, - 7517: 0x00EC, - 7518: 0x014D, - 7519: 0x00F3, - 7520: 0x01D2, - 7521: 0x00F2, - 7522: 0x016B, - 7523: 0x00FA, - 7524: 0x01D4, - 7525: 0x00F9, - 7526: 0x01D6, - 7527: 0x01D8, - 7528: 0x01DA, - 7529: 0x01DC, - 7530: 0x00FC, - 7531: 0x00EA, - 7532: 0x0251, - 7534: 0x0144, - 7535: 0x0148, - 7536: 0x01F9, - 7537: 0x0261, - 7542: 0x3105, - 7543: 0x3106, - 7544: 0x3107, - 7545: 0x3108, - 7546: 0x3109, - 7547: 0x310A, - 7548: 0x310B, - 7549: 0x310C, - 7550: 0x310D, - 7551: 0x310E, - 7552: 0x310F, - 7553: 0x3110, - 7554: 0x3111, - 7555: 0x3112, - 7556: 0x3113, - 7557: 0x3114, - 7558: 0x3115, - 7559: 0x3116, - 7560: 0x3117, - 7561: 0x3118, - 7562: 0x3119, - 7563: 0x311A, - 7564: 0x311B, - 7565: 0x311C, - 7566: 0x311D, - 7567: 0x311E, - 7568: 0x311F, - 7569: 0x3120, - 7570: 0x3121, - 7571: 0x3122, - 7572: 0x3123, - 7573: 0x3124, - 7574: 0x3125, - 7575: 0x3126, - 7576: 0x3127, - 7577: 0x3128, - 7578: 0x3129, - 7600: 0x3021, - 7601: 0x3022, - 7602: 0x3023, - 7603: 0x3024, - 7604: 0x3025, - 7605: 0x3026, - 7606: 0x3027, - 7607: 0x3028, - 7608: 0x3029, - 7609: 0x32A3, - 7610: 0x338E, - 7611: 0x338F, - 7612: 0x339C, - 7613: 0x339D, - 7614: 0x339E, - 7615: 0x33A1, - 7616: 0x33C4, - 7617: 0x33CE, - 7618: 0x33D1, - 7619: 0x33D2, - 7620: 0x33D5, - 7621: 0xFE30, - 7622: 0xFFE2, - 7623: 0xFFE4, - 7625: 0x2121, - 7626: 0x3231, - 7628: 0x2010, - 7632: 0x30FC, - 7633: 0x309B, - 7634: 0x309C, - 7635: 0x30FD, - 7636: 0x30FE, - 7637: 0x3006, - 7638: 0x309D, - 7639: 0x309E, - 7640: 0xFE49, - 7641: 0xFE4A, - 7642: 0xFE4B, - 7643: 0xFE4C, - 7644: 0xFE4D, - 7645: 0xFE4E, - 7646: 0xFE4F, - 7647: 0xFE50, - 7648: 0xFE51, - 7649: 0xFE52, - 7650: 0xFE54, - 7651: 0xFE55, - 7652: 0xFE56, - 7653: 0xFE57, - 7654: 0xFE59, - 7655: 0xFE5A, - 7656: 0xFE5B, - 7657: 0xFE5C, - 7658: 0xFE5D, - 7659: 0xFE5E, - 7660: 0xFE5F, - 7661: 0xFE60, - 7662: 0xFE61, - 7663: 0xFE62, - 7664: 0xFE63, - 7665: 0xFE64, - 7666: 0xFE65, - 7667: 0xFE66, - 7668: 0xFE68, - 7669: 0xFE69, - 7670: 0xFE6A, - 7671: 0xFE6B, - 7672: 0x303E, - 7673: 0x2FF0, - 7674: 0x2FF1, - 7675: 0x2FF2, - 7676: 0x2FF3, - 7677: 0x2FF4, - 7678: 0x2FF5, - 7679: 0x2FF6, - 7680: 0x2FF7, - 7681: 0x2FF8, - 7682: 0x2FF9, - 7683: 0x2FFA, - 7684: 0x2FFB, - 7685: 0x3007, - 7699: 0x2500, - 7700: 0x2501, - 7701: 0x2502, - 7702: 0x2503, - 7703: 0x2504, - 7704: 0x2505, - 7705: 0x2506, - 7706: 0x2507, - 7707: 0x2508, - 7708: 0x2509, - 7709: 0x250A, - 7710: 0x250B, - 7711: 0x250C, - 7712: 0x250D, - 7713: 0x250E, - 7714: 0x250F, - 7715: 0x2510, - 7716: 0x2511, - 7717: 0x2512, - 7718: 0x2513, - 7719: 0x2514, - 7720: 0x2515, - 7721: 0x2516, - 7722: 0x2517, - 7723: 0x2518, - 7724: 0x2519, - 7725: 0x251A, - 7726: 0x251B, - 7727: 0x251C, - 7728: 0x251D, - 7729: 0x251E, - 7730: 0x251F, - 7731: 0x2520, - 7732: 0x2521, - 7733: 0x2522, - 7734: 0x2523, - 7735: 0x2524, - 7736: 0x2525, - 7737: 0x2526, - 7738: 0x2527, - 7739: 0x2528, - 7740: 0x2529, - 7741: 0x252A, - 7742: 0x252B, - 7743: 0x252C, - 7744: 0x252D, - 7745: 0x252E, - 7746: 0x252F, - 7747: 0x2530, - 7748: 0x2531, - 7749: 0x2532, - 7750: 0x2533, - 7751: 0x2534, - 7752: 0x2535, - 7753: 0x2536, - 7754: 0x2537, - 7755: 0x2538, - 7756: 0x2539, - 7757: 0x253A, - 7758: 0x253B, - 7759: 0x253C, - 7760: 0x253D, - 7761: 0x253E, - 7762: 0x253F, - 7763: 0x2540, - 7764: 0x2541, - 7765: 0x2542, - 7766: 0x2543, - 7767: 0x2544, - 7768: 0x2545, - 7769: 0x2546, - 7770: 0x2547, - 7771: 0x2548, - 7772: 0x2549, - 7773: 0x254A, - 7774: 0x254B, - 7790: 0x72DC, - 7791: 0x72DD, - 7792: 0x72DF, - 7793: 0x72E2, - 7794: 0x72E3, - 7795: 0x72E4, - 7796: 0x72E5, - 7797: 0x72E6, - 7798: 0x72E7, - 7799: 0x72EA, - 7800: 0x72EB, - 7801: 0x72F5, - 7802: 0x72F6, - 7803: 0x72F9, - 7804: 0x72FD, - 7805: 0x72FE, - 7806: 0x72FF, - 7807: 0x7300, - 7808: 0x7302, - 7809: 0x7304, - 7810: 0x7305, - 7811: 0x7306, - 7812: 0x7307, - 7813: 0x7308, - 7814: 0x7309, - 7815: 0x730B, - 7816: 0x730C, - 7817: 0x730D, - 7818: 0x730F, - 7819: 0x7310, - 7820: 0x7311, - 7821: 0x7312, - 7822: 0x7314, - 7823: 0x7318, - 7824: 0x7319, - 7825: 0x731A, - 7826: 0x731F, - 7827: 0x7320, - 7828: 0x7323, - 7829: 0x7324, - 7830: 0x7326, - 7831: 0x7327, - 7832: 0x7328, - 7833: 0x732D, - 7834: 0x732F, - 7835: 0x7330, - 7836: 0x7332, - 7837: 0x7333, - 7838: 0x7335, - 7839: 0x7336, - 7840: 0x733A, - 7841: 0x733B, - 7842: 0x733C, - 7843: 0x733D, - 7844: 0x7340, - 7845: 0x7341, - 7846: 0x7342, - 7847: 0x7343, - 7848: 0x7344, - 7849: 0x7345, - 7850: 0x7346, - 7851: 0x7347, - 7852: 0x7348, - 7853: 0x7349, - 7854: 0x734A, - 7855: 0x734B, - 7856: 0x734C, - 7857: 0x734E, - 7858: 0x734F, - 7859: 0x7351, - 7860: 0x7353, - 7861: 0x7354, - 7862: 0x7355, - 7863: 0x7356, - 7864: 0x7358, - 7865: 0x7359, - 7866: 0x735A, - 7867: 0x735B, - 7868: 0x735C, - 7869: 0x735D, - 7870: 0x735E, - 7871: 0x735F, - 7872: 0x7361, - 7873: 0x7362, - 7874: 0x7363, - 7875: 0x7364, - 7876: 0x7365, - 7877: 0x7366, - 7878: 0x7367, - 7879: 0x7368, - 7880: 0x7369, - 7881: 0x736A, - 7882: 0x736B, - 7883: 0x736E, - 7884: 0x7370, - 7885: 0x7371, - 7980: 0x7372, - 7981: 0x7373, - 7982: 0x7374, - 7983: 0x7375, - 7984: 0x7376, - 7985: 0x7377, - 7986: 0x7378, - 7987: 0x7379, - 7988: 0x737A, - 7989: 0x737B, - 7990: 0x737C, - 7991: 0x737D, - 7992: 0x737F, - 7993: 0x7380, - 7994: 0x7381, - 7995: 0x7382, - 7996: 0x7383, - 7997: 0x7385, - 7998: 0x7386, - 7999: 0x7388, - 8000: 0x738A, - 8001: 0x738C, - 8002: 0x738D, - 8003: 0x738F, - 8004: 0x7390, - 8005: 0x7392, - 8006: 0x7393, - 8007: 0x7394, - 8008: 0x7395, - 8009: 0x7397, - 8010: 0x7398, - 8011: 0x7399, - 8012: 0x739A, - 8013: 0x739C, - 8014: 0x739D, - 8015: 0x739E, - 8016: 0x73A0, - 8017: 0x73A1, - 8018: 0x73A3, - 8019: 0x73A4, - 8020: 0x73A5, - 8021: 0x73A6, - 8022: 0x73A7, - 8023: 0x73A8, - 8024: 0x73AA, - 8025: 0x73AC, - 8026: 0x73AD, - 8027: 0x73B1, - 8028: 0x73B4, - 8029: 0x73B5, - 8030: 0x73B6, - 8031: 0x73B8, - 8032: 0x73B9, - 8033: 0x73BC, - 8034: 0x73BD, - 8035: 0x73BE, - 8036: 0x73BF, - 8037: 0x73C1, - 8038: 0x73C3, - 8039: 0x73C4, - 8040: 0x73C5, - 8041: 0x73C6, - 8042: 0x73C7, - 8043: 0x73CB, - 8044: 0x73CC, - 8045: 0x73CE, - 8046: 0x73D2, - 8047: 0x73D3, - 8048: 0x73D4, - 8049: 0x73D5, - 8050: 0x73D6, - 8051: 0x73D7, - 8052: 0x73D8, - 8053: 0x73DA, - 8054: 0x73DB, - 8055: 0x73DC, - 8056: 0x73DD, - 8057: 0x73DF, - 8058: 0x73E1, - 8059: 0x73E2, - 8060: 0x73E3, - 8061: 0x73E4, - 8062: 0x73E6, - 8063: 0x73E8, - 8064: 0x73EA, - 8065: 0x73EB, - 8066: 0x73EC, - 8067: 0x73EE, - 8068: 0x73EF, - 8069: 0x73F0, - 8070: 0x73F1, - 8071: 0x73F3, - 8072: 0x73F4, - 8073: 0x73F5, - 8074: 0x73F6, - 8075: 0x73F7, - 8170: 0x73F8, - 8171: 0x73F9, - 8172: 0x73FA, - 8173: 0x73FB, - 8174: 0x73FC, - 8175: 0x73FD, - 8176: 0x73FE, - 8177: 0x73FF, - 8178: 0x7400, - 8179: 0x7401, - 8180: 0x7402, - 8181: 0x7404, - 8182: 0x7407, - 8183: 0x7408, - 8184: 0x740B, - 8185: 0x740C, - 8186: 0x740D, - 8187: 0x740E, - 8188: 0x7411, - 8189: 0x7412, - 8190: 0x7413, - 8191: 0x7414, - 8192: 0x7415, - 8193: 0x7416, - 8194: 0x7417, - 8195: 0x7418, - 8196: 0x7419, - 8197: 0x741C, - 8198: 0x741D, - 8199: 0x741E, - 8200: 0x741F, - 8201: 0x7420, - 8202: 0x7421, - 8203: 0x7423, - 8204: 0x7424, - 8205: 0x7427, - 8206: 0x7429, - 8207: 0x742B, - 8208: 0x742D, - 8209: 0x742F, - 8210: 0x7431, - 8211: 0x7432, - 8212: 0x7437, - 8213: 0x7438, - 8214: 0x7439, - 8215: 0x743A, - 8216: 0x743B, - 8217: 0x743D, - 8218: 0x743E, - 8219: 0x743F, - 8220: 0x7440, - 8221: 0x7442, - 8222: 0x7443, - 8223: 0x7444, - 8224: 0x7445, - 8225: 0x7446, - 8226: 0x7447, - 8227: 0x7448, - 8228: 0x7449, - 8229: 0x744A, - 8230: 0x744B, - 8231: 0x744C, - 8232: 0x744D, - 8233: 0x744E, - 8234: 0x744F, - 8235: 0x7450, - 8236: 0x7451, - 8237: 0x7452, - 8238: 0x7453, - 8239: 0x7454, - 8240: 0x7456, - 8241: 0x7458, - 8242: 0x745D, - 8243: 0x7460, - 8244: 0x7461, - 8245: 0x7462, - 8246: 0x7463, - 8247: 0x7464, - 8248: 0x7465, - 8249: 0x7466, - 8250: 0x7467, - 8251: 0x7468, - 8252: 0x7469, - 8253: 0x746A, - 8254: 0x746B, - 8255: 0x746C, - 8256: 0x746E, - 8257: 0x746F, - 8258: 0x7471, - 8259: 0x7472, - 8260: 0x7473, - 8261: 0x7474, - 8262: 0x7475, - 8263: 0x7478, - 8264: 0x7479, - 8265: 0x747A, - 8360: 0x747B, - 8361: 0x747C, - 8362: 0x747D, - 8363: 0x747F, - 8364: 0x7482, - 8365: 0x7484, - 8366: 0x7485, - 8367: 0x7486, - 8368: 0x7488, - 8369: 0x7489, - 8370: 0x748A, - 8371: 0x748C, - 8372: 0x748D, - 8373: 0x748F, - 8374: 0x7491, - 8375: 0x7492, - 8376: 0x7493, - 8377: 0x7494, - 8378: 0x7495, - 8379: 0x7496, - 8380: 0x7497, - 8381: 0x7498, - 8382: 0x7499, - 8383: 0x749A, - 8384: 0x749B, - 8385: 0x749D, - 8386: 0x749F, - 8387: 0x74A0, - 8388: 0x74A1, - 8389: 0x74A2, - 8390: 0x74A3, - 8391: 0x74A4, - 8392: 0x74A5, - 8393: 0x74A6, - 8394: 0x74AA, - 8395: 0x74AB, - 8396: 0x74AC, - 8397: 0x74AD, - 8398: 0x74AE, - 8399: 0x74AF, - 8400: 0x74B0, - 8401: 0x74B1, - 8402: 0x74B2, - 8403: 0x74B3, - 8404: 0x74B4, - 8405: 0x74B5, - 8406: 0x74B6, - 8407: 0x74B7, - 8408: 0x74B8, - 8409: 0x74B9, - 8410: 0x74BB, - 8411: 0x74BC, - 8412: 0x74BD, - 8413: 0x74BE, - 8414: 0x74BF, - 8415: 0x74C0, - 8416: 0x74C1, - 8417: 0x74C2, - 8418: 0x74C3, - 8419: 0x74C4, - 8420: 0x74C5, - 8421: 0x74C6, - 8422: 0x74C7, - 8423: 0x74C8, - 8424: 0x74C9, - 8425: 0x74CA, - 8426: 0x74CB, - 8427: 0x74CC, - 8428: 0x74CD, - 8429: 0x74CE, - 8430: 0x74CF, - 8431: 0x74D0, - 8432: 0x74D1, - 8433: 0x74D3, - 8434: 0x74D4, - 8435: 0x74D5, - 8436: 0x74D6, - 8437: 0x74D7, - 8438: 0x74D8, - 8439: 0x74D9, - 8440: 0x74DA, - 8441: 0x74DB, - 8442: 0x74DD, - 8443: 0x74DF, - 8444: 0x74E1, - 8445: 0x74E5, - 8446: 0x74E7, - 8447: 0x74E8, - 8448: 0x74E9, - 8449: 0x74EA, - 8450: 0x74EB, - 8451: 0x74EC, - 8452: 0x74ED, - 8453: 0x74F0, - 8454: 0x74F1, - 8455: 0x74F2, - 8550: 0x74F3, - 8551: 0x74F5, - 8552: 0x74F8, - 8553: 0x74F9, - 8554: 0x74FA, - 8555: 0x74FB, - 8556: 0x74FC, - 8557: 0x74FD, - 8558: 0x74FE, - 8559: 0x7500, - 8560: 0x7501, - 8561: 0x7502, - 8562: 0x7503, - 8563: 0x7505, - 8564: 0x7506, - 8565: 0x7507, - 8566: 0x7508, - 8567: 0x7509, - 8568: 0x750A, - 8569: 0x750B, - 8570: 0x750C, - 8571: 0x750E, - 8572: 0x7510, - 8573: 0x7512, - 8574: 0x7514, - 8575: 0x7515, - 8576: 0x7516, - 8577: 0x7517, - 8578: 0x751B, - 8579: 0x751D, - 8580: 0x751E, - 8581: 0x7520, - 8582: 0x7521, - 8583: 0x7522, - 8584: 0x7523, - 8585: 0x7524, - 8586: 0x7526, - 8587: 0x7527, - 8588: 0x752A, - 8589: 0x752E, - 8590: 0x7534, - 8591: 0x7536, - 8592: 0x7539, - 8593: 0x753C, - 8594: 0x753D, - 8595: 0x753F, - 8596: 0x7541, - 8597: 0x7542, - 8598: 0x7543, - 8599: 0x7544, - 8600: 0x7546, - 8601: 0x7547, - 8602: 0x7549, - 8603: 0x754A, - 8604: 0x754D, - 8605: 0x7550, - 8606: 0x7551, - 8607: 0x7552, - 8608: 0x7553, - 8609: 0x7555, - 8610: 0x7556, - 8611: 0x7557, - 8612: 0x7558, - 8613: 0x755D, - 8614: 0x755E, - 8615: 0x755F, - 8616: 0x7560, - 8617: 0x7561, - 8618: 0x7562, - 8619: 0x7563, - 8620: 0x7564, - 8621: 0x7567, - 8622: 0x7568, - 8623: 0x7569, - 8624: 0x756B, - 8625: 0x756C, - 8626: 0x756D, - 8627: 0x756E, - 8628: 0x756F, - 8629: 0x7570, - 8630: 0x7571, - 8631: 0x7573, - 8632: 0x7575, - 8633: 0x7576, - 8634: 0x7577, - 8635: 0x757A, - 8636: 0x757B, - 8637: 0x757C, - 8638: 0x757D, - 8639: 0x757E, - 8640: 0x7580, - 8641: 0x7581, - 8642: 0x7582, - 8643: 0x7584, - 8644: 0x7585, - 8645: 0x7587, - 8740: 0x7588, - 8741: 0x7589, - 8742: 0x758A, - 8743: 0x758C, - 8744: 0x758D, - 8745: 0x758E, - 8746: 0x7590, - 8747: 0x7593, - 8748: 0x7595, - 8749: 0x7598, - 8750: 0x759B, - 8751: 0x759C, - 8752: 0x759E, - 8753: 0x75A2, - 8754: 0x75A6, - 8755: 0x75A7, - 8756: 0x75A8, - 8757: 0x75A9, - 8758: 0x75AA, - 8759: 0x75AD, - 8760: 0x75B6, - 8761: 0x75B7, - 8762: 0x75BA, - 8763: 0x75BB, - 8764: 0x75BF, - 8765: 0x75C0, - 8766: 0x75C1, - 8767: 0x75C6, - 8768: 0x75CB, - 8769: 0x75CC, - 8770: 0x75CE, - 8771: 0x75CF, - 8772: 0x75D0, - 8773: 0x75D1, - 8774: 0x75D3, - 8775: 0x75D7, - 8776: 0x75D9, - 8777: 0x75DA, - 8778: 0x75DC, - 8779: 0x75DD, - 8780: 0x75DF, - 8781: 0x75E0, - 8782: 0x75E1, - 8783: 0x75E5, - 8784: 0x75E9, - 8785: 0x75EC, - 8786: 0x75ED, - 8787: 0x75EE, - 8788: 0x75EF, - 8789: 0x75F2, - 8790: 0x75F3, - 8791: 0x75F5, - 8792: 0x75F6, - 8793: 0x75F7, - 8794: 0x75F8, - 8795: 0x75FA, - 8796: 0x75FB, - 8797: 0x75FD, - 8798: 0x75FE, - 8799: 0x7602, - 8800: 0x7604, - 8801: 0x7606, - 8802: 0x7607, - 8803: 0x7608, - 8804: 0x7609, - 8805: 0x760B, - 8806: 0x760D, - 8807: 0x760E, - 8808: 0x760F, - 8809: 0x7611, - 8810: 0x7612, - 8811: 0x7613, - 8812: 0x7614, - 8813: 0x7616, - 8814: 0x761A, - 8815: 0x761C, - 8816: 0x761D, - 8817: 0x761E, - 8818: 0x7621, - 8819: 0x7623, - 8820: 0x7627, - 8821: 0x7628, - 8822: 0x762C, - 8823: 0x762E, - 8824: 0x762F, - 8825: 0x7631, - 8826: 0x7632, - 8827: 0x7636, - 8828: 0x7637, - 8829: 0x7639, - 8830: 0x763A, - 8831: 0x763B, - 8832: 0x763D, - 8833: 0x7641, - 8834: 0x7642, - 8835: 0x7644, - 8930: 0x7645, - 8931: 0x7646, - 8932: 0x7647, - 8933: 0x7648, - 8934: 0x7649, - 8935: 0x764A, - 8936: 0x764B, - 8937: 0x764E, - 8938: 0x764F, - 8939: 0x7650, - 8940: 0x7651, - 8941: 0x7652, - 8942: 0x7653, - 8943: 0x7655, - 8944: 0x7657, - 8945: 0x7658, - 8946: 0x7659, - 8947: 0x765A, - 8948: 0x765B, - 8949: 0x765D, - 8950: 0x765F, - 8951: 0x7660, - 8952: 0x7661, - 8953: 0x7662, - 8954: 0x7664, - 8955: 0x7665, - 8956: 0x7666, - 8957: 0x7667, - 8958: 0x7668, - 8959: 0x7669, - 8960: 0x766A, - 8961: 0x766C, - 8962: 0x766D, - 8963: 0x766E, - 8964: 0x7670, - 8965: 0x7671, - 8966: 0x7672, - 8967: 0x7673, - 8968: 0x7674, - 8969: 0x7675, - 8970: 0x7676, - 8971: 0x7677, - 8972: 0x7679, - 8973: 0x767A, - 8974: 0x767C, - 8975: 0x767F, - 8976: 0x7680, - 8977: 0x7681, - 8978: 0x7683, - 8979: 0x7685, - 8980: 0x7689, - 8981: 0x768A, - 8982: 0x768C, - 8983: 0x768D, - 8984: 0x768F, - 8985: 0x7690, - 8986: 0x7692, - 8987: 0x7694, - 8988: 0x7695, - 8989: 0x7697, - 8990: 0x7698, - 8991: 0x769A, - 8992: 0x769B, - 8993: 0x769C, - 8994: 0x769D, - 8995: 0x769E, - 8996: 0x769F, - 8997: 0x76A0, - 8998: 0x76A1, - 8999: 0x76A2, - 9000: 0x76A3, - 9001: 0x76A5, - 9002: 0x76A6, - 9003: 0x76A7, - 9004: 0x76A8, - 9005: 0x76A9, - 9006: 0x76AA, - 9007: 0x76AB, - 9008: 0x76AC, - 9009: 0x76AD, - 9010: 0x76AF, - 9011: 0x76B0, - 9012: 0x76B3, - 9013: 0x76B5, - 9014: 0x76B6, - 9015: 0x76B7, - 9016: 0x76B8, - 9017: 0x76B9, - 9018: 0x76BA, - 9019: 0x76BB, - 9020: 0x76BC, - 9021: 0x76BD, - 9022: 0x76BE, - 9023: 0x76C0, - 9024: 0x76C1, - 9025: 0x76C3, - 9026: 0x554A, - 9027: 0x963F, - 9028: 0x57C3, - 9029: 0x6328, - 9030: 0x54CE, - 9031: 0x5509, - 9032: 0x54C0, - 9033: 0x7691, - 9034: 0x764C, - 9035: 0x853C, - 9036: 0x77EE, - 9037: 0x827E, - 9038: 0x788D, - 9039: 0x7231, - 9040: 0x9698, - 9041: 0x978D, - 9042: 0x6C28, - 9043: 0x5B89, - 9044: 0x4FFA, - 9045: 0x6309, - 9046: 0x6697, - 9047: 0x5CB8, - 9048: 0x80FA, - 9049: 0x6848, - 9050: 0x80AE, - 9051: 0x6602, - 9052: 0x76CE, - 9053: 0x51F9, - 9054: 0x6556, - 9055: 0x71AC, - 9056: 0x7FF1, - 9057: 0x8884, - 9058: 0x50B2, - 9059: 0x5965, - 9060: 0x61CA, - 9061: 0x6FB3, - 9062: 0x82AD, - 9063: 0x634C, - 9064: 0x6252, - 9065: 0x53ED, - 9066: 0x5427, - 9067: 0x7B06, - 9068: 0x516B, - 9069: 0x75A4, - 9070: 0x5DF4, - 9071: 0x62D4, - 9072: 0x8DCB, - 9073: 0x9776, - 9074: 0x628A, - 9075: 0x8019, - 9076: 0x575D, - 9077: 0x9738, - 9078: 0x7F62, - 9079: 0x7238, - 9080: 0x767D, - 9081: 0x67CF, - 9082: 0x767E, - 9083: 0x6446, - 9084: 0x4F70, - 9085: 0x8D25, - 9086: 0x62DC, - 9087: 0x7A17, - 9088: 0x6591, - 9089: 0x73ED, - 9090: 0x642C, - 9091: 0x6273, - 9092: 0x822C, - 9093: 0x9881, - 9094: 0x677F, - 9095: 0x7248, - 9096: 0x626E, - 9097: 0x62CC, - 9098: 0x4F34, - 9099: 0x74E3, - 9100: 0x534A, - 9101: 0x529E, - 9102: 0x7ECA, - 9103: 0x90A6, - 9104: 0x5E2E, - 9105: 0x6886, - 9106: 0x699C, - 9107: 0x8180, - 9108: 0x7ED1, - 9109: 0x68D2, - 9110: 0x78C5, - 9111: 0x868C, - 9112: 0x9551, - 9113: 0x508D, - 9114: 0x8C24, - 9115: 0x82DE, - 9116: 0x80DE, - 9117: 0x5305, - 9118: 0x8912, - 9119: 0x5265, - 9120: 0x76C4, - 9121: 0x76C7, - 9122: 0x76C9, - 9123: 0x76CB, - 9124: 0x76CC, - 9125: 0x76D3, - 9126: 0x76D5, - 9127: 0x76D9, - 9128: 0x76DA, - 9129: 0x76DC, - 9130: 0x76DD, - 9131: 0x76DE, - 9132: 0x76E0, - 9133: 0x76E1, - 9134: 0x76E2, - 9135: 0x76E3, - 9136: 0x76E4, - 9137: 0x76E6, - 9138: 0x76E7, - 9139: 0x76E8, - 9140: 0x76E9, - 9141: 0x76EA, - 9142: 0x76EB, - 9143: 0x76EC, - 9144: 0x76ED, - 9145: 0x76F0, - 9146: 0x76F3, - 9147: 0x76F5, - 9148: 0x76F6, - 9149: 0x76F7, - 9150: 0x76FA, - 9151: 0x76FB, - 9152: 0x76FD, - 9153: 0x76FF, - 9154: 0x7700, - 9155: 0x7702, - 9156: 0x7703, - 9157: 0x7705, - 9158: 0x7706, - 9159: 0x770A, - 9160: 0x770C, - 9161: 0x770E, - 9162: 0x770F, - 9163: 0x7710, - 9164: 0x7711, - 9165: 0x7712, - 9166: 0x7713, - 9167: 0x7714, - 9168: 0x7715, - 9169: 0x7716, - 9170: 0x7717, - 9171: 0x7718, - 9172: 0x771B, - 9173: 0x771C, - 9174: 0x771D, - 9175: 0x771E, - 9176: 0x7721, - 9177: 0x7723, - 9178: 0x7724, - 9179: 0x7725, - 9180: 0x7727, - 9181: 0x772A, - 9182: 0x772B, - 9183: 0x772C, - 9184: 0x772E, - 9185: 0x7730, - 9186: 0x7731, - 9187: 0x7732, - 9188: 0x7733, - 9189: 0x7734, - 9190: 0x7739, - 9191: 0x773B, - 9192: 0x773D, - 9193: 0x773E, - 9194: 0x773F, - 9195: 0x7742, - 9196: 0x7744, - 9197: 0x7745, - 9198: 0x7746, - 9199: 0x7748, - 9200: 0x7749, - 9201: 0x774A, - 9202: 0x774B, - 9203: 0x774C, - 9204: 0x774D, - 9205: 0x774E, - 9206: 0x774F, - 9207: 0x7752, - 9208: 0x7753, - 9209: 0x7754, - 9210: 0x7755, - 9211: 0x7756, - 9212: 0x7757, - 9213: 0x7758, - 9214: 0x7759, - 9215: 0x775C, - 9216: 0x8584, - 9217: 0x96F9, - 9218: 0x4FDD, - 9219: 0x5821, - 9220: 0x9971, - 9221: 0x5B9D, - 9222: 0x62B1, - 9223: 0x62A5, - 9224: 0x66B4, - 9225: 0x8C79, - 9226: 0x9C8D, - 9227: 0x7206, - 9228: 0x676F, - 9229: 0x7891, - 9230: 0x60B2, - 9231: 0x5351, - 9232: 0x5317, - 9233: 0x8F88, - 9234: 0x80CC, - 9235: 0x8D1D, - 9236: 0x94A1, - 9237: 0x500D, - 9238: 0x72C8, - 9239: 0x5907, - 9240: 0x60EB, - 9241: 0x7119, - 9242: 0x88AB, - 9243: 0x5954, - 9244: 0x82EF, - 9245: 0x672C, - 9246: 0x7B28, - 9247: 0x5D29, - 9248: 0x7EF7, - 9249: 0x752D, - 9250: 0x6CF5, - 9251: 0x8E66, - 9252: 0x8FF8, - 9253: 0x903C, - 9254: 0x9F3B, - 9255: 0x6BD4, - 9256: 0x9119, - 9257: 0x7B14, - 9258: 0x5F7C, - 9259: 0x78A7, - 9260: 0x84D6, - 9261: 0x853D, - 9262: 0x6BD5, - 9263: 0x6BD9, - 9264: 0x6BD6, - 9265: 0x5E01, - 9266: 0x5E87, - 9267: 0x75F9, - 9268: 0x95ED, - 9269: 0x655D, - 9270: 0x5F0A, - 9271: 0x5FC5, - 9272: 0x8F9F, - 9273: 0x58C1, - 9274: 0x81C2, - 9275: 0x907F, - 9276: 0x965B, - 9277: 0x97AD, - 9278: 0x8FB9, - 9279: 0x7F16, - 9280: 0x8D2C, - 9281: 0x6241, - 9282: 0x4FBF, - 9283: 0x53D8, - 9284: 0x535E, - 9285: 0x8FA8, - 9286: 0x8FA9, - 9287: 0x8FAB, - 9288: 0x904D, - 9289: 0x6807, - 9290: 0x5F6A, - 9291: 0x8198, - 9292: 0x8868, - 9293: 0x9CD6, - 9294: 0x618B, - 9295: 0x522B, - 9296: 0x762A, - 9297: 0x5F6C, - 9298: 0x658C, - 9299: 0x6FD2, - 9300: 0x6EE8, - 9301: 0x5BBE, - 9302: 0x6448, - 9303: 0x5175, - 9304: 0x51B0, - 9305: 0x67C4, - 9306: 0x4E19, - 9307: 0x79C9, - 9308: 0x997C, - 9309: 0x70B3, - 9310: 0x775D, - 9311: 0x775E, - 9312: 0x775F, - 9313: 0x7760, - 9314: 0x7764, - 9315: 0x7767, - 9316: 0x7769, - 9317: 0x776A, - 9318: 0x776D, - 9319: 0x776E, - 9320: 0x776F, - 9321: 0x7770, - 9322: 0x7771, - 9323: 0x7772, - 9324: 0x7773, - 9325: 0x7774, - 9326: 0x7775, - 9327: 0x7776, - 9328: 0x7777, - 9329: 0x7778, - 9330: 0x777A, - 9331: 0x777B, - 9332: 0x777C, - 9333: 0x7781, - 9334: 0x7782, - 9335: 0x7783, - 9336: 0x7786, - 9337: 0x7787, - 9338: 0x7788, - 9339: 0x7789, - 9340: 0x778A, - 9341: 0x778B, - 9342: 0x778F, - 9343: 0x7790, - 9344: 0x7793, - 9345: 0x7794, - 9346: 0x7795, - 9347: 0x7796, - 9348: 0x7797, - 9349: 0x7798, - 9350: 0x7799, - 9351: 0x779A, - 9352: 0x779B, - 9353: 0x779C, - 9354: 0x779D, - 9355: 0x779E, - 9356: 0x77A1, - 9357: 0x77A3, - 9358: 0x77A4, - 9359: 0x77A6, - 9360: 0x77A8, - 9361: 0x77AB, - 9362: 0x77AD, - 9363: 0x77AE, - 9364: 0x77AF, - 9365: 0x77B1, - 9366: 0x77B2, - 9367: 0x77B4, - 9368: 0x77B6, - 9369: 0x77B7, - 9370: 0x77B8, - 9371: 0x77B9, - 9372: 0x77BA, - 9373: 0x77BC, - 9374: 0x77BE, - 9375: 0x77C0, - 9376: 0x77C1, - 9377: 0x77C2, - 9378: 0x77C3, - 9379: 0x77C4, - 9380: 0x77C5, - 9381: 0x77C6, - 9382: 0x77C7, - 9383: 0x77C8, - 9384: 0x77C9, - 9385: 0x77CA, - 9386: 0x77CB, - 9387: 0x77CC, - 9388: 0x77CE, - 9389: 0x77CF, - 9390: 0x77D0, - 9391: 0x77D1, - 9392: 0x77D2, - 9393: 0x77D3, - 9394: 0x77D4, - 9395: 0x77D5, - 9396: 0x77D6, - 9397: 0x77D8, - 9398: 0x77D9, - 9399: 0x77DA, - 9400: 0x77DD, - 9401: 0x77DE, - 9402: 0x77DF, - 9403: 0x77E0, - 9404: 0x77E1, - 9405: 0x77E4, - 9406: 0x75C5, - 9407: 0x5E76, - 9408: 0x73BB, - 9409: 0x83E0, - 9410: 0x64AD, - 9411: 0x62E8, - 9412: 0x94B5, - 9413: 0x6CE2, - 9414: 0x535A, - 9415: 0x52C3, - 9416: 0x640F, - 9417: 0x94C2, - 9418: 0x7B94, - 9419: 0x4F2F, - 9420: 0x5E1B, - 9421: 0x8236, - 9422: 0x8116, - 9423: 0x818A, - 9424: 0x6E24, - 9425: 0x6CCA, - 9426: 0x9A73, - 9427: 0x6355, - 9428: 0x535C, - 9429: 0x54FA, - 9430: 0x8865, - 9431: 0x57E0, - 9432: 0x4E0D, - 9433: 0x5E03, - 9434: 0x6B65, - 9435: 0x7C3F, - 9436: 0x90E8, - 9437: 0x6016, - 9438: 0x64E6, - 9439: 0x731C, - 9440: 0x88C1, - 9441: 0x6750, - 9442: 0x624D, - 9443: 0x8D22, - 9444: 0x776C, - 9445: 0x8E29, - 9446: 0x91C7, - 9447: 0x5F69, - 9448: 0x83DC, - 9449: 0x8521, - 9450: 0x9910, - 9451: 0x53C2, - 9452: 0x8695, - 9453: 0x6B8B, - 9454: 0x60ED, - 9455: 0x60E8, - 9456: 0x707F, - 9457: 0x82CD, - 9458: 0x8231, - 9459: 0x4ED3, - 9460: 0x6CA7, - 9461: 0x85CF, - 9462: 0x64CD, - 9463: 0x7CD9, - 9464: 0x69FD, - 9465: 0x66F9, - 9466: 0x8349, - 9467: 0x5395, - 9468: 0x7B56, - 9469: 0x4FA7, - 9470: 0x518C, - 9471: 0x6D4B, - 9472: 0x5C42, - 9473: 0x8E6D, - 9474: 0x63D2, - 9475: 0x53C9, - 9476: 0x832C, - 9477: 0x8336, - 9478: 0x67E5, - 9479: 0x78B4, - 9480: 0x643D, - 9481: 0x5BDF, - 9482: 0x5C94, - 9483: 0x5DEE, - 9484: 0x8BE7, - 9485: 0x62C6, - 9486: 0x67F4, - 9487: 0x8C7A, - 9488: 0x6400, - 9489: 0x63BA, - 9490: 0x8749, - 9491: 0x998B, - 9492: 0x8C17, - 9493: 0x7F20, - 9494: 0x94F2, - 9495: 0x4EA7, - 9496: 0x9610, - 9497: 0x98A4, - 9498: 0x660C, - 9499: 0x7316, - 9500: 0x77E6, - 9501: 0x77E8, - 9502: 0x77EA, - 9503: 0x77EF, - 9504: 0x77F0, - 9505: 0x77F1, - 9506: 0x77F2, - 9507: 0x77F4, - 9508: 0x77F5, - 9509: 0x77F7, - 9510: 0x77F9, - 9511: 0x77FA, - 9512: 0x77FB, - 9513: 0x77FC, - 9514: 0x7803, - 9515: 0x7804, - 9516: 0x7805, - 9517: 0x7806, - 9518: 0x7807, - 9519: 0x7808, - 9520: 0x780A, - 9521: 0x780B, - 9522: 0x780E, - 9523: 0x780F, - 9524: 0x7810, - 9525: 0x7813, - 9526: 0x7815, - 9527: 0x7819, - 9528: 0x781B, - 9529: 0x781E, - 9530: 0x7820, - 9531: 0x7821, - 9532: 0x7822, - 9533: 0x7824, - 9534: 0x7828, - 9535: 0x782A, - 9536: 0x782B, - 9537: 0x782E, - 9538: 0x782F, - 9539: 0x7831, - 9540: 0x7832, - 9541: 0x7833, - 9542: 0x7835, - 9543: 0x7836, - 9544: 0x783D, - 9545: 0x783F, - 9546: 0x7841, - 9547: 0x7842, - 9548: 0x7843, - 9549: 0x7844, - 9550: 0x7846, - 9551: 0x7848, - 9552: 0x7849, - 9553: 0x784A, - 9554: 0x784B, - 9555: 0x784D, - 9556: 0x784F, - 9557: 0x7851, - 9558: 0x7853, - 9559: 0x7854, - 9560: 0x7858, - 9561: 0x7859, - 9562: 0x785A, - 9563: 0x785B, - 9564: 0x785C, - 9565: 0x785E, - 9566: 0x785F, - 9567: 0x7860, - 9568: 0x7861, - 9569: 0x7862, - 9570: 0x7863, - 9571: 0x7864, - 9572: 0x7865, - 9573: 0x7866, - 9574: 0x7867, - 9575: 0x7868, - 9576: 0x7869, - 9577: 0x786F, - 9578: 0x7870, - 9579: 0x7871, - 9580: 0x7872, - 9581: 0x7873, - 9582: 0x7874, - 9583: 0x7875, - 9584: 0x7876, - 9585: 0x7878, - 9586: 0x7879, - 9587: 0x787A, - 9588: 0x787B, - 9589: 0x787D, - 9590: 0x787E, - 9591: 0x787F, - 9592: 0x7880, - 9593: 0x7881, - 9594: 0x7882, - 9595: 0x7883, - 9596: 0x573A, - 9597: 0x5C1D, - 9598: 0x5E38, - 9599: 0x957F, - 9600: 0x507F, - 9601: 0x80A0, - 9602: 0x5382, - 9603: 0x655E, - 9604: 0x7545, - 9605: 0x5531, - 9606: 0x5021, - 9607: 0x8D85, - 9608: 0x6284, - 9609: 0x949E, - 9610: 0x671D, - 9611: 0x5632, - 9612: 0x6F6E, - 9613: 0x5DE2, - 9614: 0x5435, - 9615: 0x7092, - 9616: 0x8F66, - 9617: 0x626F, - 9618: 0x64A4, - 9619: 0x63A3, - 9620: 0x5F7B, - 9621: 0x6F88, - 9622: 0x90F4, - 9623: 0x81E3, - 9624: 0x8FB0, - 9625: 0x5C18, - 9626: 0x6668, - 9627: 0x5FF1, - 9628: 0x6C89, - 9629: 0x9648, - 9630: 0x8D81, - 9631: 0x886C, - 9632: 0x6491, - 9633: 0x79F0, - 9634: 0x57CE, - 9635: 0x6A59, - 9636: 0x6210, - 9637: 0x5448, - 9638: 0x4E58, - 9639: 0x7A0B, - 9640: 0x60E9, - 9641: 0x6F84, - 9642: 0x8BDA, - 9643: 0x627F, - 9644: 0x901E, - 9645: 0x9A8B, - 9646: 0x79E4, - 9647: 0x5403, - 9648: 0x75F4, - 9649: 0x6301, - 9650: 0x5319, - 9651: 0x6C60, - 9652: 0x8FDF, - 9653: 0x5F1B, - 9654: 0x9A70, - 9655: 0x803B, - 9656: 0x9F7F, - 9657: 0x4F88, - 9658: 0x5C3A, - 9659: 0x8D64, - 9660: 0x7FC5, - 9661: 0x65A5, - 9662: 0x70BD, - 9663: 0x5145, - 9664: 0x51B2, - 9665: 0x866B, - 9666: 0x5D07, - 9667: 0x5BA0, - 9668: 0x62BD, - 9669: 0x916C, - 9670: 0x7574, - 9671: 0x8E0C, - 9672: 0x7A20, - 9673: 0x6101, - 9674: 0x7B79, - 9675: 0x4EC7, - 9676: 0x7EF8, - 9677: 0x7785, - 9678: 0x4E11, - 9679: 0x81ED, - 9680: 0x521D, - 9681: 0x51FA, - 9682: 0x6A71, - 9683: 0x53A8, - 9684: 0x8E87, - 9685: 0x9504, - 9686: 0x96CF, - 9687: 0x6EC1, - 9688: 0x9664, - 9689: 0x695A, - 9690: 0x7884, - 9691: 0x7885, - 9692: 0x7886, - 9693: 0x7888, - 9694: 0x788A, - 9695: 0x788B, - 9696: 0x788F, - 9697: 0x7890, - 9698: 0x7892, - 9699: 0x7894, - 9700: 0x7895, - 9701: 0x7896, - 9702: 0x7899, - 9703: 0x789D, - 9704: 0x789E, - 9705: 0x78A0, - 9706: 0x78A2, - 9707: 0x78A4, - 9708: 0x78A6, - 9709: 0x78A8, - 9710: 0x78A9, - 9711: 0x78AA, - 9712: 0x78AB, - 9713: 0x78AC, - 9714: 0x78AD, - 9715: 0x78AE, - 9716: 0x78AF, - 9717: 0x78B5, - 9718: 0x78B6, - 9719: 0x78B7, - 9720: 0x78B8, - 9721: 0x78BA, - 9722: 0x78BB, - 9723: 0x78BC, - 9724: 0x78BD, - 9725: 0x78BF, - 9726: 0x78C0, - 9727: 0x78C2, - 9728: 0x78C3, - 9729: 0x78C4, - 9730: 0x78C6, - 9731: 0x78C7, - 9732: 0x78C8, - 9733: 0x78CC, - 9734: 0x78CD, - 9735: 0x78CE, - 9736: 0x78CF, - 9737: 0x78D1, - 9738: 0x78D2, - 9739: 0x78D3, - 9740: 0x78D6, - 9741: 0x78D7, - 9742: 0x78D8, - 9743: 0x78DA, - 9744: 0x78DB, - 9745: 0x78DC, - 9746: 0x78DD, - 9747: 0x78DE, - 9748: 0x78DF, - 9749: 0x78E0, - 9750: 0x78E1, - 9751: 0x78E2, - 9752: 0x78E3, - 9753: 0x78E4, - 9754: 0x78E5, - 9755: 0x78E6, - 9756: 0x78E7, - 9757: 0x78E9, - 9758: 0x78EA, - 9759: 0x78EB, - 9760: 0x78ED, - 9761: 0x78EE, - 9762: 0x78EF, - 9763: 0x78F0, - 9764: 0x78F1, - 9765: 0x78F3, - 9766: 0x78F5, - 9767: 0x78F6, - 9768: 0x78F8, - 9769: 0x78F9, - 9770: 0x78FB, - 9771: 0x78FC, - 9772: 0x78FD, - 9773: 0x78FE, - 9774: 0x78FF, - 9775: 0x7900, - 9776: 0x7902, - 9777: 0x7903, - 9778: 0x7904, - 9779: 0x7906, - 9780: 0x7907, - 9781: 0x7908, - 9782: 0x7909, - 9783: 0x790A, - 9784: 0x790B, - 9785: 0x790C, - 9786: 0x7840, - 9787: 0x50A8, - 9788: 0x77D7, - 9789: 0x6410, - 9790: 0x89E6, - 9791: 0x5904, - 9792: 0x63E3, - 9793: 0x5DDD, - 9794: 0x7A7F, - 9795: 0x693D, - 9796: 0x4F20, - 9797: 0x8239, - 9798: 0x5598, - 9799: 0x4E32, - 9800: 0x75AE, - 9801: 0x7A97, - 9802: 0x5E62, - 9803: 0x5E8A, - 9804: 0x95EF, - 9805: 0x521B, - 9806: 0x5439, - 9807: 0x708A, - 9808: 0x6376, - 9809: 0x9524, - 9810: 0x5782, - 9811: 0x6625, - 9812: 0x693F, - 9813: 0x9187, - 9814: 0x5507, - 9815: 0x6DF3, - 9816: 0x7EAF, - 9817: 0x8822, - 9818: 0x6233, - 9819: 0x7EF0, - 9820: 0x75B5, - 9821: 0x8328, - 9822: 0x78C1, - 9823: 0x96CC, - 9824: 0x8F9E, - 9825: 0x6148, - 9826: 0x74F7, - 9827: 0x8BCD, - 9828: 0x6B64, - 9829: 0x523A, - 9830: 0x8D50, - 9831: 0x6B21, - 9832: 0x806A, - 9833: 0x8471, - 9834: 0x56F1, - 9835: 0x5306, - 9836: 0x4ECE, - 9837: 0x4E1B, - 9838: 0x51D1, - 9839: 0x7C97, - 9840: 0x918B, - 9841: 0x7C07, - 9842: 0x4FC3, - 9843: 0x8E7F, - 9844: 0x7BE1, - 9845: 0x7A9C, - 9846: 0x6467, - 9847: 0x5D14, - 9848: 0x50AC, - 9849: 0x8106, - 9850: 0x7601, - 9851: 0x7CB9, - 9852: 0x6DEC, - 9853: 0x7FE0, - 9854: 0x6751, - 9855: 0x5B58, - 9856: 0x5BF8, - 9857: 0x78CB, - 9858: 0x64AE, - 9859: 0x6413, - 9860: 0x63AA, - 9861: 0x632B, - 9862: 0x9519, - 9863: 0x642D, - 9864: 0x8FBE, - 9865: 0x7B54, - 9866: 0x7629, - 9867: 0x6253, - 9868: 0x5927, - 9869: 0x5446, - 9870: 0x6B79, - 9871: 0x50A3, - 9872: 0x6234, - 9873: 0x5E26, - 9874: 0x6B86, - 9875: 0x4EE3, - 9876: 0x8D37, - 9877: 0x888B, - 9878: 0x5F85, - 9879: 0x902E, - 9880: 0x790D, - 9881: 0x790E, - 9882: 0x790F, - 9883: 0x7910, - 9884: 0x7911, - 9885: 0x7912, - 9886: 0x7914, - 9887: 0x7915, - 9888: 0x7916, - 9889: 0x7917, - 9890: 0x7918, - 9891: 0x7919, - 9892: 0x791A, - 9893: 0x791B, - 9894: 0x791C, - 9895: 0x791D, - 9896: 0x791F, - 9897: 0x7920, - 9898: 0x7921, - 9899: 0x7922, - 9900: 0x7923, - 9901: 0x7925, - 9902: 0x7926, - 9903: 0x7927, - 9904: 0x7928, - 9905: 0x7929, - 9906: 0x792A, - 9907: 0x792B, - 9908: 0x792C, - 9909: 0x792D, - 9910: 0x792E, - 9911: 0x792F, - 9912: 0x7930, - 9913: 0x7931, - 9914: 0x7932, - 9915: 0x7933, - 9916: 0x7935, - 9917: 0x7936, - 9918: 0x7937, - 9919: 0x7938, - 9920: 0x7939, - 9921: 0x793D, - 9922: 0x793F, - 9923: 0x7942, - 9924: 0x7943, - 9925: 0x7944, - 9926: 0x7945, - 9927: 0x7947, - 9928: 0x794A, - 9929: 0x794B, - 9930: 0x794C, - 9931: 0x794D, - 9932: 0x794E, - 9933: 0x794F, - 9934: 0x7950, - 9935: 0x7951, - 9936: 0x7952, - 9937: 0x7954, - 9938: 0x7955, - 9939: 0x7958, - 9940: 0x7959, - 9941: 0x7961, - 9942: 0x7963, - 9943: 0x7964, - 9944: 0x7966, - 9945: 0x7969, - 9946: 0x796A, - 9947: 0x796B, - 9948: 0x796C, - 9949: 0x796E, - 9950: 0x7970, - 9951: 0x7971, - 9952: 0x7972, - 9953: 0x7973, - 9954: 0x7974, - 9955: 0x7975, - 9956: 0x7976, - 9957: 0x7979, - 9958: 0x797B, - 9959: 0x797C, - 9960: 0x797D, - 9961: 0x797E, - 9962: 0x797F, - 9963: 0x7982, - 9964: 0x7983, - 9965: 0x7986, - 9966: 0x7987, - 9967: 0x7988, - 9968: 0x7989, - 9969: 0x798B, - 9970: 0x798C, - 9971: 0x798D, - 9972: 0x798E, - 9973: 0x7990, - 9974: 0x7991, - 9975: 0x7992, - 9976: 0x6020, - 9977: 0x803D, - 9978: 0x62C5, - 9979: 0x4E39, - 9980: 0x5355, - 9981: 0x90F8, - 9982: 0x63B8, - 9983: 0x80C6, - 9984: 0x65E6, - 9985: 0x6C2E, - 9986: 0x4F46, - 9987: 0x60EE, - 9988: 0x6DE1, - 9989: 0x8BDE, - 9990: 0x5F39, - 9991: 0x86CB, - 9992: 0x5F53, - 9993: 0x6321, - 9994: 0x515A, - 9995: 0x8361, - 9996: 0x6863, - 9997: 0x5200, - 9998: 0x6363, - 9999: 0x8E48, - 10000: 0x5012, - 10001: 0x5C9B, - 10002: 0x7977, - 10003: 0x5BFC, - 10004: 0x5230, - 10005: 0x7A3B, - 10006: 0x60BC, - 10007: 0x9053, - 10008: 0x76D7, - 10009: 0x5FB7, - 10010: 0x5F97, - 10011: 0x7684, - 10012: 0x8E6C, - 10013: 0x706F, - 10014: 0x767B, - 10015: 0x7B49, - 10016: 0x77AA, - 10017: 0x51F3, - 10018: 0x9093, - 10019: 0x5824, - 10020: 0x4F4E, - 10021: 0x6EF4, - 10022: 0x8FEA, - 10023: 0x654C, - 10024: 0x7B1B, - 10025: 0x72C4, - 10026: 0x6DA4, - 10027: 0x7FDF, - 10028: 0x5AE1, - 10029: 0x62B5, - 10030: 0x5E95, - 10031: 0x5730, - 10032: 0x8482, - 10033: 0x7B2C, - 10034: 0x5E1D, - 10035: 0x5F1F, - 10036: 0x9012, - 10037: 0x7F14, - 10038: 0x98A0, - 10039: 0x6382, - 10040: 0x6EC7, - 10041: 0x7898, - 10042: 0x70B9, - 10043: 0x5178, - 10044: 0x975B, - 10045: 0x57AB, - 10046: 0x7535, - 10047: 0x4F43, - 10048: 0x7538, - 10049: 0x5E97, - 10050: 0x60E6, - 10051: 0x5960, - 10052: 0x6DC0, - 10053: 0x6BBF, - 10054: 0x7889, - 10055: 0x53FC, - 10056: 0x96D5, - 10057: 0x51CB, - 10058: 0x5201, - 10059: 0x6389, - 10060: 0x540A, - 10061: 0x9493, - 10062: 0x8C03, - 10063: 0x8DCC, - 10064: 0x7239, - 10065: 0x789F, - 10066: 0x8776, - 10067: 0x8FED, - 10068: 0x8C0D, - 10069: 0x53E0, - 10070: 0x7993, - 10071: 0x7994, - 10072: 0x7995, - 10073: 0x7996, - 10074: 0x7997, - 10075: 0x7998, - 10076: 0x7999, - 10077: 0x799B, - 10078: 0x799C, - 10079: 0x799D, - 10080: 0x799E, - 10081: 0x799F, - 10082: 0x79A0, - 10083: 0x79A1, - 10084: 0x79A2, - 10085: 0x79A3, - 10086: 0x79A4, - 10087: 0x79A5, - 10088: 0x79A6, - 10089: 0x79A8, - 10090: 0x79A9, - 10091: 0x79AA, - 10092: 0x79AB, - 10093: 0x79AC, - 10094: 0x79AD, - 10095: 0x79AE, - 10096: 0x79AF, - 10097: 0x79B0, - 10098: 0x79B1, - 10099: 0x79B2, - 10100: 0x79B4, - 10101: 0x79B5, - 10102: 0x79B6, - 10103: 0x79B7, - 10104: 0x79B8, - 10105: 0x79BC, - 10106: 0x79BF, - 10107: 0x79C2, - 10108: 0x79C4, - 10109: 0x79C5, - 10110: 0x79C7, - 10111: 0x79C8, - 10112: 0x79CA, - 10113: 0x79CC, - 10114: 0x79CE, - 10115: 0x79CF, - 10116: 0x79D0, - 10117: 0x79D3, - 10118: 0x79D4, - 10119: 0x79D6, - 10120: 0x79D7, - 10121: 0x79D9, - 10122: 0x79DA, - 10123: 0x79DB, - 10124: 0x79DC, - 10125: 0x79DD, - 10126: 0x79DE, - 10127: 0x79E0, - 10128: 0x79E1, - 10129: 0x79E2, - 10130: 0x79E5, - 10131: 0x79E8, - 10132: 0x79EA, - 10133: 0x79EC, - 10134: 0x79EE, - 10135: 0x79F1, - 10136: 0x79F2, - 10137: 0x79F3, - 10138: 0x79F4, - 10139: 0x79F5, - 10140: 0x79F6, - 10141: 0x79F7, - 10142: 0x79F9, - 10143: 0x79FA, - 10144: 0x79FC, - 10145: 0x79FE, - 10146: 0x79FF, - 10147: 0x7A01, - 10148: 0x7A04, - 10149: 0x7A05, - 10150: 0x7A07, - 10151: 0x7A08, - 10152: 0x7A09, - 10153: 0x7A0A, - 10154: 0x7A0C, - 10155: 0x7A0F, - 10156: 0x7A10, - 10157: 0x7A11, - 10158: 0x7A12, - 10159: 0x7A13, - 10160: 0x7A15, - 10161: 0x7A16, - 10162: 0x7A18, - 10163: 0x7A19, - 10164: 0x7A1B, - 10165: 0x7A1C, - 10166: 0x4E01, - 10167: 0x76EF, - 10168: 0x53EE, - 10169: 0x9489, - 10170: 0x9876, - 10171: 0x9F0E, - 10172: 0x952D, - 10173: 0x5B9A, - 10174: 0x8BA2, - 10175: 0x4E22, - 10176: 0x4E1C, - 10177: 0x51AC, - 10178: 0x8463, - 10179: 0x61C2, - 10180: 0x52A8, - 10181: 0x680B, - 10182: 0x4F97, - 10183: 0x606B, - 10184: 0x51BB, - 10185: 0x6D1E, - 10186: 0x515C, - 10187: 0x6296, - 10188: 0x6597, - 10189: 0x9661, - 10190: 0x8C46, - 10191: 0x9017, - 10192: 0x75D8, - 10193: 0x90FD, - 10194: 0x7763, - 10195: 0x6BD2, - 10196: 0x728A, - 10197: 0x72EC, - 10198: 0x8BFB, - 10199: 0x5835, - 10200: 0x7779, - 10201: 0x8D4C, - 10202: 0x675C, - 10203: 0x9540, - 10204: 0x809A, - 10205: 0x5EA6, - 10206: 0x6E21, - 10207: 0x5992, - 10208: 0x7AEF, - 10209: 0x77ED, - 10210: 0x953B, - 10211: 0x6BB5, - 10212: 0x65AD, - 10213: 0x7F0E, - 10214: 0x5806, - 10215: 0x5151, - 10216: 0x961F, - 10217: 0x5BF9, - 10218: 0x58A9, - 10219: 0x5428, - 10220: 0x8E72, - 10221: 0x6566, - 10222: 0x987F, - 10223: 0x56E4, - 10224: 0x949D, - 10225: 0x76FE, - 10226: 0x9041, - 10227: 0x6387, - 10228: 0x54C6, - 10229: 0x591A, - 10230: 0x593A, - 10231: 0x579B, - 10232: 0x8EB2, - 10233: 0x6735, - 10234: 0x8DFA, - 10235: 0x8235, - 10236: 0x5241, - 10237: 0x60F0, - 10238: 0x5815, - 10239: 0x86FE, - 10240: 0x5CE8, - 10241: 0x9E45, - 10242: 0x4FC4, - 10243: 0x989D, - 10244: 0x8BB9, - 10245: 0x5A25, - 10246: 0x6076, - 10247: 0x5384, - 10248: 0x627C, - 10249: 0x904F, - 10250: 0x9102, - 10251: 0x997F, - 10252: 0x6069, - 10253: 0x800C, - 10254: 0x513F, - 10255: 0x8033, - 10256: 0x5C14, - 10257: 0x9975, - 10258: 0x6D31, - 10259: 0x4E8C, - 10260: 0x7A1D, - 10261: 0x7A1F, - 10262: 0x7A21, - 10263: 0x7A22, - 10264: 0x7A24, - 10265: 0x7A25, - 10266: 0x7A26, - 10267: 0x7A27, - 10268: 0x7A28, - 10269: 0x7A29, - 10270: 0x7A2A, - 10271: 0x7A2B, - 10272: 0x7A2C, - 10273: 0x7A2D, - 10274: 0x7A2E, - 10275: 0x7A2F, - 10276: 0x7A30, - 10277: 0x7A31, - 10278: 0x7A32, - 10279: 0x7A34, - 10280: 0x7A35, - 10281: 0x7A36, - 10282: 0x7A38, - 10283: 0x7A3A, - 10284: 0x7A3E, - 10285: 0x7A40, - 10286: 0x7A41, - 10287: 0x7A42, - 10288: 0x7A43, - 10289: 0x7A44, - 10290: 0x7A45, - 10291: 0x7A47, - 10292: 0x7A48, - 10293: 0x7A49, - 10294: 0x7A4A, - 10295: 0x7A4B, - 10296: 0x7A4C, - 10297: 0x7A4D, - 10298: 0x7A4E, - 10299: 0x7A4F, - 10300: 0x7A50, - 10301: 0x7A52, - 10302: 0x7A53, - 10303: 0x7A54, - 10304: 0x7A55, - 10305: 0x7A56, - 10306: 0x7A58, - 10307: 0x7A59, - 10308: 0x7A5A, - 10309: 0x7A5B, - 10310: 0x7A5C, - 10311: 0x7A5D, - 10312: 0x7A5E, - 10313: 0x7A5F, - 10314: 0x7A60, - 10315: 0x7A61, - 10316: 0x7A62, - 10317: 0x7A63, - 10318: 0x7A64, - 10319: 0x7A65, - 10320: 0x7A66, - 10321: 0x7A67, - 10322: 0x7A68, - 10323: 0x7A69, - 10324: 0x7A6A, - 10325: 0x7A6B, - 10326: 0x7A6C, - 10327: 0x7A6D, - 10328: 0x7A6E, - 10329: 0x7A6F, - 10330: 0x7A71, - 10331: 0x7A72, - 10332: 0x7A73, - 10333: 0x7A75, - 10334: 0x7A7B, - 10335: 0x7A7C, - 10336: 0x7A7D, - 10337: 0x7A7E, - 10338: 0x7A82, - 10339: 0x7A85, - 10340: 0x7A87, - 10341: 0x7A89, - 10342: 0x7A8A, - 10343: 0x7A8B, - 10344: 0x7A8C, - 10345: 0x7A8E, - 10346: 0x7A8F, - 10347: 0x7A90, - 10348: 0x7A93, - 10349: 0x7A94, - 10350: 0x7A99, - 10351: 0x7A9A, - 10352: 0x7A9B, - 10353: 0x7A9E, - 10354: 0x7AA1, - 10355: 0x7AA2, - 10356: 0x8D30, - 10357: 0x53D1, - 10358: 0x7F5A, - 10359: 0x7B4F, - 10360: 0x4F10, - 10361: 0x4E4F, - 10362: 0x9600, - 10363: 0x6CD5, - 10364: 0x73D0, - 10365: 0x85E9, - 10366: 0x5E06, - 10367: 0x756A, - 10368: 0x7FFB, - 10369: 0x6A0A, - 10370: 0x77FE, - 10371: 0x9492, - 10372: 0x7E41, - 10373: 0x51E1, - 10374: 0x70E6, - 10375: 0x53CD, - 10376: 0x8FD4, - 10377: 0x8303, - 10378: 0x8D29, - 10379: 0x72AF, - 10380: 0x996D, - 10381: 0x6CDB, - 10382: 0x574A, - 10383: 0x82B3, - 10384: 0x65B9, - 10385: 0x80AA, - 10386: 0x623F, - 10387: 0x9632, - 10388: 0x59A8, - 10389: 0x4EFF, - 10390: 0x8BBF, - 10391: 0x7EBA, - 10392: 0x653E, - 10393: 0x83F2, - 10394: 0x975E, - 10395: 0x5561, - 10396: 0x98DE, - 10397: 0x80A5, - 10398: 0x532A, - 10399: 0x8BFD, - 10400: 0x5420, - 10401: 0x80BA, - 10402: 0x5E9F, - 10403: 0x6CB8, - 10404: 0x8D39, - 10405: 0x82AC, - 10406: 0x915A, - 10407: 0x5429, - 10408: 0x6C1B, - 10409: 0x5206, - 10410: 0x7EB7, - 10411: 0x575F, - 10412: 0x711A, - 10413: 0x6C7E, - 10414: 0x7C89, - 10415: 0x594B, - 10416: 0x4EFD, - 10417: 0x5FFF, - 10418: 0x6124, - 10419: 0x7CAA, - 10420: 0x4E30, - 10421: 0x5C01, - 10422: 0x67AB, - 10423: 0x8702, - 10424: 0x5CF0, - 10425: 0x950B, - 10426: 0x98CE, - 10427: 0x75AF, - 10428: 0x70FD, - 10429: 0x9022, - 10430: 0x51AF, - 10431: 0x7F1D, - 10432: 0x8BBD, - 10433: 0x5949, - 10434: 0x51E4, - 10435: 0x4F5B, - 10436: 0x5426, - 10437: 0x592B, - 10438: 0x6577, - 10439: 0x80A4, - 10440: 0x5B75, - 10441: 0x6276, - 10442: 0x62C2, - 10443: 0x8F90, - 10444: 0x5E45, - 10445: 0x6C1F, - 10446: 0x7B26, - 10447: 0x4F0F, - 10448: 0x4FD8, - 10449: 0x670D, - 10450: 0x7AA3, - 10451: 0x7AA4, - 10452: 0x7AA7, - 10453: 0x7AA9, - 10454: 0x7AAA, - 10455: 0x7AAB, - 10456: 0x7AAE, - 10457: 0x7AAF, - 10458: 0x7AB0, - 10459: 0x7AB1, - 10460: 0x7AB2, - 10461: 0x7AB4, - 10462: 0x7AB5, - 10463: 0x7AB6, - 10464: 0x7AB7, - 10465: 0x7AB8, - 10466: 0x7AB9, - 10467: 0x7ABA, - 10468: 0x7ABB, - 10469: 0x7ABC, - 10470: 0x7ABD, - 10471: 0x7ABE, - 10472: 0x7AC0, - 10473: 0x7AC1, - 10474: 0x7AC2, - 10475: 0x7AC3, - 10476: 0x7AC4, - 10477: 0x7AC5, - 10478: 0x7AC6, - 10479: 0x7AC7, - 10480: 0x7AC8, - 10481: 0x7AC9, - 10482: 0x7ACA, - 10483: 0x7ACC, - 10484: 0x7ACD, - 10485: 0x7ACE, - 10486: 0x7ACF, - 10487: 0x7AD0, - 10488: 0x7AD1, - 10489: 0x7AD2, - 10490: 0x7AD3, - 10491: 0x7AD4, - 10492: 0x7AD5, - 10493: 0x7AD7, - 10494: 0x7AD8, - 10495: 0x7ADA, - 10496: 0x7ADB, - 10497: 0x7ADC, - 10498: 0x7ADD, - 10499: 0x7AE1, - 10500: 0x7AE2, - 10501: 0x7AE4, - 10502: 0x7AE7, - 10503: 0x7AE8, - 10504: 0x7AE9, - 10505: 0x7AEA, - 10506: 0x7AEB, - 10507: 0x7AEC, - 10508: 0x7AEE, - 10509: 0x7AF0, - 10510: 0x7AF1, - 10511: 0x7AF2, - 10512: 0x7AF3, - 10513: 0x7AF4, - 10514: 0x7AF5, - 10515: 0x7AF6, - 10516: 0x7AF7, - 10517: 0x7AF8, - 10518: 0x7AFB, - 10519: 0x7AFC, - 10520: 0x7AFE, - 10521: 0x7B00, - 10522: 0x7B01, - 10523: 0x7B02, - 10524: 0x7B05, - 10525: 0x7B07, - 10526: 0x7B09, - 10527: 0x7B0C, - 10528: 0x7B0D, - 10529: 0x7B0E, - 10530: 0x7B10, - 10531: 0x7B12, - 10532: 0x7B13, - 10533: 0x7B16, - 10534: 0x7B17, - 10535: 0x7B18, - 10536: 0x7B1A, - 10537: 0x7B1C, - 10538: 0x7B1D, - 10539: 0x7B1F, - 10540: 0x7B21, - 10541: 0x7B22, - 10542: 0x7B23, - 10543: 0x7B27, - 10544: 0x7B29, - 10545: 0x7B2D, - 10546: 0x6D6E, - 10547: 0x6DAA, - 10548: 0x798F, - 10549: 0x88B1, - 10550: 0x5F17, - 10551: 0x752B, - 10552: 0x629A, - 10553: 0x8F85, - 10554: 0x4FEF, - 10555: 0x91DC, - 10556: 0x65A7, - 10557: 0x812F, - 10558: 0x8151, - 10559: 0x5E9C, - 10560: 0x8150, - 10561: 0x8D74, - 10562: 0x526F, - 10563: 0x8986, - 10564: 0x8D4B, - 10565: 0x590D, - 10566: 0x5085, - 10567: 0x4ED8, - 10568: 0x961C, - 10569: 0x7236, - 10570: 0x8179, - 10571: 0x8D1F, - 10572: 0x5BCC, - 10573: 0x8BA3, - 10574: 0x9644, - 10575: 0x5987, - 10576: 0x7F1A, - 10577: 0x5490, - 10578: 0x5676, - 10579: 0x560E, - 10580: 0x8BE5, - 10581: 0x6539, - 10582: 0x6982, - 10583: 0x9499, - 10584: 0x76D6, - 10585: 0x6E89, - 10586: 0x5E72, - 10587: 0x7518, - 10588: 0x6746, - 10589: 0x67D1, - 10590: 0x7AFF, - 10591: 0x809D, - 10592: 0x8D76, - 10593: 0x611F, - 10594: 0x79C6, - 10595: 0x6562, - 10596: 0x8D63, - 10597: 0x5188, - 10598: 0x521A, - 10599: 0x94A2, - 10600: 0x7F38, - 10601: 0x809B, - 10602: 0x7EB2, - 10603: 0x5C97, - 10604: 0x6E2F, - 10605: 0x6760, - 10606: 0x7BD9, - 10607: 0x768B, - 10608: 0x9AD8, - 10609: 0x818F, - 10610: 0x7F94, - 10611: 0x7CD5, - 10612: 0x641E, - 10613: 0x9550, - 10614: 0x7A3F, - 10615: 0x544A, - 10616: 0x54E5, - 10617: 0x6B4C, - 10618: 0x6401, - 10619: 0x6208, - 10620: 0x9E3D, - 10621: 0x80F3, - 10622: 0x7599, - 10623: 0x5272, - 10624: 0x9769, - 10625: 0x845B, - 10626: 0x683C, - 10627: 0x86E4, - 10628: 0x9601, - 10629: 0x9694, - 10630: 0x94EC, - 10631: 0x4E2A, - 10632: 0x5404, - 10633: 0x7ED9, - 10634: 0x6839, - 10635: 0x8DDF, - 10636: 0x8015, - 10637: 0x66F4, - 10638: 0x5E9A, - 10639: 0x7FB9, - 10640: 0x7B2F, - 10641: 0x7B30, - 10642: 0x7B32, - 10643: 0x7B34, - 10644: 0x7B35, - 10645: 0x7B36, - 10646: 0x7B37, - 10647: 0x7B39, - 10648: 0x7B3B, - 10649: 0x7B3D, - 10650: 0x7B3F, - 10651: 0x7B40, - 10652: 0x7B41, - 10653: 0x7B42, - 10654: 0x7B43, - 10655: 0x7B44, - 10656: 0x7B46, - 10657: 0x7B48, - 10658: 0x7B4A, - 10659: 0x7B4D, - 10660: 0x7B4E, - 10661: 0x7B53, - 10662: 0x7B55, - 10663: 0x7B57, - 10664: 0x7B59, - 10665: 0x7B5C, - 10666: 0x7B5E, - 10667: 0x7B5F, - 10668: 0x7B61, - 10669: 0x7B63, - 10670: 0x7B64, - 10671: 0x7B65, - 10672: 0x7B66, - 10673: 0x7B67, - 10674: 0x7B68, - 10675: 0x7B69, - 10676: 0x7B6A, - 10677: 0x7B6B, - 10678: 0x7B6C, - 10679: 0x7B6D, - 10680: 0x7B6F, - 10681: 0x7B70, - 10682: 0x7B73, - 10683: 0x7B74, - 10684: 0x7B76, - 10685: 0x7B78, - 10686: 0x7B7A, - 10687: 0x7B7C, - 10688: 0x7B7D, - 10689: 0x7B7F, - 10690: 0x7B81, - 10691: 0x7B82, - 10692: 0x7B83, - 10693: 0x7B84, - 10694: 0x7B86, - 10695: 0x7B87, - 10696: 0x7B88, - 10697: 0x7B89, - 10698: 0x7B8A, - 10699: 0x7B8B, - 10700: 0x7B8C, - 10701: 0x7B8E, - 10702: 0x7B8F, - 10703: 0x7B91, - 10704: 0x7B92, - 10705: 0x7B93, - 10706: 0x7B96, - 10707: 0x7B98, - 10708: 0x7B99, - 10709: 0x7B9A, - 10710: 0x7B9B, - 10711: 0x7B9E, - 10712: 0x7B9F, - 10713: 0x7BA0, - 10714: 0x7BA3, - 10715: 0x7BA4, - 10716: 0x7BA5, - 10717: 0x7BAE, - 10718: 0x7BAF, - 10719: 0x7BB0, - 10720: 0x7BB2, - 10721: 0x7BB3, - 10722: 0x7BB5, - 10723: 0x7BB6, - 10724: 0x7BB7, - 10725: 0x7BB9, - 10726: 0x7BBA, - 10727: 0x7BBB, - 10728: 0x7BBC, - 10729: 0x7BBD, - 10730: 0x7BBE, - 10731: 0x7BBF, - 10732: 0x7BC0, - 10733: 0x7BC2, - 10734: 0x7BC3, - 10735: 0x7BC4, - 10736: 0x57C2, - 10737: 0x803F, - 10738: 0x6897, - 10739: 0x5DE5, - 10740: 0x653B, - 10741: 0x529F, - 10742: 0x606D, - 10743: 0x9F9A, - 10744: 0x4F9B, - 10745: 0x8EAC, - 10746: 0x516C, - 10747: 0x5BAB, - 10748: 0x5F13, - 10749: 0x5DE9, - 10750: 0x6C5E, - 10751: 0x62F1, - 10752: 0x8D21, - 10753: 0x5171, - 10754: 0x94A9, - 10755: 0x52FE, - 10756: 0x6C9F, - 10757: 0x82DF, - 10758: 0x72D7, - 10759: 0x57A2, - 10760: 0x6784, - 10761: 0x8D2D, - 10762: 0x591F, - 10763: 0x8F9C, - 10764: 0x83C7, - 10765: 0x5495, - 10766: 0x7B8D, - 10767: 0x4F30, - 10768: 0x6CBD, - 10769: 0x5B64, - 10770: 0x59D1, - 10771: 0x9F13, - 10772: 0x53E4, - 10773: 0x86CA, - 10774: 0x9AA8, - 10775: 0x8C37, - 10776: 0x80A1, - 10777: 0x6545, - 10778: 0x987E, - 10779: 0x56FA, - 10780: 0x96C7, - 10781: 0x522E, - 10782: 0x74DC, - 10783: 0x5250, - 10784: 0x5BE1, - 10785: 0x6302, - 10786: 0x8902, - 10787: 0x4E56, - 10788: 0x62D0, - 10789: 0x602A, - 10790: 0x68FA, - 10791: 0x5173, - 10792: 0x5B98, - 10793: 0x51A0, - 10794: 0x89C2, - 10795: 0x7BA1, - 10796: 0x9986, - 10797: 0x7F50, - 10798: 0x60EF, - 10799: 0x704C, - 10800: 0x8D2F, - 10801: 0x5149, - 10802: 0x5E7F, - 10803: 0x901B, - 10804: 0x7470, - 10805: 0x89C4, - 10806: 0x572D, - 10807: 0x7845, - 10808: 0x5F52, - 10809: 0x9F9F, - 10810: 0x95FA, - 10811: 0x8F68, - 10812: 0x9B3C, - 10813: 0x8BE1, - 10814: 0x7678, - 10815: 0x6842, - 10816: 0x67DC, - 10817: 0x8DEA, - 10818: 0x8D35, - 10819: 0x523D, - 10820: 0x8F8A, - 10821: 0x6EDA, - 10822: 0x68CD, - 10823: 0x9505, - 10824: 0x90ED, - 10825: 0x56FD, - 10826: 0x679C, - 10827: 0x88F9, - 10828: 0x8FC7, - 10829: 0x54C8, - 10830: 0x7BC5, - 10831: 0x7BC8, - 10832: 0x7BC9, - 10833: 0x7BCA, - 10834: 0x7BCB, - 10835: 0x7BCD, - 10836: 0x7BCE, - 10837: 0x7BCF, - 10838: 0x7BD0, - 10839: 0x7BD2, - 10840: 0x7BD4, - 10841: 0x7BD5, - 10842: 0x7BD6, - 10843: 0x7BD7, - 10844: 0x7BD8, - 10845: 0x7BDB, - 10846: 0x7BDC, - 10847: 0x7BDE, - 10848: 0x7BDF, - 10849: 0x7BE0, - 10850: 0x7BE2, - 10851: 0x7BE3, - 10852: 0x7BE4, - 10853: 0x7BE7, - 10854: 0x7BE8, - 10855: 0x7BE9, - 10856: 0x7BEB, - 10857: 0x7BEC, - 10858: 0x7BED, - 10859: 0x7BEF, - 10860: 0x7BF0, - 10861: 0x7BF2, - 10862: 0x7BF3, - 10863: 0x7BF4, - 10864: 0x7BF5, - 10865: 0x7BF6, - 10866: 0x7BF8, - 10867: 0x7BF9, - 10868: 0x7BFA, - 10869: 0x7BFB, - 10870: 0x7BFD, - 10871: 0x7BFF, - 10872: 0x7C00, - 10873: 0x7C01, - 10874: 0x7C02, - 10875: 0x7C03, - 10876: 0x7C04, - 10877: 0x7C05, - 10878: 0x7C06, - 10879: 0x7C08, - 10880: 0x7C09, - 10881: 0x7C0A, - 10882: 0x7C0D, - 10883: 0x7C0E, - 10884: 0x7C10, - 10885: 0x7C11, - 10886: 0x7C12, - 10887: 0x7C13, - 10888: 0x7C14, - 10889: 0x7C15, - 10890: 0x7C17, - 10891: 0x7C18, - 10892: 0x7C19, - 10893: 0x7C1A, - 10894: 0x7C1B, - 10895: 0x7C1C, - 10896: 0x7C1D, - 10897: 0x7C1E, - 10898: 0x7C20, - 10899: 0x7C21, - 10900: 0x7C22, - 10901: 0x7C23, - 10902: 0x7C24, - 10903: 0x7C25, - 10904: 0x7C28, - 10905: 0x7C29, - 10906: 0x7C2B, - 10907: 0x7C2C, - 10908: 0x7C2D, - 10909: 0x7C2E, - 10910: 0x7C2F, - 10911: 0x7C30, - 10912: 0x7C31, - 10913: 0x7C32, - 10914: 0x7C33, - 10915: 0x7C34, - 10916: 0x7C35, - 10917: 0x7C36, - 10918: 0x7C37, - 10919: 0x7C39, - 10920: 0x7C3A, - 10921: 0x7C3B, - 10922: 0x7C3C, - 10923: 0x7C3D, - 10924: 0x7C3E, - 10925: 0x7C42, - 10926: 0x9AB8, - 10927: 0x5B69, - 10928: 0x6D77, - 10929: 0x6C26, - 10930: 0x4EA5, - 10931: 0x5BB3, - 10932: 0x9A87, - 10933: 0x9163, - 10934: 0x61A8, - 10935: 0x90AF, - 10936: 0x97E9, - 10937: 0x542B, - 10938: 0x6DB5, - 10939: 0x5BD2, - 10940: 0x51FD, - 10941: 0x558A, - 10942: 0x7F55, - 10943: 0x7FF0, - 10944: 0x64BC, - 10945: 0x634D, - 10946: 0x65F1, - 10947: 0x61BE, - 10948: 0x608D, - 10949: 0x710A, - 10950: 0x6C57, - 10951: 0x6C49, - 10952: 0x592F, - 10953: 0x676D, - 10954: 0x822A, - 10955: 0x58D5, - 10956: 0x568E, - 10957: 0x8C6A, - 10958: 0x6BEB, - 10959: 0x90DD, - 10960: 0x597D, - 10961: 0x8017, - 10962: 0x53F7, - 10963: 0x6D69, - 10964: 0x5475, - 10965: 0x559D, - 10966: 0x8377, - 10967: 0x83CF, - 10968: 0x6838, - 10969: 0x79BE, - 10970: 0x548C, - 10971: 0x4F55, - 10972: 0x5408, - 10973: 0x76D2, - 10974: 0x8C89, - 10975: 0x9602, - 10976: 0x6CB3, - 10977: 0x6DB8, - 10978: 0x8D6B, - 10979: 0x8910, - 10980: 0x9E64, - 10981: 0x8D3A, - 10982: 0x563F, - 10983: 0x9ED1, - 10984: 0x75D5, - 10985: 0x5F88, - 10986: 0x72E0, - 10987: 0x6068, - 10988: 0x54FC, - 10989: 0x4EA8, - 10990: 0x6A2A, - 10991: 0x8861, - 10992: 0x6052, - 10993: 0x8F70, - 10994: 0x54C4, - 10995: 0x70D8, - 10996: 0x8679, - 10997: 0x9E3F, - 10998: 0x6D2A, - 10999: 0x5B8F, - 11000: 0x5F18, - 11001: 0x7EA2, - 11002: 0x5589, - 11003: 0x4FAF, - 11004: 0x7334, - 11005: 0x543C, - 11006: 0x539A, - 11007: 0x5019, - 11008: 0x540E, - 11009: 0x547C, - 11010: 0x4E4E, - 11011: 0x5FFD, - 11012: 0x745A, - 11013: 0x58F6, - 11014: 0x846B, - 11015: 0x80E1, - 11016: 0x8774, - 11017: 0x72D0, - 11018: 0x7CCA, - 11019: 0x6E56, - 11020: 0x7C43, - 11021: 0x7C44, - 11022: 0x7C45, - 11023: 0x7C46, - 11024: 0x7C47, - 11025: 0x7C48, - 11026: 0x7C49, - 11027: 0x7C4A, - 11028: 0x7C4B, - 11029: 0x7C4C, - 11030: 0x7C4E, - 11031: 0x7C4F, - 11032: 0x7C50, - 11033: 0x7C51, - 11034: 0x7C52, - 11035: 0x7C53, - 11036: 0x7C54, - 11037: 0x7C55, - 11038: 0x7C56, - 11039: 0x7C57, - 11040: 0x7C58, - 11041: 0x7C59, - 11042: 0x7C5A, - 11043: 0x7C5B, - 11044: 0x7C5C, - 11045: 0x7C5D, - 11046: 0x7C5E, - 11047: 0x7C5F, - 11048: 0x7C60, - 11049: 0x7C61, - 11050: 0x7C62, - 11051: 0x7C63, - 11052: 0x7C64, - 11053: 0x7C65, - 11054: 0x7C66, - 11055: 0x7C67, - 11056: 0x7C68, - 11057: 0x7C69, - 11058: 0x7C6A, - 11059: 0x7C6B, - 11060: 0x7C6C, - 11061: 0x7C6D, - 11062: 0x7C6E, - 11063: 0x7C6F, - 11064: 0x7C70, - 11065: 0x7C71, - 11066: 0x7C72, - 11067: 0x7C75, - 11068: 0x7C76, - 11069: 0x7C77, - 11070: 0x7C78, - 11071: 0x7C79, - 11072: 0x7C7A, - 11073: 0x7C7E, - 11074: 0x7C7F, - 11075: 0x7C80, - 11076: 0x7C81, - 11077: 0x7C82, - 11078: 0x7C83, - 11079: 0x7C84, - 11080: 0x7C85, - 11081: 0x7C86, - 11082: 0x7C87, - 11083: 0x7C88, - 11084: 0x7C8A, - 11085: 0x7C8B, - 11086: 0x7C8C, - 11087: 0x7C8D, - 11088: 0x7C8E, - 11089: 0x7C8F, - 11090: 0x7C90, - 11091: 0x7C93, - 11092: 0x7C94, - 11093: 0x7C96, - 11094: 0x7C99, - 11095: 0x7C9A, - 11096: 0x7C9B, - 11097: 0x7CA0, - 11098: 0x7CA1, - 11099: 0x7CA3, - 11100: 0x7CA6, - 11101: 0x7CA7, - 11102: 0x7CA8, - 11103: 0x7CA9, - 11104: 0x7CAB, - 11105: 0x7CAC, - 11106: 0x7CAD, - 11107: 0x7CAF, - 11108: 0x7CB0, - 11109: 0x7CB4, - 11110: 0x7CB5, - 11111: 0x7CB6, - 11112: 0x7CB7, - 11113: 0x7CB8, - 11114: 0x7CBA, - 11115: 0x7CBB, - 11116: 0x5F27, - 11117: 0x864E, - 11118: 0x552C, - 11119: 0x62A4, - 11120: 0x4E92, - 11121: 0x6CAA, - 11122: 0x6237, - 11123: 0x82B1, - 11124: 0x54D7, - 11125: 0x534E, - 11126: 0x733E, - 11127: 0x6ED1, - 11128: 0x753B, - 11129: 0x5212, - 11130: 0x5316, - 11131: 0x8BDD, - 11132: 0x69D0, - 11133: 0x5F8A, - 11134: 0x6000, - 11135: 0x6DEE, - 11136: 0x574F, - 11137: 0x6B22, - 11138: 0x73AF, - 11139: 0x6853, - 11140: 0x8FD8, - 11141: 0x7F13, - 11142: 0x6362, - 11143: 0x60A3, - 11144: 0x5524, - 11145: 0x75EA, - 11146: 0x8C62, - 11147: 0x7115, - 11148: 0x6DA3, - 11149: 0x5BA6, - 11150: 0x5E7B, - 11151: 0x8352, - 11152: 0x614C, - 11153: 0x9EC4, - 11154: 0x78FA, - 11155: 0x8757, - 11156: 0x7C27, - 11157: 0x7687, - 11158: 0x51F0, - 11159: 0x60F6, - 11160: 0x714C, - 11161: 0x6643, - 11162: 0x5E4C, - 11163: 0x604D, - 11164: 0x8C0E, - 11165: 0x7070, - 11166: 0x6325, - 11167: 0x8F89, - 11168: 0x5FBD, - 11169: 0x6062, - 11170: 0x86D4, - 11171: 0x56DE, - 11172: 0x6BC1, - 11173: 0x6094, - 11174: 0x6167, - 11175: 0x5349, - 11176: 0x60E0, - 11177: 0x6666, - 11178: 0x8D3F, - 11179: 0x79FD, - 11180: 0x4F1A, - 11181: 0x70E9, - 11182: 0x6C47, - 11183: 0x8BB3, - 11184: 0x8BF2, - 11185: 0x7ED8, - 11186: 0x8364, - 11187: 0x660F, - 11188: 0x5A5A, - 11189: 0x9B42, - 11190: 0x6D51, - 11191: 0x6DF7, - 11192: 0x8C41, - 11193: 0x6D3B, - 11194: 0x4F19, - 11195: 0x706B, - 11196: 0x83B7, - 11197: 0x6216, - 11198: 0x60D1, - 11199: 0x970D, - 11200: 0x8D27, - 11201: 0x7978, - 11202: 0x51FB, - 11203: 0x573E, - 11204: 0x57FA, - 11205: 0x673A, - 11206: 0x7578, - 11207: 0x7A3D, - 11208: 0x79EF, - 11209: 0x7B95, - 11210: 0x7CBF, - 11211: 0x7CC0, - 11212: 0x7CC2, - 11213: 0x7CC3, - 11214: 0x7CC4, - 11215: 0x7CC6, - 11216: 0x7CC9, - 11217: 0x7CCB, - 11218: 0x7CCE, - 11219: 0x7CCF, - 11220: 0x7CD0, - 11221: 0x7CD1, - 11222: 0x7CD2, - 11223: 0x7CD3, - 11224: 0x7CD4, - 11225: 0x7CD8, - 11226: 0x7CDA, - 11227: 0x7CDB, - 11228: 0x7CDD, - 11229: 0x7CDE, - 11230: 0x7CE1, - 11231: 0x7CE2, - 11232: 0x7CE3, - 11233: 0x7CE4, - 11234: 0x7CE5, - 11235: 0x7CE6, - 11236: 0x7CE7, - 11237: 0x7CE9, - 11238: 0x7CEA, - 11239: 0x7CEB, - 11240: 0x7CEC, - 11241: 0x7CED, - 11242: 0x7CEE, - 11243: 0x7CF0, - 11244: 0x7CF1, - 11245: 0x7CF2, - 11246: 0x7CF3, - 11247: 0x7CF4, - 11248: 0x7CF5, - 11249: 0x7CF6, - 11250: 0x7CF7, - 11251: 0x7CF9, - 11252: 0x7CFA, - 11253: 0x7CFC, - 11254: 0x7CFD, - 11255: 0x7CFE, - 11256: 0x7CFF, - 11257: 0x7D00, - 11258: 0x7D01, - 11259: 0x7D02, - 11260: 0x7D03, - 11261: 0x7D04, - 11262: 0x7D05, - 11263: 0x7D06, - 11264: 0x7D07, - 11265: 0x7D08, - 11266: 0x7D09, - 11267: 0x7D0B, - 11268: 0x7D0C, - 11269: 0x7D0D, - 11270: 0x7D0E, - 11271: 0x7D0F, - 11272: 0x7D10, - 11273: 0x7D11, - 11274: 0x7D12, - 11275: 0x7D13, - 11276: 0x7D14, - 11277: 0x7D15, - 11278: 0x7D16, - 11279: 0x7D17, - 11280: 0x7D18, - 11281: 0x7D19, - 11282: 0x7D1A, - 11283: 0x7D1B, - 11284: 0x7D1C, - 11285: 0x7D1D, - 11286: 0x7D1E, - 11287: 0x7D1F, - 11288: 0x7D21, - 11289: 0x7D23, - 11290: 0x7D24, - 11291: 0x7D25, - 11292: 0x7D26, - 11293: 0x7D28, - 11294: 0x7D29, - 11295: 0x7D2A, - 11296: 0x7D2C, - 11297: 0x7D2D, - 11298: 0x7D2E, - 11299: 0x7D30, - 11300: 0x7D31, - 11301: 0x7D32, - 11302: 0x7D33, - 11303: 0x7D34, - 11304: 0x7D35, - 11305: 0x7D36, - 11306: 0x808C, - 11307: 0x9965, - 11308: 0x8FF9, - 11309: 0x6FC0, - 11310: 0x8BA5, - 11311: 0x9E21, - 11312: 0x59EC, - 11313: 0x7EE9, - 11314: 0x7F09, - 11315: 0x5409, - 11316: 0x6781, - 11317: 0x68D8, - 11318: 0x8F91, - 11319: 0x7C4D, - 11320: 0x96C6, - 11321: 0x53CA, - 11322: 0x6025, - 11323: 0x75BE, - 11324: 0x6C72, - 11325: 0x5373, - 11326: 0x5AC9, - 11327: 0x7EA7, - 11328: 0x6324, - 11329: 0x51E0, - 11330: 0x810A, - 11331: 0x5DF1, - 11332: 0x84DF, - 11333: 0x6280, - 11334: 0x5180, - 11335: 0x5B63, - 11336: 0x4F0E, - 11337: 0x796D, - 11338: 0x5242, - 11339: 0x60B8, - 11340: 0x6D4E, - 11341: 0x5BC4, - 11342: 0x5BC2, - 11343: 0x8BA1, - 11344: 0x8BB0, - 11345: 0x65E2, - 11346: 0x5FCC, - 11347: 0x9645, - 11348: 0x5993, - 11349: 0x7EE7, - 11350: 0x7EAA, - 11351: 0x5609, - 11352: 0x67B7, - 11353: 0x5939, - 11354: 0x4F73, - 11355: 0x5BB6, - 11356: 0x52A0, - 11357: 0x835A, - 11358: 0x988A, - 11359: 0x8D3E, - 11360: 0x7532, - 11361: 0x94BE, - 11362: 0x5047, - 11363: 0x7A3C, - 11364: 0x4EF7, - 11365: 0x67B6, - 11366: 0x9A7E, - 11367: 0x5AC1, - 11368: 0x6B7C, - 11369: 0x76D1, - 11370: 0x575A, - 11371: 0x5C16, - 11372: 0x7B3A, - 11373: 0x95F4, - 11374: 0x714E, - 11375: 0x517C, - 11376: 0x80A9, - 11377: 0x8270, - 11378: 0x5978, - 11379: 0x7F04, - 11380: 0x8327, - 11381: 0x68C0, - 11382: 0x67EC, - 11383: 0x78B1, - 11384: 0x7877, - 11385: 0x62E3, - 11386: 0x6361, - 11387: 0x7B80, - 11388: 0x4FED, - 11389: 0x526A, - 11390: 0x51CF, - 11391: 0x8350, - 11392: 0x69DB, - 11393: 0x9274, - 11394: 0x8DF5, - 11395: 0x8D31, - 11396: 0x89C1, - 11397: 0x952E, - 11398: 0x7BAD, - 11399: 0x4EF6, - 11400: 0x7D37, - 11401: 0x7D38, - 11402: 0x7D39, - 11403: 0x7D3A, - 11404: 0x7D3B, - 11405: 0x7D3C, - 11406: 0x7D3D, - 11407: 0x7D3E, - 11408: 0x7D3F, - 11409: 0x7D40, - 11410: 0x7D41, - 11411: 0x7D42, - 11412: 0x7D43, - 11413: 0x7D44, - 11414: 0x7D45, - 11415: 0x7D46, - 11416: 0x7D47, - 11417: 0x7D48, - 11418: 0x7D49, - 11419: 0x7D4A, - 11420: 0x7D4B, - 11421: 0x7D4C, - 11422: 0x7D4D, - 11423: 0x7D4E, - 11424: 0x7D4F, - 11425: 0x7D50, - 11426: 0x7D51, - 11427: 0x7D52, - 11428: 0x7D53, - 11429: 0x7D54, - 11430: 0x7D55, - 11431: 0x7D56, - 11432: 0x7D57, - 11433: 0x7D58, - 11434: 0x7D59, - 11435: 0x7D5A, - 11436: 0x7D5B, - 11437: 0x7D5C, - 11438: 0x7D5D, - 11439: 0x7D5E, - 11440: 0x7D5F, - 11441: 0x7D60, - 11442: 0x7D61, - 11443: 0x7D62, - 11444: 0x7D63, - 11445: 0x7D64, - 11446: 0x7D65, - 11447: 0x7D66, - 11448: 0x7D67, - 11449: 0x7D68, - 11450: 0x7D69, - 11451: 0x7D6A, - 11452: 0x7D6B, - 11453: 0x7D6C, - 11454: 0x7D6D, - 11455: 0x7D6F, - 11456: 0x7D70, - 11457: 0x7D71, - 11458: 0x7D72, - 11459: 0x7D73, - 11460: 0x7D74, - 11461: 0x7D75, - 11462: 0x7D76, - 11463: 0x7D78, - 11464: 0x7D79, - 11465: 0x7D7A, - 11466: 0x7D7B, - 11467: 0x7D7C, - 11468: 0x7D7D, - 11469: 0x7D7E, - 11470: 0x7D7F, - 11471: 0x7D80, - 11472: 0x7D81, - 11473: 0x7D82, - 11474: 0x7D83, - 11475: 0x7D84, - 11476: 0x7D85, - 11477: 0x7D86, - 11478: 0x7D87, - 11479: 0x7D88, - 11480: 0x7D89, - 11481: 0x7D8A, - 11482: 0x7D8B, - 11483: 0x7D8C, - 11484: 0x7D8D, - 11485: 0x7D8E, - 11486: 0x7D8F, - 11487: 0x7D90, - 11488: 0x7D91, - 11489: 0x7D92, - 11490: 0x7D93, - 11491: 0x7D94, - 11492: 0x7D95, - 11493: 0x7D96, - 11494: 0x7D97, - 11495: 0x7D98, - 11496: 0x5065, - 11497: 0x8230, - 11498: 0x5251, - 11499: 0x996F, - 11500: 0x6E10, - 11501: 0x6E85, - 11502: 0x6DA7, - 11503: 0x5EFA, - 11504: 0x50F5, - 11505: 0x59DC, - 11506: 0x5C06, - 11507: 0x6D46, - 11508: 0x6C5F, - 11509: 0x7586, - 11510: 0x848B, - 11511: 0x6868, - 11512: 0x5956, - 11513: 0x8BB2, - 11514: 0x5320, - 11515: 0x9171, - 11516: 0x964D, - 11517: 0x8549, - 11518: 0x6912, - 11519: 0x7901, - 11520: 0x7126, - 11521: 0x80F6, - 11522: 0x4EA4, - 11523: 0x90CA, - 11524: 0x6D47, - 11525: 0x9A84, - 11526: 0x5A07, - 11527: 0x56BC, - 11528: 0x6405, - 11529: 0x94F0, - 11530: 0x77EB, - 11531: 0x4FA5, - 11532: 0x811A, - 11533: 0x72E1, - 11534: 0x89D2, - 11535: 0x997A, - 11536: 0x7F34, - 11537: 0x7EDE, - 11538: 0x527F, - 11539: 0x6559, - 11540: 0x9175, - 11541: 0x8F7F, - 11542: 0x8F83, - 11543: 0x53EB, - 11544: 0x7A96, - 11545: 0x63ED, - 11546: 0x63A5, - 11547: 0x7686, - 11548: 0x79F8, - 11549: 0x8857, - 11550: 0x9636, - 11551: 0x622A, - 11552: 0x52AB, - 11553: 0x8282, - 11554: 0x6854, - 11555: 0x6770, - 11556: 0x6377, - 11557: 0x776B, - 11558: 0x7AED, - 11559: 0x6D01, - 11560: 0x7ED3, - 11561: 0x89E3, - 11562: 0x59D0, - 11563: 0x6212, - 11564: 0x85C9, - 11565: 0x82A5, - 11566: 0x754C, - 11567: 0x501F, - 11568: 0x4ECB, - 11569: 0x75A5, - 11570: 0x8BEB, - 11571: 0x5C4A, - 11572: 0x5DFE, - 11573: 0x7B4B, - 11574: 0x65A4, - 11575: 0x91D1, - 11576: 0x4ECA, - 11577: 0x6D25, - 11578: 0x895F, - 11579: 0x7D27, - 11580: 0x9526, - 11581: 0x4EC5, - 11582: 0x8C28, - 11583: 0x8FDB, - 11584: 0x9773, - 11585: 0x664B, - 11586: 0x7981, - 11587: 0x8FD1, - 11588: 0x70EC, - 11589: 0x6D78, - 11590: 0x7D99, - 11591: 0x7D9A, - 11592: 0x7D9B, - 11593: 0x7D9C, - 11594: 0x7D9D, - 11595: 0x7D9E, - 11596: 0x7D9F, - 11597: 0x7DA0, - 11598: 0x7DA1, - 11599: 0x7DA2, - 11600: 0x7DA3, - 11601: 0x7DA4, - 11602: 0x7DA5, - 11603: 0x7DA7, - 11604: 0x7DA8, - 11605: 0x7DA9, - 11606: 0x7DAA, - 11607: 0x7DAB, - 11608: 0x7DAC, - 11609: 0x7DAD, - 11610: 0x7DAF, - 11611: 0x7DB0, - 11612: 0x7DB1, - 11613: 0x7DB2, - 11614: 0x7DB3, - 11615: 0x7DB4, - 11616: 0x7DB5, - 11617: 0x7DB6, - 11618: 0x7DB7, - 11619: 0x7DB8, - 11620: 0x7DB9, - 11621: 0x7DBA, - 11622: 0x7DBB, - 11623: 0x7DBC, - 11624: 0x7DBD, - 11625: 0x7DBE, - 11626: 0x7DBF, - 11627: 0x7DC0, - 11628: 0x7DC1, - 11629: 0x7DC2, - 11630: 0x7DC3, - 11631: 0x7DC4, - 11632: 0x7DC5, - 11633: 0x7DC6, - 11634: 0x7DC7, - 11635: 0x7DC8, - 11636: 0x7DC9, - 11637: 0x7DCA, - 11638: 0x7DCB, - 11639: 0x7DCC, - 11640: 0x7DCD, - 11641: 0x7DCE, - 11642: 0x7DCF, - 11643: 0x7DD0, - 11644: 0x7DD1, - 11645: 0x7DD2, - 11646: 0x7DD3, - 11647: 0x7DD4, - 11648: 0x7DD5, - 11649: 0x7DD6, - 11650: 0x7DD7, - 11651: 0x7DD8, - 11652: 0x7DD9, - 11653: 0x7DDA, - 11654: 0x7DDB, - 11655: 0x7DDC, - 11656: 0x7DDD, - 11657: 0x7DDE, - 11658: 0x7DDF, - 11659: 0x7DE0, - 11660: 0x7DE1, - 11661: 0x7DE2, - 11662: 0x7DE3, - 11663: 0x7DE4, - 11664: 0x7DE5, - 11665: 0x7DE6, - 11666: 0x7DE7, - 11667: 0x7DE8, - 11668: 0x7DE9, - 11669: 0x7DEA, - 11670: 0x7DEB, - 11671: 0x7DEC, - 11672: 0x7DED, - 11673: 0x7DEE, - 11674: 0x7DEF, - 11675: 0x7DF0, - 11676: 0x7DF1, - 11677: 0x7DF2, - 11678: 0x7DF3, - 11679: 0x7DF4, - 11680: 0x7DF5, - 11681: 0x7DF6, - 11682: 0x7DF7, - 11683: 0x7DF8, - 11684: 0x7DF9, - 11685: 0x7DFA, - 11686: 0x5C3D, - 11687: 0x52B2, - 11688: 0x8346, - 11689: 0x5162, - 11690: 0x830E, - 11691: 0x775B, - 11692: 0x6676, - 11693: 0x9CB8, - 11694: 0x4EAC, - 11695: 0x60CA, - 11696: 0x7CBE, - 11697: 0x7CB3, - 11698: 0x7ECF, - 11699: 0x4E95, - 11700: 0x8B66, - 11701: 0x666F, - 11702: 0x9888, - 11703: 0x9759, - 11704: 0x5883, - 11705: 0x656C, - 11706: 0x955C, - 11707: 0x5F84, - 11708: 0x75C9, - 11709: 0x9756, - 11710: 0x7ADF, - 11711: 0x7ADE, - 11712: 0x51C0, - 11713: 0x70AF, - 11714: 0x7A98, - 11715: 0x63EA, - 11716: 0x7A76, - 11717: 0x7EA0, - 11718: 0x7396, - 11719: 0x97ED, - 11720: 0x4E45, - 11721: 0x7078, - 11722: 0x4E5D, - 11723: 0x9152, - 11724: 0x53A9, - 11725: 0x6551, - 11726: 0x65E7, - 11727: 0x81FC, - 11728: 0x8205, - 11729: 0x548E, - 11730: 0x5C31, - 11731: 0x759A, - 11732: 0x97A0, - 11733: 0x62D8, - 11734: 0x72D9, - 11735: 0x75BD, - 11736: 0x5C45, - 11737: 0x9A79, - 11738: 0x83CA, - 11739: 0x5C40, - 11740: 0x5480, - 11741: 0x77E9, - 11742: 0x4E3E, - 11743: 0x6CAE, - 11744: 0x805A, - 11745: 0x62D2, - 11746: 0x636E, - 11747: 0x5DE8, - 11748: 0x5177, - 11749: 0x8DDD, - 11750: 0x8E1E, - 11751: 0x952F, - 11752: 0x4FF1, - 11753: 0x53E5, - 11754: 0x60E7, - 11755: 0x70AC, - 11756: 0x5267, - 11757: 0x6350, - 11758: 0x9E43, - 11759: 0x5A1F, - 11760: 0x5026, - 11761: 0x7737, - 11762: 0x5377, - 11763: 0x7EE2, - 11764: 0x6485, - 11765: 0x652B, - 11766: 0x6289, - 11767: 0x6398, - 11768: 0x5014, - 11769: 0x7235, - 11770: 0x89C9, - 11771: 0x51B3, - 11772: 0x8BC0, - 11773: 0x7EDD, - 11774: 0x5747, - 11775: 0x83CC, - 11776: 0x94A7, - 11777: 0x519B, - 11778: 0x541B, - 11779: 0x5CFB, - 11780: 0x7DFB, - 11781: 0x7DFC, - 11782: 0x7DFD, - 11783: 0x7DFE, - 11784: 0x7DFF, - 11785: 0x7E00, - 11786: 0x7E01, - 11787: 0x7E02, - 11788: 0x7E03, - 11789: 0x7E04, - 11790: 0x7E05, - 11791: 0x7E06, - 11792: 0x7E07, - 11793: 0x7E08, - 11794: 0x7E09, - 11795: 0x7E0A, - 11796: 0x7E0B, - 11797: 0x7E0C, - 11798: 0x7E0D, - 11799: 0x7E0E, - 11800: 0x7E0F, - 11801: 0x7E10, - 11802: 0x7E11, - 11803: 0x7E12, - 11804: 0x7E13, - 11805: 0x7E14, - 11806: 0x7E15, - 11807: 0x7E16, - 11808: 0x7E17, - 11809: 0x7E18, - 11810: 0x7E19, - 11811: 0x7E1A, - 11812: 0x7E1B, - 11813: 0x7E1C, - 11814: 0x7E1D, - 11815: 0x7E1E, - 11816: 0x7E1F, - 11817: 0x7E20, - 11818: 0x7E21, - 11819: 0x7E22, - 11820: 0x7E23, - 11821: 0x7E24, - 11822: 0x7E25, - 11823: 0x7E26, - 11824: 0x7E27, - 11825: 0x7E28, - 11826: 0x7E29, - 11827: 0x7E2A, - 11828: 0x7E2B, - 11829: 0x7E2C, - 11830: 0x7E2D, - 11831: 0x7E2E, - 11832: 0x7E2F, - 11833: 0x7E30, - 11834: 0x7E31, - 11835: 0x7E32, - 11836: 0x7E33, - 11837: 0x7E34, - 11838: 0x7E35, - 11839: 0x7E36, - 11840: 0x7E37, - 11841: 0x7E38, - 11842: 0x7E39, - 11843: 0x7E3A, - 11844: 0x7E3C, - 11845: 0x7E3D, - 11846: 0x7E3E, - 11847: 0x7E3F, - 11848: 0x7E40, - 11849: 0x7E42, - 11850: 0x7E43, - 11851: 0x7E44, - 11852: 0x7E45, - 11853: 0x7E46, - 11854: 0x7E48, - 11855: 0x7E49, - 11856: 0x7E4A, - 11857: 0x7E4B, - 11858: 0x7E4C, - 11859: 0x7E4D, - 11860: 0x7E4E, - 11861: 0x7E4F, - 11862: 0x7E50, - 11863: 0x7E51, - 11864: 0x7E52, - 11865: 0x7E53, - 11866: 0x7E54, - 11867: 0x7E55, - 11868: 0x7E56, - 11869: 0x7E57, - 11870: 0x7E58, - 11871: 0x7E59, - 11872: 0x7E5A, - 11873: 0x7E5B, - 11874: 0x7E5C, - 11875: 0x7E5D, - 11876: 0x4FCA, - 11877: 0x7AE3, - 11878: 0x6D5A, - 11879: 0x90E1, - 11880: 0x9A8F, - 11881: 0x5580, - 11882: 0x5496, - 11883: 0x5361, - 11884: 0x54AF, - 11885: 0x5F00, - 11886: 0x63E9, - 11887: 0x6977, - 11888: 0x51EF, - 11889: 0x6168, - 11890: 0x520A, - 11891: 0x582A, - 11892: 0x52D8, - 11893: 0x574E, - 11894: 0x780D, - 11895: 0x770B, - 11896: 0x5EB7, - 11897: 0x6177, - 11898: 0x7CE0, - 11899: 0x625B, - 11900: 0x6297, - 11901: 0x4EA2, - 11902: 0x7095, - 11903: 0x8003, - 11904: 0x62F7, - 11905: 0x70E4, - 11906: 0x9760, - 11907: 0x5777, - 11908: 0x82DB, - 11909: 0x67EF, - 11910: 0x68F5, - 11911: 0x78D5, - 11912: 0x9897, - 11913: 0x79D1, - 11914: 0x58F3, - 11915: 0x54B3, - 11916: 0x53EF, - 11917: 0x6E34, - 11918: 0x514B, - 11919: 0x523B, - 11920: 0x5BA2, - 11921: 0x8BFE, - 11922: 0x80AF, - 11923: 0x5543, - 11924: 0x57A6, - 11925: 0x6073, - 11926: 0x5751, - 11927: 0x542D, - 11928: 0x7A7A, - 11929: 0x6050, - 11930: 0x5B54, - 11931: 0x63A7, - 11932: 0x62A0, - 11933: 0x53E3, - 11934: 0x6263, - 11935: 0x5BC7, - 11936: 0x67AF, - 11937: 0x54ED, - 11938: 0x7A9F, - 11939: 0x82E6, - 11940: 0x9177, - 11941: 0x5E93, - 11942: 0x88E4, - 11943: 0x5938, - 11944: 0x57AE, - 11945: 0x630E, - 11946: 0x8DE8, - 11947: 0x80EF, - 11948: 0x5757, - 11949: 0x7B77, - 11950: 0x4FA9, - 11951: 0x5FEB, - 11952: 0x5BBD, - 11953: 0x6B3E, - 11954: 0x5321, - 11955: 0x7B50, - 11956: 0x72C2, - 11957: 0x6846, - 11958: 0x77FF, - 11959: 0x7736, - 11960: 0x65F7, - 11961: 0x51B5, - 11962: 0x4E8F, - 11963: 0x76D4, - 11964: 0x5CBF, - 11965: 0x7AA5, - 11966: 0x8475, - 11967: 0x594E, - 11968: 0x9B41, - 11969: 0x5080, - 11970: 0x7E5E, - 11971: 0x7E5F, - 11972: 0x7E60, - 11973: 0x7E61, - 11974: 0x7E62, - 11975: 0x7E63, - 11976: 0x7E64, - 11977: 0x7E65, - 11978: 0x7E66, - 11979: 0x7E67, - 11980: 0x7E68, - 11981: 0x7E69, - 11982: 0x7E6A, - 11983: 0x7E6B, - 11984: 0x7E6C, - 11985: 0x7E6D, - 11986: 0x7E6E, - 11987: 0x7E6F, - 11988: 0x7E70, - 11989: 0x7E71, - 11990: 0x7E72, - 11991: 0x7E73, - 11992: 0x7E74, - 11993: 0x7E75, - 11994: 0x7E76, - 11995: 0x7E77, - 11996: 0x7E78, - 11997: 0x7E79, - 11998: 0x7E7A, - 11999: 0x7E7B, - 12000: 0x7E7C, - 12001: 0x7E7D, - 12002: 0x7E7E, - 12003: 0x7E7F, - 12004: 0x7E80, - 12005: 0x7E81, - 12006: 0x7E83, - 12007: 0x7E84, - 12008: 0x7E85, - 12009: 0x7E86, - 12010: 0x7E87, - 12011: 0x7E88, - 12012: 0x7E89, - 12013: 0x7E8A, - 12014: 0x7E8B, - 12015: 0x7E8C, - 12016: 0x7E8D, - 12017: 0x7E8E, - 12018: 0x7E8F, - 12019: 0x7E90, - 12020: 0x7E91, - 12021: 0x7E92, - 12022: 0x7E93, - 12023: 0x7E94, - 12024: 0x7E95, - 12025: 0x7E96, - 12026: 0x7E97, - 12027: 0x7E98, - 12028: 0x7E99, - 12029: 0x7E9A, - 12030: 0x7E9C, - 12031: 0x7E9D, - 12032: 0x7E9E, - 12033: 0x7EAE, - 12034: 0x7EB4, - 12035: 0x7EBB, - 12036: 0x7EBC, - 12037: 0x7ED6, - 12038: 0x7EE4, - 12039: 0x7EEC, - 12040: 0x7EF9, - 12041: 0x7F0A, - 12042: 0x7F10, - 12043: 0x7F1E, - 12044: 0x7F37, - 12045: 0x7F39, - 12046: 0x7F3B, - 12047: 0x7F3C, - 12048: 0x7F3D, - 12049: 0x7F3E, - 12050: 0x7F3F, - 12051: 0x7F40, - 12052: 0x7F41, - 12053: 0x7F43, - 12054: 0x7F46, - 12055: 0x7F47, - 12056: 0x7F48, - 12057: 0x7F49, - 12058: 0x7F4A, - 12059: 0x7F4B, - 12060: 0x7F4C, - 12061: 0x7F4D, - 12062: 0x7F4E, - 12063: 0x7F4F, - 12064: 0x7F52, - 12065: 0x7F53, - 12066: 0x9988, - 12067: 0x6127, - 12068: 0x6E83, - 12069: 0x5764, - 12070: 0x6606, - 12071: 0x6346, - 12072: 0x56F0, - 12073: 0x62EC, - 12074: 0x6269, - 12075: 0x5ED3, - 12076: 0x9614, - 12077: 0x5783, - 12078: 0x62C9, - 12079: 0x5587, - 12080: 0x8721, - 12081: 0x814A, - 12082: 0x8FA3, - 12083: 0x5566, - 12084: 0x83B1, - 12085: 0x6765, - 12086: 0x8D56, - 12087: 0x84DD, - 12088: 0x5A6A, - 12089: 0x680F, - 12090: 0x62E6, - 12091: 0x7BEE, - 12092: 0x9611, - 12093: 0x5170, - 12094: 0x6F9C, - 12095: 0x8C30, - 12096: 0x63FD, - 12097: 0x89C8, - 12098: 0x61D2, - 12099: 0x7F06, - 12100: 0x70C2, - 12101: 0x6EE5, - 12102: 0x7405, - 12103: 0x6994, - 12104: 0x72FC, - 12105: 0x5ECA, - 12106: 0x90CE, - 12107: 0x6717, - 12108: 0x6D6A, - 12109: 0x635E, - 12110: 0x52B3, - 12111: 0x7262, - 12112: 0x8001, - 12113: 0x4F6C, - 12114: 0x59E5, - 12115: 0x916A, - 12116: 0x70D9, - 12117: 0x6D9D, - 12118: 0x52D2, - 12119: 0x4E50, - 12120: 0x96F7, - 12121: 0x956D, - 12122: 0x857E, - 12123: 0x78CA, - 12124: 0x7D2F, - 12125: 0x5121, - 12126: 0x5792, - 12127: 0x64C2, - 12128: 0x808B, - 12129: 0x7C7B, - 12130: 0x6CEA, - 12131: 0x68F1, - 12132: 0x695E, - 12133: 0x51B7, - 12134: 0x5398, - 12135: 0x68A8, - 12136: 0x7281, - 12137: 0x9ECE, - 12138: 0x7BF1, - 12139: 0x72F8, - 12140: 0x79BB, - 12141: 0x6F13, - 12142: 0x7406, - 12143: 0x674E, - 12144: 0x91CC, - 12145: 0x9CA4, - 12146: 0x793C, - 12147: 0x8389, - 12148: 0x8354, - 12149: 0x540F, - 12150: 0x6817, - 12151: 0x4E3D, - 12152: 0x5389, - 12153: 0x52B1, - 12154: 0x783E, - 12155: 0x5386, - 12156: 0x5229, - 12157: 0x5088, - 12158: 0x4F8B, - 12159: 0x4FD0, - 12160: 0x7F56, - 12161: 0x7F59, - 12162: 0x7F5B, - 12163: 0x7F5C, - 12164: 0x7F5D, - 12165: 0x7F5E, - 12166: 0x7F60, - 12167: 0x7F63, - 12168: 0x7F64, - 12169: 0x7F65, - 12170: 0x7F66, - 12171: 0x7F67, - 12172: 0x7F6B, - 12173: 0x7F6C, - 12174: 0x7F6D, - 12175: 0x7F6F, - 12176: 0x7F70, - 12177: 0x7F73, - 12178: 0x7F75, - 12179: 0x7F76, - 12180: 0x7F77, - 12181: 0x7F78, - 12182: 0x7F7A, - 12183: 0x7F7B, - 12184: 0x7F7C, - 12185: 0x7F7D, - 12186: 0x7F7F, - 12187: 0x7F80, - 12188: 0x7F82, - 12189: 0x7F83, - 12190: 0x7F84, - 12191: 0x7F85, - 12192: 0x7F86, - 12193: 0x7F87, - 12194: 0x7F88, - 12195: 0x7F89, - 12196: 0x7F8B, - 12197: 0x7F8D, - 12198: 0x7F8F, - 12199: 0x7F90, - 12200: 0x7F91, - 12201: 0x7F92, - 12202: 0x7F93, - 12203: 0x7F95, - 12204: 0x7F96, - 12205: 0x7F97, - 12206: 0x7F98, - 12207: 0x7F99, - 12208: 0x7F9B, - 12209: 0x7F9C, - 12210: 0x7FA0, - 12211: 0x7FA2, - 12212: 0x7FA3, - 12213: 0x7FA5, - 12214: 0x7FA6, - 12215: 0x7FA8, - 12216: 0x7FA9, - 12217: 0x7FAA, - 12218: 0x7FAB, - 12219: 0x7FAC, - 12220: 0x7FAD, - 12221: 0x7FAE, - 12222: 0x7FB1, - 12223: 0x7FB3, - 12224: 0x7FB4, - 12225: 0x7FB5, - 12226: 0x7FB6, - 12227: 0x7FB7, - 12228: 0x7FBA, - 12229: 0x7FBB, - 12230: 0x7FBE, - 12231: 0x7FC0, - 12232: 0x7FC2, - 12233: 0x7FC3, - 12234: 0x7FC4, - 12235: 0x7FC6, - 12236: 0x7FC7, - 12237: 0x7FC8, - 12238: 0x7FC9, - 12239: 0x7FCB, - 12240: 0x7FCD, - 12241: 0x7FCF, - 12242: 0x7FD0, - 12243: 0x7FD1, - 12244: 0x7FD2, - 12245: 0x7FD3, - 12246: 0x7FD6, - 12247: 0x7FD7, - 12248: 0x7FD9, - 12249: 0x7FDA, - 12250: 0x7FDB, - 12251: 0x7FDC, - 12252: 0x7FDD, - 12253: 0x7FDE, - 12254: 0x7FE2, - 12255: 0x7FE3, - 12256: 0x75E2, - 12257: 0x7ACB, - 12258: 0x7C92, - 12259: 0x6CA5, - 12260: 0x96B6, - 12261: 0x529B, - 12262: 0x7483, - 12263: 0x54E9, - 12264: 0x4FE9, - 12265: 0x8054, - 12266: 0x83B2, - 12267: 0x8FDE, - 12268: 0x9570, - 12269: 0x5EC9, - 12270: 0x601C, - 12271: 0x6D9F, - 12272: 0x5E18, - 12273: 0x655B, - 12274: 0x8138, - 12275: 0x94FE, - 12276: 0x604B, - 12277: 0x70BC, - 12278: 0x7EC3, - 12279: 0x7CAE, - 12280: 0x51C9, - 12281: 0x6881, - 12282: 0x7CB1, - 12283: 0x826F, - 12284: 0x4E24, - 12285: 0x8F86, - 12286: 0x91CF, - 12287: 0x667E, - 12288: 0x4EAE, - 12289: 0x8C05, - 12290: 0x64A9, - 12291: 0x804A, - 12292: 0x50DA, - 12293: 0x7597, - 12294: 0x71CE, - 12295: 0x5BE5, - 12296: 0x8FBD, - 12297: 0x6F66, - 12298: 0x4E86, - 12299: 0x6482, - 12300: 0x9563, - 12301: 0x5ED6, - 12302: 0x6599, - 12303: 0x5217, - 12304: 0x88C2, - 12305: 0x70C8, - 12306: 0x52A3, - 12307: 0x730E, - 12308: 0x7433, - 12309: 0x6797, - 12310: 0x78F7, - 12311: 0x9716, - 12312: 0x4E34, - 12313: 0x90BB, - 12314: 0x9CDE, - 12315: 0x6DCB, - 12316: 0x51DB, - 12317: 0x8D41, - 12318: 0x541D, - 12319: 0x62CE, - 12320: 0x73B2, - 12321: 0x83F1, - 12322: 0x96F6, - 12323: 0x9F84, - 12324: 0x94C3, - 12325: 0x4F36, - 12326: 0x7F9A, - 12327: 0x51CC, - 12328: 0x7075, - 12329: 0x9675, - 12330: 0x5CAD, - 12331: 0x9886, - 12332: 0x53E6, - 12333: 0x4EE4, - 12334: 0x6E9C, - 12335: 0x7409, - 12336: 0x69B4, - 12337: 0x786B, - 12338: 0x998F, - 12339: 0x7559, - 12340: 0x5218, - 12341: 0x7624, - 12342: 0x6D41, - 12343: 0x67F3, - 12344: 0x516D, - 12345: 0x9F99, - 12346: 0x804B, - 12347: 0x5499, - 12348: 0x7B3C, - 12349: 0x7ABF, - 12350: 0x7FE4, - 12351: 0x7FE7, - 12352: 0x7FE8, - 12353: 0x7FEA, - 12354: 0x7FEB, - 12355: 0x7FEC, - 12356: 0x7FED, - 12357: 0x7FEF, - 12358: 0x7FF2, - 12359: 0x7FF4, - 12360: 0x7FF5, - 12361: 0x7FF6, - 12362: 0x7FF7, - 12363: 0x7FF8, - 12364: 0x7FF9, - 12365: 0x7FFA, - 12366: 0x7FFD, - 12367: 0x7FFE, - 12368: 0x7FFF, - 12369: 0x8002, - 12370: 0x8007, - 12371: 0x8008, - 12372: 0x8009, - 12373: 0x800A, - 12374: 0x800E, - 12375: 0x800F, - 12376: 0x8011, - 12377: 0x8013, - 12378: 0x801A, - 12379: 0x801B, - 12380: 0x801D, - 12381: 0x801E, - 12382: 0x801F, - 12383: 0x8021, - 12384: 0x8023, - 12385: 0x8024, - 12386: 0x802B, - 12387: 0x802C, - 12388: 0x802D, - 12389: 0x802E, - 12390: 0x802F, - 12391: 0x8030, - 12392: 0x8032, - 12393: 0x8034, - 12394: 0x8039, - 12395: 0x803A, - 12396: 0x803C, - 12397: 0x803E, - 12398: 0x8040, - 12399: 0x8041, - 12400: 0x8044, - 12401: 0x8045, - 12402: 0x8047, - 12403: 0x8048, - 12404: 0x8049, - 12405: 0x804E, - 12406: 0x804F, - 12407: 0x8050, - 12408: 0x8051, - 12409: 0x8053, - 12410: 0x8055, - 12411: 0x8056, - 12412: 0x8057, - 12413: 0x8059, - 12414: 0x805B, - 12415: 0x805C, - 12416: 0x805D, - 12417: 0x805E, - 12418: 0x805F, - 12419: 0x8060, - 12420: 0x8061, - 12421: 0x8062, - 12422: 0x8063, - 12423: 0x8064, - 12424: 0x8065, - 12425: 0x8066, - 12426: 0x8067, - 12427: 0x8068, - 12428: 0x806B, - 12429: 0x806C, - 12430: 0x806D, - 12431: 0x806E, - 12432: 0x806F, - 12433: 0x8070, - 12434: 0x8072, - 12435: 0x8073, - 12436: 0x8074, - 12437: 0x8075, - 12438: 0x8076, - 12439: 0x8077, - 12440: 0x8078, - 12441: 0x8079, - 12442: 0x807A, - 12443: 0x807B, - 12444: 0x807C, - 12445: 0x807D, - 12446: 0x9686, - 12447: 0x5784, - 12448: 0x62E2, - 12449: 0x9647, - 12450: 0x697C, - 12451: 0x5A04, - 12452: 0x6402, - 12453: 0x7BD3, - 12454: 0x6F0F, - 12455: 0x964B, - 12456: 0x82A6, - 12457: 0x5362, - 12458: 0x9885, - 12459: 0x5E90, - 12460: 0x7089, - 12461: 0x63B3, - 12462: 0x5364, - 12463: 0x864F, - 12464: 0x9C81, - 12465: 0x9E93, - 12466: 0x788C, - 12467: 0x9732, - 12468: 0x8DEF, - 12469: 0x8D42, - 12470: 0x9E7F, - 12471: 0x6F5E, - 12472: 0x7984, - 12473: 0x5F55, - 12474: 0x9646, - 12475: 0x622E, - 12476: 0x9A74, - 12477: 0x5415, - 12478: 0x94DD, - 12479: 0x4FA3, - 12480: 0x65C5, - 12481: 0x5C65, - 12482: 0x5C61, - 12483: 0x7F15, - 12484: 0x8651, - 12485: 0x6C2F, - 12486: 0x5F8B, - 12487: 0x7387, - 12488: 0x6EE4, - 12489: 0x7EFF, - 12490: 0x5CE6, - 12491: 0x631B, - 12492: 0x5B6A, - 12493: 0x6EE6, - 12494: 0x5375, - 12495: 0x4E71, - 12496: 0x63A0, - 12497: 0x7565, - 12498: 0x62A1, - 12499: 0x8F6E, - 12500: 0x4F26, - 12501: 0x4ED1, - 12502: 0x6CA6, - 12503: 0x7EB6, - 12504: 0x8BBA, - 12505: 0x841D, - 12506: 0x87BA, - 12507: 0x7F57, - 12508: 0x903B, - 12509: 0x9523, - 12510: 0x7BA9, - 12511: 0x9AA1, - 12512: 0x88F8, - 12513: 0x843D, - 12514: 0x6D1B, - 12515: 0x9A86, - 12516: 0x7EDC, - 12517: 0x5988, - 12518: 0x9EBB, - 12519: 0x739B, - 12520: 0x7801, - 12521: 0x8682, - 12522: 0x9A6C, - 12523: 0x9A82, - 12524: 0x561B, - 12525: 0x5417, - 12526: 0x57CB, - 12527: 0x4E70, - 12528: 0x9EA6, - 12529: 0x5356, - 12530: 0x8FC8, - 12531: 0x8109, - 12532: 0x7792, - 12533: 0x9992, - 12534: 0x86EE, - 12535: 0x6EE1, - 12536: 0x8513, - 12537: 0x66FC, - 12538: 0x6162, - 12539: 0x6F2B, - 12540: 0x807E, - 12541: 0x8081, - 12542: 0x8082, - 12543: 0x8085, - 12544: 0x8088, - 12545: 0x808A, - 12546: 0x808D, - 12547: 0x808E, - 12548: 0x808F, - 12549: 0x8090, - 12550: 0x8091, - 12551: 0x8092, - 12552: 0x8094, - 12553: 0x8095, - 12554: 0x8097, - 12555: 0x8099, - 12556: 0x809E, - 12557: 0x80A3, - 12558: 0x80A6, - 12559: 0x80A7, - 12560: 0x80A8, - 12561: 0x80AC, - 12562: 0x80B0, - 12563: 0x80B3, - 12564: 0x80B5, - 12565: 0x80B6, - 12566: 0x80B8, - 12567: 0x80B9, - 12568: 0x80BB, - 12569: 0x80C5, - 12570: 0x80C7, - 12571: 0x80C8, - 12572: 0x80C9, - 12573: 0x80CA, - 12574: 0x80CB, - 12575: 0x80CF, - 12576: 0x80D0, - 12577: 0x80D1, - 12578: 0x80D2, - 12579: 0x80D3, - 12580: 0x80D4, - 12581: 0x80D5, - 12582: 0x80D8, - 12583: 0x80DF, - 12584: 0x80E0, - 12585: 0x80E2, - 12586: 0x80E3, - 12587: 0x80E6, - 12588: 0x80EE, - 12589: 0x80F5, - 12590: 0x80F7, - 12591: 0x80F9, - 12592: 0x80FB, - 12593: 0x80FE, - 12594: 0x80FF, - 12595: 0x8100, - 12596: 0x8101, - 12597: 0x8103, - 12598: 0x8104, - 12599: 0x8105, - 12600: 0x8107, - 12601: 0x8108, - 12602: 0x810B, - 12603: 0x810C, - 12604: 0x8115, - 12605: 0x8117, - 12606: 0x8119, - 12607: 0x811B, - 12608: 0x811C, - 12609: 0x811D, - 12610: 0x811F, - 12611: 0x8120, - 12612: 0x8121, - 12613: 0x8122, - 12614: 0x8123, - 12615: 0x8124, - 12616: 0x8125, - 12617: 0x8126, - 12618: 0x8127, - 12619: 0x8128, - 12620: 0x8129, - 12621: 0x812A, - 12622: 0x812B, - 12623: 0x812D, - 12624: 0x812E, - 12625: 0x8130, - 12626: 0x8133, - 12627: 0x8134, - 12628: 0x8135, - 12629: 0x8137, - 12630: 0x8139, - 12631: 0x813A, - 12632: 0x813B, - 12633: 0x813C, - 12634: 0x813D, - 12635: 0x813F, - 12636: 0x8C29, - 12637: 0x8292, - 12638: 0x832B, - 12639: 0x76F2, - 12640: 0x6C13, - 12641: 0x5FD9, - 12642: 0x83BD, - 12643: 0x732B, - 12644: 0x8305, - 12645: 0x951A, - 12646: 0x6BDB, - 12647: 0x77DB, - 12648: 0x94C6, - 12649: 0x536F, - 12650: 0x8302, - 12651: 0x5192, - 12652: 0x5E3D, - 12653: 0x8C8C, - 12654: 0x8D38, - 12655: 0x4E48, - 12656: 0x73AB, - 12657: 0x679A, - 12658: 0x6885, - 12659: 0x9176, - 12660: 0x9709, - 12661: 0x7164, - 12662: 0x6CA1, - 12663: 0x7709, - 12664: 0x5A92, - 12665: 0x9541, - 12666: 0x6BCF, - 12667: 0x7F8E, - 12668: 0x6627, - 12669: 0x5BD0, - 12670: 0x59B9, - 12671: 0x5A9A, - 12672: 0x95E8, - 12673: 0x95F7, - 12674: 0x4EEC, - 12675: 0x840C, - 12676: 0x8499, - 12677: 0x6AAC, - 12678: 0x76DF, - 12679: 0x9530, - 12680: 0x731B, - 12681: 0x68A6, - 12682: 0x5B5F, - 12683: 0x772F, - 12684: 0x919A, - 12685: 0x9761, - 12686: 0x7CDC, - 12687: 0x8FF7, - 12688: 0x8C1C, - 12689: 0x5F25, - 12690: 0x7C73, - 12691: 0x79D8, - 12692: 0x89C5, - 12693: 0x6CCC, - 12694: 0x871C, - 12695: 0x5BC6, - 12696: 0x5E42, - 12697: 0x68C9, - 12698: 0x7720, - 12699: 0x7EF5, - 12700: 0x5195, - 12701: 0x514D, - 12702: 0x52C9, - 12703: 0x5A29, - 12704: 0x7F05, - 12705: 0x9762, - 12706: 0x82D7, - 12707: 0x63CF, - 12708: 0x7784, - 12709: 0x85D0, - 12710: 0x79D2, - 12711: 0x6E3A, - 12712: 0x5E99, - 12713: 0x5999, - 12714: 0x8511, - 12715: 0x706D, - 12716: 0x6C11, - 12717: 0x62BF, - 12718: 0x76BF, - 12719: 0x654F, - 12720: 0x60AF, - 12721: 0x95FD, - 12722: 0x660E, - 12723: 0x879F, - 12724: 0x9E23, - 12725: 0x94ED, - 12726: 0x540D, - 12727: 0x547D, - 12728: 0x8C2C, - 12729: 0x6478, - 12730: 0x8140, - 12731: 0x8141, - 12732: 0x8142, - 12733: 0x8143, - 12734: 0x8144, - 12735: 0x8145, - 12736: 0x8147, - 12737: 0x8149, - 12738: 0x814D, - 12739: 0x814E, - 12740: 0x814F, - 12741: 0x8152, - 12742: 0x8156, - 12743: 0x8157, - 12744: 0x8158, - 12745: 0x815B, - 12746: 0x815C, - 12747: 0x815D, - 12748: 0x815E, - 12749: 0x815F, - 12750: 0x8161, - 12751: 0x8162, - 12752: 0x8163, - 12753: 0x8164, - 12754: 0x8166, - 12755: 0x8168, - 12756: 0x816A, - 12757: 0x816B, - 12758: 0x816C, - 12759: 0x816F, - 12760: 0x8172, - 12761: 0x8173, - 12762: 0x8175, - 12763: 0x8176, - 12764: 0x8177, - 12765: 0x8178, - 12766: 0x8181, - 12767: 0x8183, - 12768: 0x8184, - 12769: 0x8185, - 12770: 0x8186, - 12771: 0x8187, - 12772: 0x8189, - 12773: 0x818B, - 12774: 0x818C, - 12775: 0x818D, - 12776: 0x818E, - 12777: 0x8190, - 12778: 0x8192, - 12779: 0x8193, - 12780: 0x8194, - 12781: 0x8195, - 12782: 0x8196, - 12783: 0x8197, - 12784: 0x8199, - 12785: 0x819A, - 12786: 0x819E, - 12787: 0x819F, - 12788: 0x81A0, - 12789: 0x81A1, - 12790: 0x81A2, - 12791: 0x81A4, - 12792: 0x81A5, - 12793: 0x81A7, - 12794: 0x81A9, - 12795: 0x81AB, - 12796: 0x81AC, - 12797: 0x81AD, - 12798: 0x81AE, - 12799: 0x81AF, - 12800: 0x81B0, - 12801: 0x81B1, - 12802: 0x81B2, - 12803: 0x81B4, - 12804: 0x81B5, - 12805: 0x81B6, - 12806: 0x81B7, - 12807: 0x81B8, - 12808: 0x81B9, - 12809: 0x81BC, - 12810: 0x81BD, - 12811: 0x81BE, - 12812: 0x81BF, - 12813: 0x81C4, - 12814: 0x81C5, - 12815: 0x81C7, - 12816: 0x81C8, - 12817: 0x81C9, - 12818: 0x81CB, - 12819: 0x81CD, - 12820: 0x81CE, - 12821: 0x81CF, - 12822: 0x81D0, - 12823: 0x81D1, - 12824: 0x81D2, - 12825: 0x81D3, - 12826: 0x6479, - 12827: 0x8611, - 12828: 0x6A21, - 12829: 0x819C, - 12830: 0x78E8, - 12831: 0x6469, - 12832: 0x9B54, - 12833: 0x62B9, - 12834: 0x672B, - 12835: 0x83AB, - 12836: 0x58A8, - 12837: 0x9ED8, - 12838: 0x6CAB, - 12839: 0x6F20, - 12840: 0x5BDE, - 12841: 0x964C, - 12842: 0x8C0B, - 12843: 0x725F, - 12844: 0x67D0, - 12845: 0x62C7, - 12846: 0x7261, - 12847: 0x4EA9, - 12848: 0x59C6, - 12849: 0x6BCD, - 12850: 0x5893, - 12851: 0x66AE, - 12852: 0x5E55, - 12853: 0x52DF, - 12854: 0x6155, - 12855: 0x6728, - 12856: 0x76EE, - 12857: 0x7766, - 12858: 0x7267, - 12859: 0x7A46, - 12860: 0x62FF, - 12861: 0x54EA, - 12862: 0x5450, - 12863: 0x94A0, - 12864: 0x90A3, - 12865: 0x5A1C, - 12866: 0x7EB3, - 12867: 0x6C16, - 12868: 0x4E43, - 12869: 0x5976, - 12870: 0x8010, - 12871: 0x5948, - 12872: 0x5357, - 12873: 0x7537, - 12874: 0x96BE, - 12875: 0x56CA, - 12876: 0x6320, - 12877: 0x8111, - 12878: 0x607C, - 12879: 0x95F9, - 12880: 0x6DD6, - 12881: 0x5462, - 12882: 0x9981, - 12883: 0x5185, - 12884: 0x5AE9, - 12885: 0x80FD, - 12886: 0x59AE, - 12887: 0x9713, - 12888: 0x502A, - 12889: 0x6CE5, - 12890: 0x5C3C, - 12891: 0x62DF, - 12892: 0x4F60, - 12893: 0x533F, - 12894: 0x817B, - 12895: 0x9006, - 12896: 0x6EBA, - 12897: 0x852B, - 12898: 0x62C8, - 12899: 0x5E74, - 12900: 0x78BE, - 12901: 0x64B5, - 12902: 0x637B, - 12903: 0x5FF5, - 12904: 0x5A18, - 12905: 0x917F, - 12906: 0x9E1F, - 12907: 0x5C3F, - 12908: 0x634F, - 12909: 0x8042, - 12910: 0x5B7D, - 12911: 0x556E, - 12912: 0x954A, - 12913: 0x954D, - 12914: 0x6D85, - 12915: 0x60A8, - 12916: 0x67E0, - 12917: 0x72DE, - 12918: 0x51DD, - 12919: 0x5B81, - 12920: 0x81D4, - 12921: 0x81D5, - 12922: 0x81D6, - 12923: 0x81D7, - 12924: 0x81D8, - 12925: 0x81D9, - 12926: 0x81DA, - 12927: 0x81DB, - 12928: 0x81DC, - 12929: 0x81DD, - 12930: 0x81DE, - 12931: 0x81DF, - 12932: 0x81E0, - 12933: 0x81E1, - 12934: 0x81E2, - 12935: 0x81E4, - 12936: 0x81E5, - 12937: 0x81E6, - 12938: 0x81E8, - 12939: 0x81E9, - 12940: 0x81EB, - 12941: 0x81EE, - 12942: 0x81EF, - 12943: 0x81F0, - 12944: 0x81F1, - 12945: 0x81F2, - 12946: 0x81F5, - 12947: 0x81F6, - 12948: 0x81F7, - 12949: 0x81F8, - 12950: 0x81F9, - 12951: 0x81FA, - 12952: 0x81FD, - 12953: 0x81FF, - 12954: 0x8203, - 12955: 0x8207, - 12956: 0x8208, - 12957: 0x8209, - 12958: 0x820A, - 12959: 0x820B, - 12960: 0x820E, - 12961: 0x820F, - 12962: 0x8211, - 12963: 0x8213, - 12964: 0x8215, - 12965: 0x8216, - 12966: 0x8217, - 12967: 0x8218, - 12968: 0x8219, - 12969: 0x821A, - 12970: 0x821D, - 12971: 0x8220, - 12972: 0x8224, - 12973: 0x8225, - 12974: 0x8226, - 12975: 0x8227, - 12976: 0x8229, - 12977: 0x822E, - 12978: 0x8232, - 12979: 0x823A, - 12980: 0x823C, - 12981: 0x823D, - 12982: 0x823F, - 12983: 0x8240, - 12984: 0x8241, - 12985: 0x8242, - 12986: 0x8243, - 12987: 0x8245, - 12988: 0x8246, - 12989: 0x8248, - 12990: 0x824A, - 12991: 0x824C, - 12992: 0x824D, - 12993: 0x824E, - 12994: 0x8250, - 12995: 0x8251, - 12996: 0x8252, - 12997: 0x8253, - 12998: 0x8254, - 12999: 0x8255, - 13000: 0x8256, - 13001: 0x8257, - 13002: 0x8259, - 13003: 0x825B, - 13004: 0x825C, - 13005: 0x825D, - 13006: 0x825E, - 13007: 0x8260, - 13008: 0x8261, - 13009: 0x8262, - 13010: 0x8263, - 13011: 0x8264, - 13012: 0x8265, - 13013: 0x8266, - 13014: 0x8267, - 13015: 0x8269, - 13016: 0x62E7, - 13017: 0x6CDE, - 13018: 0x725B, - 13019: 0x626D, - 13020: 0x94AE, - 13021: 0x7EBD, - 13022: 0x8113, - 13023: 0x6D53, - 13024: 0x519C, - 13025: 0x5F04, - 13026: 0x5974, - 13027: 0x52AA, - 13028: 0x6012, - 13029: 0x5973, - 13030: 0x6696, - 13031: 0x8650, - 13032: 0x759F, - 13033: 0x632A, - 13034: 0x61E6, - 13035: 0x7CEF, - 13036: 0x8BFA, - 13037: 0x54E6, - 13038: 0x6B27, - 13039: 0x9E25, - 13040: 0x6BB4, - 13041: 0x85D5, - 13042: 0x5455, - 13043: 0x5076, - 13044: 0x6CA4, - 13045: 0x556A, - 13046: 0x8DB4, - 13047: 0x722C, - 13048: 0x5E15, - 13049: 0x6015, - 13050: 0x7436, - 13051: 0x62CD, - 13052: 0x6392, - 13053: 0x724C, - 13054: 0x5F98, - 13055: 0x6E43, - 13056: 0x6D3E, - 13057: 0x6500, - 13058: 0x6F58, - 13059: 0x76D8, - 13060: 0x78D0, - 13061: 0x76FC, - 13062: 0x7554, - 13063: 0x5224, - 13064: 0x53DB, - 13065: 0x4E53, - 13066: 0x5E9E, - 13067: 0x65C1, - 13068: 0x802A, - 13069: 0x80D6, - 13070: 0x629B, - 13071: 0x5486, - 13072: 0x5228, - 13073: 0x70AE, - 13074: 0x888D, - 13075: 0x8DD1, - 13076: 0x6CE1, - 13077: 0x5478, - 13078: 0x80DA, - 13079: 0x57F9, - 13080: 0x88F4, - 13081: 0x8D54, - 13082: 0x966A, - 13083: 0x914D, - 13084: 0x4F69, - 13085: 0x6C9B, - 13086: 0x55B7, - 13087: 0x76C6, - 13088: 0x7830, - 13089: 0x62A8, - 13090: 0x70F9, - 13091: 0x6F8E, - 13092: 0x5F6D, - 13093: 0x84EC, - 13094: 0x68DA, - 13095: 0x787C, - 13096: 0x7BF7, - 13097: 0x81A8, - 13098: 0x670B, - 13099: 0x9E4F, - 13100: 0x6367, - 13101: 0x78B0, - 13102: 0x576F, - 13103: 0x7812, - 13104: 0x9739, - 13105: 0x6279, - 13106: 0x62AB, - 13107: 0x5288, - 13108: 0x7435, - 13109: 0x6BD7, - 13110: 0x826A, - 13111: 0x826B, - 13112: 0x826C, - 13113: 0x826D, - 13114: 0x8271, - 13115: 0x8275, - 13116: 0x8276, - 13117: 0x8277, - 13118: 0x8278, - 13119: 0x827B, - 13120: 0x827C, - 13121: 0x8280, - 13122: 0x8281, - 13123: 0x8283, - 13124: 0x8285, - 13125: 0x8286, - 13126: 0x8287, - 13127: 0x8289, - 13128: 0x828C, - 13129: 0x8290, - 13130: 0x8293, - 13131: 0x8294, - 13132: 0x8295, - 13133: 0x8296, - 13134: 0x829A, - 13135: 0x829B, - 13136: 0x829E, - 13137: 0x82A0, - 13138: 0x82A2, - 13139: 0x82A3, - 13140: 0x82A7, - 13141: 0x82B2, - 13142: 0x82B5, - 13143: 0x82B6, - 13144: 0x82BA, - 13145: 0x82BB, - 13146: 0x82BC, - 13147: 0x82BF, - 13148: 0x82C0, - 13149: 0x82C2, - 13150: 0x82C3, - 13151: 0x82C5, - 13152: 0x82C6, - 13153: 0x82C9, - 13154: 0x82D0, - 13155: 0x82D6, - 13156: 0x82D9, - 13157: 0x82DA, - 13158: 0x82DD, - 13159: 0x82E2, - 13160: 0x82E7, - 13161: 0x82E8, - 13162: 0x82E9, - 13163: 0x82EA, - 13164: 0x82EC, - 13165: 0x82ED, - 13166: 0x82EE, - 13167: 0x82F0, - 13168: 0x82F2, - 13169: 0x82F3, - 13170: 0x82F5, - 13171: 0x82F6, - 13172: 0x82F8, - 13173: 0x82FA, - 13174: 0x82FC, - 13175: 0x82FD, - 13176: 0x82FE, - 13177: 0x82FF, - 13178: 0x8300, - 13179: 0x830A, - 13180: 0x830B, - 13181: 0x830D, - 13182: 0x8310, - 13183: 0x8312, - 13184: 0x8313, - 13185: 0x8316, - 13186: 0x8318, - 13187: 0x8319, - 13188: 0x831D, - 13189: 0x831E, - 13190: 0x831F, - 13191: 0x8320, - 13192: 0x8321, - 13193: 0x8322, - 13194: 0x8323, - 13195: 0x8324, - 13196: 0x8325, - 13197: 0x8326, - 13198: 0x8329, - 13199: 0x832A, - 13200: 0x832E, - 13201: 0x8330, - 13202: 0x8332, - 13203: 0x8337, - 13204: 0x833B, - 13205: 0x833D, - 13206: 0x5564, - 13207: 0x813E, - 13208: 0x75B2, - 13209: 0x76AE, - 13210: 0x5339, - 13211: 0x75DE, - 13212: 0x50FB, - 13213: 0x5C41, - 13214: 0x8B6C, - 13215: 0x7BC7, - 13216: 0x504F, - 13217: 0x7247, - 13218: 0x9A97, - 13219: 0x98D8, - 13220: 0x6F02, - 13221: 0x74E2, - 13222: 0x7968, - 13223: 0x6487, - 13224: 0x77A5, - 13225: 0x62FC, - 13226: 0x9891, - 13227: 0x8D2B, - 13228: 0x54C1, - 13229: 0x8058, - 13230: 0x4E52, - 13231: 0x576A, - 13232: 0x82F9, - 13233: 0x840D, - 13234: 0x5E73, - 13235: 0x51ED, - 13236: 0x74F6, - 13237: 0x8BC4, - 13238: 0x5C4F, - 13239: 0x5761, - 13240: 0x6CFC, - 13241: 0x9887, - 13242: 0x5A46, - 13243: 0x7834, - 13244: 0x9B44, - 13245: 0x8FEB, - 13246: 0x7C95, - 13247: 0x5256, - 13248: 0x6251, - 13249: 0x94FA, - 13250: 0x4EC6, - 13251: 0x8386, - 13252: 0x8461, - 13253: 0x83E9, - 13254: 0x84B2, - 13255: 0x57D4, - 13256: 0x6734, - 13257: 0x5703, - 13258: 0x666E, - 13259: 0x6D66, - 13260: 0x8C31, - 13261: 0x66DD, - 13262: 0x7011, - 13263: 0x671F, - 13264: 0x6B3A, - 13265: 0x6816, - 13266: 0x621A, - 13267: 0x59BB, - 13268: 0x4E03, - 13269: 0x51C4, - 13270: 0x6F06, - 13271: 0x67D2, - 13272: 0x6C8F, - 13273: 0x5176, - 13274: 0x68CB, - 13275: 0x5947, - 13276: 0x6B67, - 13277: 0x7566, - 13278: 0x5D0E, - 13279: 0x8110, - 13280: 0x9F50, - 13281: 0x65D7, - 13282: 0x7948, - 13283: 0x7941, - 13284: 0x9A91, - 13285: 0x8D77, - 13286: 0x5C82, - 13287: 0x4E5E, - 13288: 0x4F01, - 13289: 0x542F, - 13290: 0x5951, - 13291: 0x780C, - 13292: 0x5668, - 13293: 0x6C14, - 13294: 0x8FC4, - 13295: 0x5F03, - 13296: 0x6C7D, - 13297: 0x6CE3, - 13298: 0x8BAB, - 13299: 0x6390, - 13300: 0x833E, - 13301: 0x833F, - 13302: 0x8341, - 13303: 0x8342, - 13304: 0x8344, - 13305: 0x8345, - 13306: 0x8348, - 13307: 0x834A, - 13308: 0x834B, - 13309: 0x834C, - 13310: 0x834D, - 13311: 0x834E, - 13312: 0x8353, - 13313: 0x8355, - 13314: 0x8356, - 13315: 0x8357, - 13316: 0x8358, - 13317: 0x8359, - 13318: 0x835D, - 13319: 0x8362, - 13320: 0x8370, - 13321: 0x8371, - 13322: 0x8372, - 13323: 0x8373, - 13324: 0x8374, - 13325: 0x8375, - 13326: 0x8376, - 13327: 0x8379, - 13328: 0x837A, - 13329: 0x837E, - 13330: 0x837F, - 13331: 0x8380, - 13332: 0x8381, - 13333: 0x8382, - 13334: 0x8383, - 13335: 0x8384, - 13336: 0x8387, - 13337: 0x8388, - 13338: 0x838A, - 13339: 0x838B, - 13340: 0x838C, - 13341: 0x838D, - 13342: 0x838F, - 13343: 0x8390, - 13344: 0x8391, - 13345: 0x8394, - 13346: 0x8395, - 13347: 0x8396, - 13348: 0x8397, - 13349: 0x8399, - 13350: 0x839A, - 13351: 0x839D, - 13352: 0x839F, - 13353: 0x83A1, - 13354: 0x83A2, - 13355: 0x83A3, - 13356: 0x83A4, - 13357: 0x83A5, - 13358: 0x83A6, - 13359: 0x83A7, - 13360: 0x83AC, - 13361: 0x83AD, - 13362: 0x83AE, - 13363: 0x83AF, - 13364: 0x83B5, - 13365: 0x83BB, - 13366: 0x83BE, - 13367: 0x83BF, - 13368: 0x83C2, - 13369: 0x83C3, - 13370: 0x83C4, - 13371: 0x83C6, - 13372: 0x83C8, - 13373: 0x83C9, - 13374: 0x83CB, - 13375: 0x83CD, - 13376: 0x83CE, - 13377: 0x83D0, - 13378: 0x83D1, - 13379: 0x83D2, - 13380: 0x83D3, - 13381: 0x83D5, - 13382: 0x83D7, - 13383: 0x83D9, - 13384: 0x83DA, - 13385: 0x83DB, - 13386: 0x83DE, - 13387: 0x83E2, - 13388: 0x83E3, - 13389: 0x83E4, - 13390: 0x83E6, - 13391: 0x83E7, - 13392: 0x83E8, - 13393: 0x83EB, - 13394: 0x83EC, - 13395: 0x83ED, - 13396: 0x6070, - 13397: 0x6D3D, - 13398: 0x7275, - 13399: 0x6266, - 13400: 0x948E, - 13401: 0x94C5, - 13402: 0x5343, - 13403: 0x8FC1, - 13404: 0x7B7E, - 13405: 0x4EDF, - 13406: 0x8C26, - 13407: 0x4E7E, - 13408: 0x9ED4, - 13409: 0x94B1, - 13410: 0x94B3, - 13411: 0x524D, - 13412: 0x6F5C, - 13413: 0x9063, - 13414: 0x6D45, - 13415: 0x8C34, - 13416: 0x5811, - 13417: 0x5D4C, - 13418: 0x6B20, - 13419: 0x6B49, - 13420: 0x67AA, - 13421: 0x545B, - 13422: 0x8154, - 13423: 0x7F8C, - 13424: 0x5899, - 13425: 0x8537, - 13426: 0x5F3A, - 13427: 0x62A2, - 13428: 0x6A47, - 13429: 0x9539, - 13430: 0x6572, - 13431: 0x6084, - 13432: 0x6865, - 13433: 0x77A7, - 13434: 0x4E54, - 13435: 0x4FA8, - 13436: 0x5DE7, - 13437: 0x9798, - 13438: 0x64AC, - 13439: 0x7FD8, - 13440: 0x5CED, - 13441: 0x4FCF, - 13442: 0x7A8D, - 13443: 0x5207, - 13444: 0x8304, - 13445: 0x4E14, - 13446: 0x602F, - 13447: 0x7A83, - 13448: 0x94A6, - 13449: 0x4FB5, - 13450: 0x4EB2, - 13451: 0x79E6, - 13452: 0x7434, - 13453: 0x52E4, - 13454: 0x82B9, - 13455: 0x64D2, - 13456: 0x79BD, - 13457: 0x5BDD, - 13458: 0x6C81, - 13459: 0x9752, - 13460: 0x8F7B, - 13461: 0x6C22, - 13462: 0x503E, - 13463: 0x537F, - 13464: 0x6E05, - 13465: 0x64CE, - 13466: 0x6674, - 13467: 0x6C30, - 13468: 0x60C5, - 13469: 0x9877, - 13470: 0x8BF7, - 13471: 0x5E86, - 13472: 0x743C, - 13473: 0x7A77, - 13474: 0x79CB, - 13475: 0x4E18, - 13476: 0x90B1, - 13477: 0x7403, - 13478: 0x6C42, - 13479: 0x56DA, - 13480: 0x914B, - 13481: 0x6CC5, - 13482: 0x8D8B, - 13483: 0x533A, - 13484: 0x86C6, - 13485: 0x66F2, - 13486: 0x8EAF, - 13487: 0x5C48, - 13488: 0x9A71, - 13489: 0x6E20, - 13490: 0x83EE, - 13491: 0x83EF, - 13492: 0x83F3, - 13493: 0x83F4, - 13494: 0x83F5, - 13495: 0x83F6, - 13496: 0x83F7, - 13497: 0x83FA, - 13498: 0x83FB, - 13499: 0x83FC, - 13500: 0x83FE, - 13501: 0x83FF, - 13502: 0x8400, - 13503: 0x8402, - 13504: 0x8405, - 13505: 0x8407, - 13506: 0x8408, - 13507: 0x8409, - 13508: 0x840A, - 13509: 0x8410, - 13510: 0x8412, - 13511: 0x8413, - 13512: 0x8414, - 13513: 0x8415, - 13514: 0x8416, - 13515: 0x8417, - 13516: 0x8419, - 13517: 0x841A, - 13518: 0x841B, - 13519: 0x841E, - 13520: 0x841F, - 13521: 0x8420, - 13522: 0x8421, - 13523: 0x8422, - 13524: 0x8423, - 13525: 0x8429, - 13526: 0x842A, - 13527: 0x842B, - 13528: 0x842C, - 13529: 0x842D, - 13530: 0x842E, - 13531: 0x842F, - 13532: 0x8430, - 13533: 0x8432, - 13534: 0x8433, - 13535: 0x8434, - 13536: 0x8435, - 13537: 0x8436, - 13538: 0x8437, - 13539: 0x8439, - 13540: 0x843A, - 13541: 0x843B, - 13542: 0x843E, - 13543: 0x843F, - 13544: 0x8440, - 13545: 0x8441, - 13546: 0x8442, - 13547: 0x8443, - 13548: 0x8444, - 13549: 0x8445, - 13550: 0x8447, - 13551: 0x8448, - 13552: 0x8449, - 13553: 0x844A, - 13554: 0x844B, - 13555: 0x844C, - 13556: 0x844D, - 13557: 0x844E, - 13558: 0x844F, - 13559: 0x8450, - 13560: 0x8452, - 13561: 0x8453, - 13562: 0x8454, - 13563: 0x8455, - 13564: 0x8456, - 13565: 0x8458, - 13566: 0x845D, - 13567: 0x845E, - 13568: 0x845F, - 13569: 0x8460, - 13570: 0x8462, - 13571: 0x8464, - 13572: 0x8465, - 13573: 0x8466, - 13574: 0x8467, - 13575: 0x8468, - 13576: 0x846A, - 13577: 0x846E, - 13578: 0x846F, - 13579: 0x8470, - 13580: 0x8472, - 13581: 0x8474, - 13582: 0x8477, - 13583: 0x8479, - 13584: 0x847B, - 13585: 0x847C, - 13586: 0x53D6, - 13587: 0x5A36, - 13588: 0x9F8B, - 13589: 0x8DA3, - 13590: 0x53BB, - 13591: 0x5708, - 13592: 0x98A7, - 13593: 0x6743, - 13594: 0x919B, - 13595: 0x6CC9, - 13596: 0x5168, - 13597: 0x75CA, - 13598: 0x62F3, - 13599: 0x72AC, - 13600: 0x5238, - 13601: 0x529D, - 13602: 0x7F3A, - 13603: 0x7094, - 13604: 0x7638, - 13605: 0x5374, - 13606: 0x9E4A, - 13607: 0x69B7, - 13608: 0x786E, - 13609: 0x96C0, - 13610: 0x88D9, - 13611: 0x7FA4, - 13612: 0x7136, - 13613: 0x71C3, - 13614: 0x5189, - 13615: 0x67D3, - 13616: 0x74E4, - 13617: 0x58E4, - 13618: 0x6518, - 13619: 0x56B7, - 13620: 0x8BA9, - 13621: 0x9976, - 13622: 0x6270, - 13623: 0x7ED5, - 13624: 0x60F9, - 13625: 0x70ED, - 13626: 0x58EC, - 13627: 0x4EC1, - 13628: 0x4EBA, - 13629: 0x5FCD, - 13630: 0x97E7, - 13631: 0x4EFB, - 13632: 0x8BA4, - 13633: 0x5203, - 13634: 0x598A, - 13635: 0x7EAB, - 13636: 0x6254, - 13637: 0x4ECD, - 13638: 0x65E5, - 13639: 0x620E, - 13640: 0x8338, - 13641: 0x84C9, - 13642: 0x8363, - 13643: 0x878D, - 13644: 0x7194, - 13645: 0x6EB6, - 13646: 0x5BB9, - 13647: 0x7ED2, - 13648: 0x5197, - 13649: 0x63C9, - 13650: 0x67D4, - 13651: 0x8089, - 13652: 0x8339, - 13653: 0x8815, - 13654: 0x5112, - 13655: 0x5B7A, - 13656: 0x5982, - 13657: 0x8FB1, - 13658: 0x4E73, - 13659: 0x6C5D, - 13660: 0x5165, - 13661: 0x8925, - 13662: 0x8F6F, - 13663: 0x962E, - 13664: 0x854A, - 13665: 0x745E, - 13666: 0x9510, - 13667: 0x95F0, - 13668: 0x6DA6, - 13669: 0x82E5, - 13670: 0x5F31, - 13671: 0x6492, - 13672: 0x6D12, - 13673: 0x8428, - 13674: 0x816E, - 13675: 0x9CC3, - 13676: 0x585E, - 13677: 0x8D5B, - 13678: 0x4E09, - 13679: 0x53C1, - 13680: 0x847D, - 13681: 0x847E, - 13682: 0x847F, - 13683: 0x8480, - 13684: 0x8481, - 13685: 0x8483, - 13686: 0x8484, - 13687: 0x8485, - 13688: 0x8486, - 13689: 0x848A, - 13690: 0x848D, - 13691: 0x848F, - 13692: 0x8490, - 13693: 0x8491, - 13694: 0x8492, - 13695: 0x8493, - 13696: 0x8494, - 13697: 0x8495, - 13698: 0x8496, - 13699: 0x8498, - 13700: 0x849A, - 13701: 0x849B, - 13702: 0x849D, - 13703: 0x849E, - 13704: 0x849F, - 13705: 0x84A0, - 13706: 0x84A2, - 13707: 0x84A3, - 13708: 0x84A4, - 13709: 0x84A5, - 13710: 0x84A6, - 13711: 0x84A7, - 13712: 0x84A8, - 13713: 0x84A9, - 13714: 0x84AA, - 13715: 0x84AB, - 13716: 0x84AC, - 13717: 0x84AD, - 13718: 0x84AE, - 13719: 0x84B0, - 13720: 0x84B1, - 13721: 0x84B3, - 13722: 0x84B5, - 13723: 0x84B6, - 13724: 0x84B7, - 13725: 0x84BB, - 13726: 0x84BC, - 13727: 0x84BE, - 13728: 0x84C0, - 13729: 0x84C2, - 13730: 0x84C3, - 13731: 0x84C5, - 13732: 0x84C6, - 13733: 0x84C7, - 13734: 0x84C8, - 13735: 0x84CB, - 13736: 0x84CC, - 13737: 0x84CE, - 13738: 0x84CF, - 13739: 0x84D2, - 13740: 0x84D4, - 13741: 0x84D5, - 13742: 0x84D7, - 13743: 0x84D8, - 13744: 0x84D9, - 13745: 0x84DA, - 13746: 0x84DB, - 13747: 0x84DC, - 13748: 0x84DE, - 13749: 0x84E1, - 13750: 0x84E2, - 13751: 0x84E4, - 13752: 0x84E7, - 13753: 0x84E8, - 13754: 0x84E9, - 13755: 0x84EA, - 13756: 0x84EB, - 13757: 0x84ED, - 13758: 0x84EE, - 13759: 0x84EF, - 13760: 0x84F1, - 13761: 0x84F2, - 13762: 0x84F3, - 13763: 0x84F4, - 13764: 0x84F5, - 13765: 0x84F6, - 13766: 0x84F7, - 13767: 0x84F8, - 13768: 0x84F9, - 13769: 0x84FA, - 13770: 0x84FB, - 13771: 0x84FD, - 13772: 0x84FE, - 13773: 0x8500, - 13774: 0x8501, - 13775: 0x8502, - 13776: 0x4F1E, - 13777: 0x6563, - 13778: 0x6851, - 13779: 0x55D3, - 13780: 0x4E27, - 13781: 0x6414, - 13782: 0x9A9A, - 13783: 0x626B, - 13784: 0x5AC2, - 13785: 0x745F, - 13786: 0x8272, - 13787: 0x6DA9, - 13788: 0x68EE, - 13789: 0x50E7, - 13790: 0x838E, - 13791: 0x7802, - 13792: 0x6740, - 13793: 0x5239, - 13794: 0x6C99, - 13795: 0x7EB1, - 13796: 0x50BB, - 13797: 0x5565, - 13798: 0x715E, - 13799: 0x7B5B, - 13800: 0x6652, - 13801: 0x73CA, - 13802: 0x82EB, - 13803: 0x6749, - 13804: 0x5C71, - 13805: 0x5220, - 13806: 0x717D, - 13807: 0x886B, - 13808: 0x95EA, - 13809: 0x9655, - 13810: 0x64C5, - 13811: 0x8D61, - 13812: 0x81B3, - 13813: 0x5584, - 13814: 0x6C55, - 13815: 0x6247, - 13816: 0x7F2E, - 13817: 0x5892, - 13818: 0x4F24, - 13819: 0x5546, - 13820: 0x8D4F, - 13821: 0x664C, - 13822: 0x4E0A, - 13823: 0x5C1A, - 13824: 0x88F3, - 13825: 0x68A2, - 13826: 0x634E, - 13827: 0x7A0D, - 13828: 0x70E7, - 13829: 0x828D, - 13830: 0x52FA, - 13831: 0x97F6, - 13832: 0x5C11, - 13833: 0x54E8, - 13834: 0x90B5, - 13835: 0x7ECD, - 13836: 0x5962, - 13837: 0x8D4A, - 13838: 0x86C7, - 13839: 0x820C, - 13840: 0x820D, - 13841: 0x8D66, - 13842: 0x6444, - 13843: 0x5C04, - 13844: 0x6151, - 13845: 0x6D89, - 13846: 0x793E, - 13847: 0x8BBE, - 13848: 0x7837, - 13849: 0x7533, - 13850: 0x547B, - 13851: 0x4F38, - 13852: 0x8EAB, - 13853: 0x6DF1, - 13854: 0x5A20, - 13855: 0x7EC5, - 13856: 0x795E, - 13857: 0x6C88, - 13858: 0x5BA1, - 13859: 0x5A76, - 13860: 0x751A, - 13861: 0x80BE, - 13862: 0x614E, - 13863: 0x6E17, - 13864: 0x58F0, - 13865: 0x751F, - 13866: 0x7525, - 13867: 0x7272, - 13868: 0x5347, - 13869: 0x7EF3, - 13870: 0x8503, - 13871: 0x8504, - 13872: 0x8505, - 13873: 0x8506, - 13874: 0x8507, - 13875: 0x8508, - 13876: 0x8509, - 13877: 0x850A, - 13878: 0x850B, - 13879: 0x850D, - 13880: 0x850E, - 13881: 0x850F, - 13882: 0x8510, - 13883: 0x8512, - 13884: 0x8514, - 13885: 0x8515, - 13886: 0x8516, - 13887: 0x8518, - 13888: 0x8519, - 13889: 0x851B, - 13890: 0x851C, - 13891: 0x851D, - 13892: 0x851E, - 13893: 0x8520, - 13894: 0x8522, - 13895: 0x8523, - 13896: 0x8524, - 13897: 0x8525, - 13898: 0x8526, - 13899: 0x8527, - 13900: 0x8528, - 13901: 0x8529, - 13902: 0x852A, - 13903: 0x852D, - 13904: 0x852E, - 13905: 0x852F, - 13906: 0x8530, - 13907: 0x8531, - 13908: 0x8532, - 13909: 0x8533, - 13910: 0x8534, - 13911: 0x8535, - 13912: 0x8536, - 13913: 0x853E, - 13914: 0x853F, - 13915: 0x8540, - 13916: 0x8541, - 13917: 0x8542, - 13918: 0x8544, - 13919: 0x8545, - 13920: 0x8546, - 13921: 0x8547, - 13922: 0x854B, - 13923: 0x854C, - 13924: 0x854D, - 13925: 0x854E, - 13926: 0x854F, - 13927: 0x8550, - 13928: 0x8551, - 13929: 0x8552, - 13930: 0x8553, - 13931: 0x8554, - 13932: 0x8555, - 13933: 0x8557, - 13934: 0x8558, - 13935: 0x855A, - 13936: 0x855B, - 13937: 0x855C, - 13938: 0x855D, - 13939: 0x855F, - 13940: 0x8560, - 13941: 0x8561, - 13942: 0x8562, - 13943: 0x8563, - 13944: 0x8565, - 13945: 0x8566, - 13946: 0x8567, - 13947: 0x8569, - 13948: 0x856A, - 13949: 0x856B, - 13950: 0x856C, - 13951: 0x856D, - 13952: 0x856E, - 13953: 0x856F, - 13954: 0x8570, - 13955: 0x8571, - 13956: 0x8573, - 13957: 0x8575, - 13958: 0x8576, - 13959: 0x8577, - 13960: 0x8578, - 13961: 0x857C, - 13962: 0x857D, - 13963: 0x857F, - 13964: 0x8580, - 13965: 0x8581, - 13966: 0x7701, - 13967: 0x76DB, - 13968: 0x5269, - 13969: 0x80DC, - 13970: 0x5723, - 13971: 0x5E08, - 13972: 0x5931, - 13973: 0x72EE, - 13974: 0x65BD, - 13975: 0x6E7F, - 13976: 0x8BD7, - 13977: 0x5C38, - 13978: 0x8671, - 13979: 0x5341, - 13980: 0x77F3, - 13981: 0x62FE, - 13982: 0x65F6, - 13983: 0x4EC0, - 13984: 0x98DF, - 13985: 0x8680, - 13986: 0x5B9E, - 13987: 0x8BC6, - 13988: 0x53F2, - 13989: 0x77E2, - 13990: 0x4F7F, - 13991: 0x5C4E, - 13992: 0x9A76, - 13993: 0x59CB, - 13994: 0x5F0F, - 13995: 0x793A, - 13996: 0x58EB, - 13997: 0x4E16, - 13998: 0x67FF, - 13999: 0x4E8B, - 14000: 0x62ED, - 14001: 0x8A93, - 14002: 0x901D, - 14003: 0x52BF, - 14004: 0x662F, - 14005: 0x55DC, - 14006: 0x566C, - 14007: 0x9002, - 14008: 0x4ED5, - 14009: 0x4F8D, - 14010: 0x91CA, - 14011: 0x9970, - 14012: 0x6C0F, - 14013: 0x5E02, - 14014: 0x6043, - 14015: 0x5BA4, - 14016: 0x89C6, - 14017: 0x8BD5, - 14018: 0x6536, - 14019: 0x624B, - 14020: 0x9996, - 14021: 0x5B88, - 14022: 0x5BFF, - 14023: 0x6388, - 14024: 0x552E, - 14025: 0x53D7, - 14026: 0x7626, - 14027: 0x517D, - 14028: 0x852C, - 14029: 0x67A2, - 14030: 0x68B3, - 14031: 0x6B8A, - 14032: 0x6292, - 14033: 0x8F93, - 14034: 0x53D4, - 14035: 0x8212, - 14036: 0x6DD1, - 14037: 0x758F, - 14038: 0x4E66, - 14039: 0x8D4E, - 14040: 0x5B70, - 14041: 0x719F, - 14042: 0x85AF, - 14043: 0x6691, - 14044: 0x66D9, - 14045: 0x7F72, - 14046: 0x8700, - 14047: 0x9ECD, - 14048: 0x9F20, - 14049: 0x5C5E, - 14050: 0x672F, - 14051: 0x8FF0, - 14052: 0x6811, - 14053: 0x675F, - 14054: 0x620D, - 14055: 0x7AD6, - 14056: 0x5885, - 14057: 0x5EB6, - 14058: 0x6570, - 14059: 0x6F31, - 14060: 0x8582, - 14061: 0x8583, - 14062: 0x8586, - 14063: 0x8588, - 14064: 0x8589, - 14065: 0x858A, - 14066: 0x858B, - 14067: 0x858C, - 14068: 0x858D, - 14069: 0x858E, - 14070: 0x8590, - 14071: 0x8591, - 14072: 0x8592, - 14073: 0x8593, - 14074: 0x8594, - 14075: 0x8595, - 14076: 0x8596, - 14077: 0x8597, - 14078: 0x8598, - 14079: 0x8599, - 14080: 0x859A, - 14081: 0x859D, - 14082: 0x859E, - 14083: 0x859F, - 14084: 0x85A0, - 14085: 0x85A1, - 14086: 0x85A2, - 14087: 0x85A3, - 14088: 0x85A5, - 14089: 0x85A6, - 14090: 0x85A7, - 14091: 0x85A9, - 14092: 0x85AB, - 14093: 0x85AC, - 14094: 0x85AD, - 14095: 0x85B1, - 14096: 0x85B2, - 14097: 0x85B3, - 14098: 0x85B4, - 14099: 0x85B5, - 14100: 0x85B6, - 14101: 0x85B8, - 14102: 0x85BA, - 14103: 0x85BB, - 14104: 0x85BC, - 14105: 0x85BD, - 14106: 0x85BE, - 14107: 0x85BF, - 14108: 0x85C0, - 14109: 0x85C2, - 14110: 0x85C3, - 14111: 0x85C4, - 14112: 0x85C5, - 14113: 0x85C6, - 14114: 0x85C7, - 14115: 0x85C8, - 14116: 0x85CA, - 14117: 0x85CB, - 14118: 0x85CC, - 14119: 0x85CD, - 14120: 0x85CE, - 14121: 0x85D1, - 14122: 0x85D2, - 14123: 0x85D4, - 14124: 0x85D6, - 14125: 0x85D7, - 14126: 0x85D8, - 14127: 0x85D9, - 14128: 0x85DA, - 14129: 0x85DB, - 14130: 0x85DD, - 14131: 0x85DE, - 14132: 0x85DF, - 14133: 0x85E0, - 14134: 0x85E1, - 14135: 0x85E2, - 14136: 0x85E3, - 14137: 0x85E5, - 14138: 0x85E6, - 14139: 0x85E7, - 14140: 0x85E8, - 14141: 0x85EA, - 14142: 0x85EB, - 14143: 0x85EC, - 14144: 0x85ED, - 14145: 0x85EE, - 14146: 0x85EF, - 14147: 0x85F0, - 14148: 0x85F1, - 14149: 0x85F2, - 14150: 0x85F3, - 14151: 0x85F4, - 14152: 0x85F5, - 14153: 0x85F6, - 14154: 0x85F7, - 14155: 0x85F8, - 14156: 0x6055, - 14157: 0x5237, - 14158: 0x800D, - 14159: 0x6454, - 14160: 0x8870, - 14161: 0x7529, - 14162: 0x5E05, - 14163: 0x6813, - 14164: 0x62F4, - 14165: 0x971C, - 14166: 0x53CC, - 14167: 0x723D, - 14168: 0x8C01, - 14169: 0x6C34, - 14170: 0x7761, - 14171: 0x7A0E, - 14172: 0x542E, - 14173: 0x77AC, - 14174: 0x987A, - 14175: 0x821C, - 14176: 0x8BF4, - 14177: 0x7855, - 14178: 0x6714, - 14179: 0x70C1, - 14180: 0x65AF, - 14181: 0x6495, - 14182: 0x5636, - 14183: 0x601D, - 14184: 0x79C1, - 14185: 0x53F8, - 14186: 0x4E1D, - 14187: 0x6B7B, - 14188: 0x8086, - 14189: 0x5BFA, - 14190: 0x55E3, - 14191: 0x56DB, - 14192: 0x4F3A, - 14193: 0x4F3C, - 14194: 0x9972, - 14195: 0x5DF3, - 14196: 0x677E, - 14197: 0x8038, - 14198: 0x6002, - 14199: 0x9882, - 14200: 0x9001, - 14201: 0x5B8B, - 14202: 0x8BBC, - 14203: 0x8BF5, - 14204: 0x641C, - 14205: 0x8258, - 14206: 0x64DE, - 14207: 0x55FD, - 14208: 0x82CF, - 14209: 0x9165, - 14210: 0x4FD7, - 14211: 0x7D20, - 14212: 0x901F, - 14213: 0x7C9F, - 14214: 0x50F3, - 14215: 0x5851, - 14216: 0x6EAF, - 14217: 0x5BBF, - 14218: 0x8BC9, - 14219: 0x8083, - 14220: 0x9178, - 14221: 0x849C, - 14222: 0x7B97, - 14223: 0x867D, - 14224: 0x968B, - 14225: 0x968F, - 14226: 0x7EE5, - 14227: 0x9AD3, - 14228: 0x788E, - 14229: 0x5C81, - 14230: 0x7A57, - 14231: 0x9042, - 14232: 0x96A7, - 14233: 0x795F, - 14234: 0x5B59, - 14235: 0x635F, - 14236: 0x7B0B, - 14237: 0x84D1, - 14238: 0x68AD, - 14239: 0x5506, - 14240: 0x7F29, - 14241: 0x7410, - 14242: 0x7D22, - 14243: 0x9501, - 14244: 0x6240, - 14245: 0x584C, - 14246: 0x4ED6, - 14247: 0x5B83, - 14248: 0x5979, - 14249: 0x5854, - 14250: 0x85F9, - 14251: 0x85FA, - 14252: 0x85FC, - 14253: 0x85FD, - 14254: 0x85FE, - 14255: 0x8600, - 14256: 0x8601, - 14257: 0x8602, - 14258: 0x8603, - 14259: 0x8604, - 14260: 0x8606, - 14261: 0x8607, - 14262: 0x8608, - 14263: 0x8609, - 14264: 0x860A, - 14265: 0x860B, - 14266: 0x860C, - 14267: 0x860D, - 14268: 0x860E, - 14269: 0x860F, - 14270: 0x8610, - 14271: 0x8612, - 14272: 0x8613, - 14273: 0x8614, - 14274: 0x8615, - 14275: 0x8617, - 14276: 0x8618, - 14277: 0x8619, - 14278: 0x861A, - 14279: 0x861B, - 14280: 0x861C, - 14281: 0x861D, - 14282: 0x861E, - 14283: 0x861F, - 14284: 0x8620, - 14285: 0x8621, - 14286: 0x8622, - 14287: 0x8623, - 14288: 0x8624, - 14289: 0x8625, - 14290: 0x8626, - 14291: 0x8628, - 14292: 0x862A, - 14293: 0x862B, - 14294: 0x862C, - 14295: 0x862D, - 14296: 0x862E, - 14297: 0x862F, - 14298: 0x8630, - 14299: 0x8631, - 14300: 0x8632, - 14301: 0x8633, - 14302: 0x8634, - 14303: 0x8635, - 14304: 0x8636, - 14305: 0x8637, - 14306: 0x8639, - 14307: 0x863A, - 14308: 0x863B, - 14309: 0x863D, - 14310: 0x863E, - 14311: 0x863F, - 14312: 0x8640, - 14313: 0x8641, - 14314: 0x8642, - 14315: 0x8643, - 14316: 0x8644, - 14317: 0x8645, - 14318: 0x8646, - 14319: 0x8647, - 14320: 0x8648, - 14321: 0x8649, - 14322: 0x864A, - 14323: 0x864B, - 14324: 0x864C, - 14325: 0x8652, - 14326: 0x8653, - 14327: 0x8655, - 14328: 0x8656, - 14329: 0x8657, - 14330: 0x8658, - 14331: 0x8659, - 14332: 0x865B, - 14333: 0x865C, - 14334: 0x865D, - 14335: 0x865F, - 14336: 0x8660, - 14337: 0x8661, - 14338: 0x8663, - 14339: 0x8664, - 14340: 0x8665, - 14341: 0x8666, - 14342: 0x8667, - 14343: 0x8668, - 14344: 0x8669, - 14345: 0x866A, - 14346: 0x736D, - 14347: 0x631E, - 14348: 0x8E4B, - 14349: 0x8E0F, - 14350: 0x80CE, - 14351: 0x82D4, - 14352: 0x62AC, - 14353: 0x53F0, - 14354: 0x6CF0, - 14355: 0x915E, - 14356: 0x592A, - 14357: 0x6001, - 14358: 0x6C70, - 14359: 0x574D, - 14360: 0x644A, - 14361: 0x8D2A, - 14362: 0x762B, - 14363: 0x6EE9, - 14364: 0x575B, - 14365: 0x6A80, - 14366: 0x75F0, - 14367: 0x6F6D, - 14368: 0x8C2D, - 14369: 0x8C08, - 14370: 0x5766, - 14371: 0x6BEF, - 14372: 0x8892, - 14373: 0x78B3, - 14374: 0x63A2, - 14375: 0x53F9, - 14376: 0x70AD, - 14377: 0x6C64, - 14378: 0x5858, - 14379: 0x642A, - 14380: 0x5802, - 14381: 0x68E0, - 14382: 0x819B, - 14383: 0x5510, - 14384: 0x7CD6, - 14385: 0x5018, - 14386: 0x8EBA, - 14387: 0x6DCC, - 14388: 0x8D9F, - 14389: 0x70EB, - 14390: 0x638F, - 14391: 0x6D9B, - 14392: 0x6ED4, - 14393: 0x7EE6, - 14394: 0x8404, - 14395: 0x6843, - 14396: 0x9003, - 14397: 0x6DD8, - 14398: 0x9676, - 14399: 0x8BA8, - 14400: 0x5957, - 14401: 0x7279, - 14402: 0x85E4, - 14403: 0x817E, - 14404: 0x75BC, - 14405: 0x8A8A, - 14406: 0x68AF, - 14407: 0x5254, - 14408: 0x8E22, - 14409: 0x9511, - 14410: 0x63D0, - 14411: 0x9898, - 14412: 0x8E44, - 14413: 0x557C, - 14414: 0x4F53, - 14415: 0x66FF, - 14416: 0x568F, - 14417: 0x60D5, - 14418: 0x6D95, - 14419: 0x5243, - 14420: 0x5C49, - 14421: 0x5929, - 14422: 0x6DFB, - 14423: 0x586B, - 14424: 0x7530, - 14425: 0x751C, - 14426: 0x606C, - 14427: 0x8214, - 14428: 0x8146, - 14429: 0x6311, - 14430: 0x6761, - 14431: 0x8FE2, - 14432: 0x773A, - 14433: 0x8DF3, - 14434: 0x8D34, - 14435: 0x94C1, - 14436: 0x5E16, - 14437: 0x5385, - 14438: 0x542C, - 14439: 0x70C3, - 14440: 0x866D, - 14441: 0x866F, - 14442: 0x8670, - 14443: 0x8672, - 14444: 0x8673, - 14445: 0x8674, - 14446: 0x8675, - 14447: 0x8676, - 14448: 0x8677, - 14449: 0x8678, - 14450: 0x8683, - 14451: 0x8684, - 14452: 0x8685, - 14453: 0x8686, - 14454: 0x8687, - 14455: 0x8688, - 14456: 0x8689, - 14457: 0x868E, - 14458: 0x868F, - 14459: 0x8690, - 14460: 0x8691, - 14461: 0x8692, - 14462: 0x8694, - 14463: 0x8696, - 14464: 0x8697, - 14465: 0x8698, - 14466: 0x8699, - 14467: 0x869A, - 14468: 0x869B, - 14469: 0x869E, - 14470: 0x869F, - 14471: 0x86A0, - 14472: 0x86A1, - 14473: 0x86A2, - 14474: 0x86A5, - 14475: 0x86A6, - 14476: 0x86AB, - 14477: 0x86AD, - 14478: 0x86AE, - 14479: 0x86B2, - 14480: 0x86B3, - 14481: 0x86B7, - 14482: 0x86B8, - 14483: 0x86B9, - 14484: 0x86BB, - 14485: 0x86BC, - 14486: 0x86BD, - 14487: 0x86BE, - 14488: 0x86BF, - 14489: 0x86C1, - 14490: 0x86C2, - 14491: 0x86C3, - 14492: 0x86C5, - 14493: 0x86C8, - 14494: 0x86CC, - 14495: 0x86CD, - 14496: 0x86D2, - 14497: 0x86D3, - 14498: 0x86D5, - 14499: 0x86D6, - 14500: 0x86D7, - 14501: 0x86DA, - 14502: 0x86DC, - 14503: 0x86DD, - 14504: 0x86E0, - 14505: 0x86E1, - 14506: 0x86E2, - 14507: 0x86E3, - 14508: 0x86E5, - 14509: 0x86E6, - 14510: 0x86E7, - 14511: 0x86E8, - 14512: 0x86EA, - 14513: 0x86EB, - 14514: 0x86EC, - 14515: 0x86EF, - 14516: 0x86F5, - 14517: 0x86F6, - 14518: 0x86F7, - 14519: 0x86FA, - 14520: 0x86FB, - 14521: 0x86FC, - 14522: 0x86FD, - 14523: 0x86FF, - 14524: 0x8701, - 14525: 0x8704, - 14526: 0x8705, - 14527: 0x8706, - 14528: 0x870B, - 14529: 0x870C, - 14530: 0x870E, - 14531: 0x870F, - 14532: 0x8710, - 14533: 0x8711, - 14534: 0x8714, - 14535: 0x8716, - 14536: 0x6C40, - 14537: 0x5EF7, - 14538: 0x505C, - 14539: 0x4EAD, - 14540: 0x5EAD, - 14541: 0x633A, - 14542: 0x8247, - 14543: 0x901A, - 14544: 0x6850, - 14545: 0x916E, - 14546: 0x77B3, - 14547: 0x540C, - 14548: 0x94DC, - 14549: 0x5F64, - 14550: 0x7AE5, - 14551: 0x6876, - 14552: 0x6345, - 14553: 0x7B52, - 14554: 0x7EDF, - 14555: 0x75DB, - 14556: 0x5077, - 14557: 0x6295, - 14558: 0x5934, - 14559: 0x900F, - 14560: 0x51F8, - 14561: 0x79C3, - 14562: 0x7A81, - 14563: 0x56FE, - 14564: 0x5F92, - 14565: 0x9014, - 14566: 0x6D82, - 14567: 0x5C60, - 14568: 0x571F, - 14569: 0x5410, - 14570: 0x5154, - 14571: 0x6E4D, - 14572: 0x56E2, - 14573: 0x63A8, - 14574: 0x9893, - 14575: 0x817F, - 14576: 0x8715, - 14577: 0x892A, - 14578: 0x9000, - 14579: 0x541E, - 14580: 0x5C6F, - 14581: 0x81C0, - 14582: 0x62D6, - 14583: 0x6258, - 14584: 0x8131, - 14585: 0x9E35, - 14586: 0x9640, - 14587: 0x9A6E, - 14588: 0x9A7C, - 14589: 0x692D, - 14590: 0x59A5, - 14591: 0x62D3, - 14592: 0x553E, - 14593: 0x6316, - 14594: 0x54C7, - 14595: 0x86D9, - 14596: 0x6D3C, - 14597: 0x5A03, - 14598: 0x74E6, - 14599: 0x889C, - 14600: 0x6B6A, - 14601: 0x5916, - 14602: 0x8C4C, - 14603: 0x5F2F, - 14604: 0x6E7E, - 14605: 0x73A9, - 14606: 0x987D, - 14607: 0x4E38, - 14608: 0x70F7, - 14609: 0x5B8C, - 14610: 0x7897, - 14611: 0x633D, - 14612: 0x665A, - 14613: 0x7696, - 14614: 0x60CB, - 14615: 0x5B9B, - 14616: 0x5A49, - 14617: 0x4E07, - 14618: 0x8155, - 14619: 0x6C6A, - 14620: 0x738B, - 14621: 0x4EA1, - 14622: 0x6789, - 14623: 0x7F51, - 14624: 0x5F80, - 14625: 0x65FA, - 14626: 0x671B, - 14627: 0x5FD8, - 14628: 0x5984, - 14629: 0x5A01, - 14630: 0x8719, - 14631: 0x871B, - 14632: 0x871D, - 14633: 0x871F, - 14634: 0x8720, - 14635: 0x8724, - 14636: 0x8726, - 14637: 0x8727, - 14638: 0x8728, - 14639: 0x872A, - 14640: 0x872B, - 14641: 0x872C, - 14642: 0x872D, - 14643: 0x872F, - 14644: 0x8730, - 14645: 0x8732, - 14646: 0x8733, - 14647: 0x8735, - 14648: 0x8736, - 14649: 0x8738, - 14650: 0x8739, - 14651: 0x873A, - 14652: 0x873C, - 14653: 0x873D, - 14654: 0x8740, - 14655: 0x8741, - 14656: 0x8742, - 14657: 0x8743, - 14658: 0x8744, - 14659: 0x8745, - 14660: 0x8746, - 14661: 0x874A, - 14662: 0x874B, - 14663: 0x874D, - 14664: 0x874F, - 14665: 0x8750, - 14666: 0x8751, - 14667: 0x8752, - 14668: 0x8754, - 14669: 0x8755, - 14670: 0x8756, - 14671: 0x8758, - 14672: 0x875A, - 14673: 0x875B, - 14674: 0x875C, - 14675: 0x875D, - 14676: 0x875E, - 14677: 0x875F, - 14678: 0x8761, - 14679: 0x8762, - 14680: 0x8766, - 14681: 0x8767, - 14682: 0x8768, - 14683: 0x8769, - 14684: 0x876A, - 14685: 0x876B, - 14686: 0x876C, - 14687: 0x876D, - 14688: 0x876F, - 14689: 0x8771, - 14690: 0x8772, - 14691: 0x8773, - 14692: 0x8775, - 14693: 0x8777, - 14694: 0x8778, - 14695: 0x8779, - 14696: 0x877A, - 14697: 0x877F, - 14698: 0x8780, - 14699: 0x8781, - 14700: 0x8784, - 14701: 0x8786, - 14702: 0x8787, - 14703: 0x8789, - 14704: 0x878A, - 14705: 0x878C, - 14706: 0x878E, - 14707: 0x878F, - 14708: 0x8790, - 14709: 0x8791, - 14710: 0x8792, - 14711: 0x8794, - 14712: 0x8795, - 14713: 0x8796, - 14714: 0x8798, - 14715: 0x8799, - 14716: 0x879A, - 14717: 0x879B, - 14718: 0x879C, - 14719: 0x879D, - 14720: 0x879E, - 14721: 0x87A0, - 14722: 0x87A1, - 14723: 0x87A2, - 14724: 0x87A3, - 14725: 0x87A4, - 14726: 0x5DCD, - 14727: 0x5FAE, - 14728: 0x5371, - 14729: 0x97E6, - 14730: 0x8FDD, - 14731: 0x6845, - 14732: 0x56F4, - 14733: 0x552F, - 14734: 0x60DF, - 14735: 0x4E3A, - 14736: 0x6F4D, - 14737: 0x7EF4, - 14738: 0x82C7, - 14739: 0x840E, - 14740: 0x59D4, - 14741: 0x4F1F, - 14742: 0x4F2A, - 14743: 0x5C3E, - 14744: 0x7EAC, - 14745: 0x672A, - 14746: 0x851A, - 14747: 0x5473, - 14748: 0x754F, - 14749: 0x80C3, - 14750: 0x5582, - 14751: 0x9B4F, - 14752: 0x4F4D, - 14753: 0x6E2D, - 14754: 0x8C13, - 14755: 0x5C09, - 14756: 0x6170, - 14757: 0x536B, - 14758: 0x761F, - 14759: 0x6E29, - 14760: 0x868A, - 14761: 0x6587, - 14762: 0x95FB, - 14763: 0x7EB9, - 14764: 0x543B, - 14765: 0x7A33, - 14766: 0x7D0A, - 14767: 0x95EE, - 14768: 0x55E1, - 14769: 0x7FC1, - 14770: 0x74EE, - 14771: 0x631D, - 14772: 0x8717, - 14773: 0x6DA1, - 14774: 0x7A9D, - 14775: 0x6211, - 14776: 0x65A1, - 14777: 0x5367, - 14778: 0x63E1, - 14779: 0x6C83, - 14780: 0x5DEB, - 14781: 0x545C, - 14782: 0x94A8, - 14783: 0x4E4C, - 14784: 0x6C61, - 14785: 0x8BEC, - 14786: 0x5C4B, - 14787: 0x65E0, - 14788: 0x829C, - 14789: 0x68A7, - 14790: 0x543E, - 14791: 0x5434, - 14792: 0x6BCB, - 14793: 0x6B66, - 14794: 0x4E94, - 14795: 0x6342, - 14796: 0x5348, - 14797: 0x821E, - 14798: 0x4F0D, - 14799: 0x4FAE, - 14800: 0x575E, - 14801: 0x620A, - 14802: 0x96FE, - 14803: 0x6664, - 14804: 0x7269, - 14805: 0x52FF, - 14806: 0x52A1, - 14807: 0x609F, - 14808: 0x8BEF, - 14809: 0x6614, - 14810: 0x7199, - 14811: 0x6790, - 14812: 0x897F, - 14813: 0x7852, - 14814: 0x77FD, - 14815: 0x6670, - 14816: 0x563B, - 14817: 0x5438, - 14818: 0x9521, - 14819: 0x727A, - 14820: 0x87A5, - 14821: 0x87A6, - 14822: 0x87A7, - 14823: 0x87A9, - 14824: 0x87AA, - 14825: 0x87AE, - 14826: 0x87B0, - 14827: 0x87B1, - 14828: 0x87B2, - 14829: 0x87B4, - 14830: 0x87B6, - 14831: 0x87B7, - 14832: 0x87B8, - 14833: 0x87B9, - 14834: 0x87BB, - 14835: 0x87BC, - 14836: 0x87BE, - 14837: 0x87BF, - 14838: 0x87C1, - 14839: 0x87C2, - 14840: 0x87C3, - 14841: 0x87C4, - 14842: 0x87C5, - 14843: 0x87C7, - 14844: 0x87C8, - 14845: 0x87C9, - 14846: 0x87CC, - 14847: 0x87CD, - 14848: 0x87CE, - 14849: 0x87CF, - 14850: 0x87D0, - 14851: 0x87D4, - 14852: 0x87D5, - 14853: 0x87D6, - 14854: 0x87D7, - 14855: 0x87D8, - 14856: 0x87D9, - 14857: 0x87DA, - 14858: 0x87DC, - 14859: 0x87DD, - 14860: 0x87DE, - 14861: 0x87DF, - 14862: 0x87E1, - 14863: 0x87E2, - 14864: 0x87E3, - 14865: 0x87E4, - 14866: 0x87E6, - 14867: 0x87E7, - 14868: 0x87E8, - 14869: 0x87E9, - 14870: 0x87EB, - 14871: 0x87EC, - 14872: 0x87ED, - 14873: 0x87EF, - 14874: 0x87F0, - 14875: 0x87F1, - 14876: 0x87F2, - 14877: 0x87F3, - 14878: 0x87F4, - 14879: 0x87F5, - 14880: 0x87F6, - 14881: 0x87F7, - 14882: 0x87F8, - 14883: 0x87FA, - 14884: 0x87FB, - 14885: 0x87FC, - 14886: 0x87FD, - 14887: 0x87FF, - 14888: 0x8800, - 14889: 0x8801, - 14890: 0x8802, - 14891: 0x8804, - 14892: 0x8805, - 14893: 0x8806, - 14894: 0x8807, - 14895: 0x8808, - 14896: 0x8809, - 14897: 0x880B, - 14898: 0x880C, - 14899: 0x880D, - 14900: 0x880E, - 14901: 0x880F, - 14902: 0x8810, - 14903: 0x8811, - 14904: 0x8812, - 14905: 0x8814, - 14906: 0x8817, - 14907: 0x8818, - 14908: 0x8819, - 14909: 0x881A, - 14910: 0x881C, - 14911: 0x881D, - 14912: 0x881E, - 14913: 0x881F, - 14914: 0x8820, - 14915: 0x8823, - 14916: 0x7A00, - 14917: 0x606F, - 14918: 0x5E0C, - 14919: 0x6089, - 14920: 0x819D, - 14921: 0x5915, - 14922: 0x60DC, - 14923: 0x7184, - 14924: 0x70EF, - 14925: 0x6EAA, - 14926: 0x6C50, - 14927: 0x7280, - 14928: 0x6A84, - 14929: 0x88AD, - 14930: 0x5E2D, - 14931: 0x4E60, - 14932: 0x5AB3, - 14933: 0x559C, - 14934: 0x94E3, - 14935: 0x6D17, - 14936: 0x7CFB, - 14937: 0x9699, - 14938: 0x620F, - 14939: 0x7EC6, - 14940: 0x778E, - 14941: 0x867E, - 14942: 0x5323, - 14943: 0x971E, - 14944: 0x8F96, - 14945: 0x6687, - 14946: 0x5CE1, - 14947: 0x4FA0, - 14948: 0x72ED, - 14949: 0x4E0B, - 14950: 0x53A6, - 14951: 0x590F, - 14952: 0x5413, - 14953: 0x6380, - 14954: 0x9528, - 14955: 0x5148, - 14956: 0x4ED9, - 14957: 0x9C9C, - 14958: 0x7EA4, - 14959: 0x54B8, - 14960: 0x8D24, - 14961: 0x8854, - 14962: 0x8237, - 14963: 0x95F2, - 14964: 0x6D8E, - 14965: 0x5F26, - 14966: 0x5ACC, - 14967: 0x663E, - 14968: 0x9669, - 14969: 0x73B0, - 14970: 0x732E, - 14971: 0x53BF, - 14972: 0x817A, - 14973: 0x9985, - 14974: 0x7FA1, - 14975: 0x5BAA, - 14976: 0x9677, - 14977: 0x9650, - 14978: 0x7EBF, - 14979: 0x76F8, - 14980: 0x53A2, - 14981: 0x9576, - 14982: 0x9999, - 14983: 0x7BB1, - 14984: 0x8944, - 14985: 0x6E58, - 14986: 0x4E61, - 14987: 0x7FD4, - 14988: 0x7965, - 14989: 0x8BE6, - 14990: 0x60F3, - 14991: 0x54CD, - 14992: 0x4EAB, - 14993: 0x9879, - 14994: 0x5DF7, - 14995: 0x6A61, - 14996: 0x50CF, - 14997: 0x5411, - 14998: 0x8C61, - 14999: 0x8427, - 15000: 0x785D, - 15001: 0x9704, - 15002: 0x524A, - 15003: 0x54EE, - 15004: 0x56A3, - 15005: 0x9500, - 15006: 0x6D88, - 15007: 0x5BB5, - 15008: 0x6DC6, - 15009: 0x6653, - 15010: 0x8824, - 15011: 0x8825, - 15012: 0x8826, - 15013: 0x8827, - 15014: 0x8828, - 15015: 0x8829, - 15016: 0x882A, - 15017: 0x882B, - 15018: 0x882C, - 15019: 0x882D, - 15020: 0x882E, - 15021: 0x882F, - 15022: 0x8830, - 15023: 0x8831, - 15024: 0x8833, - 15025: 0x8834, - 15026: 0x8835, - 15027: 0x8836, - 15028: 0x8837, - 15029: 0x8838, - 15030: 0x883A, - 15031: 0x883B, - 15032: 0x883D, - 15033: 0x883E, - 15034: 0x883F, - 15035: 0x8841, - 15036: 0x8842, - 15037: 0x8843, - 15038: 0x8846, - 15039: 0x8847, - 15040: 0x8848, - 15041: 0x8849, - 15042: 0x884A, - 15043: 0x884B, - 15044: 0x884E, - 15045: 0x884F, - 15046: 0x8850, - 15047: 0x8851, - 15048: 0x8852, - 15049: 0x8853, - 15050: 0x8855, - 15051: 0x8856, - 15052: 0x8858, - 15053: 0x885A, - 15054: 0x885B, - 15055: 0x885C, - 15056: 0x885D, - 15057: 0x885E, - 15058: 0x885F, - 15059: 0x8860, - 15060: 0x8866, - 15061: 0x8867, - 15062: 0x886A, - 15063: 0x886D, - 15064: 0x886F, - 15065: 0x8871, - 15066: 0x8873, - 15067: 0x8874, - 15068: 0x8875, - 15069: 0x8876, - 15070: 0x8878, - 15071: 0x8879, - 15072: 0x887A, - 15073: 0x887B, - 15074: 0x887C, - 15075: 0x8880, - 15076: 0x8883, - 15077: 0x8886, - 15078: 0x8887, - 15079: 0x8889, - 15080: 0x888A, - 15081: 0x888C, - 15082: 0x888E, - 15083: 0x888F, - 15084: 0x8890, - 15085: 0x8891, - 15086: 0x8893, - 15087: 0x8894, - 15088: 0x8895, - 15089: 0x8897, - 15090: 0x8898, - 15091: 0x8899, - 15092: 0x889A, - 15093: 0x889B, - 15094: 0x889D, - 15095: 0x889E, - 15096: 0x889F, - 15097: 0x88A0, - 15098: 0x88A1, - 15099: 0x88A3, - 15100: 0x88A5, - 15101: 0x88A6, - 15102: 0x88A7, - 15103: 0x88A8, - 15104: 0x88A9, - 15105: 0x88AA, - 15106: 0x5C0F, - 15107: 0x5B5D, - 15108: 0x6821, - 15109: 0x8096, - 15110: 0x5578, - 15111: 0x7B11, - 15112: 0x6548, - 15113: 0x6954, - 15114: 0x4E9B, - 15115: 0x6B47, - 15116: 0x874E, - 15117: 0x978B, - 15118: 0x534F, - 15119: 0x631F, - 15120: 0x643A, - 15121: 0x90AA, - 15122: 0x659C, - 15123: 0x80C1, - 15124: 0x8C10, - 15125: 0x5199, - 15126: 0x68B0, - 15127: 0x5378, - 15128: 0x87F9, - 15129: 0x61C8, - 15130: 0x6CC4, - 15131: 0x6CFB, - 15132: 0x8C22, - 15133: 0x5C51, - 15134: 0x85AA, - 15135: 0x82AF, - 15136: 0x950C, - 15137: 0x6B23, - 15138: 0x8F9B, - 15139: 0x65B0, - 15140: 0x5FFB, - 15141: 0x5FC3, - 15142: 0x4FE1, - 15143: 0x8845, - 15144: 0x661F, - 15145: 0x8165, - 15146: 0x7329, - 15147: 0x60FA, - 15148: 0x5174, - 15149: 0x5211, - 15150: 0x578B, - 15151: 0x5F62, - 15152: 0x90A2, - 15153: 0x884C, - 15154: 0x9192, - 15155: 0x5E78, - 15156: 0x674F, - 15157: 0x6027, - 15158: 0x59D3, - 15159: 0x5144, - 15160: 0x51F6, - 15161: 0x80F8, - 15162: 0x5308, - 15163: 0x6C79, - 15164: 0x96C4, - 15165: 0x718A, - 15166: 0x4F11, - 15167: 0x4FEE, - 15168: 0x7F9E, - 15169: 0x673D, - 15170: 0x55C5, - 15171: 0x9508, - 15172: 0x79C0, - 15173: 0x8896, - 15174: 0x7EE3, - 15175: 0x589F, - 15176: 0x620C, - 15177: 0x9700, - 15178: 0x865A, - 15179: 0x5618, - 15180: 0x987B, - 15181: 0x5F90, - 15182: 0x8BB8, - 15183: 0x84C4, - 15184: 0x9157, - 15185: 0x53D9, - 15186: 0x65ED, - 15187: 0x5E8F, - 15188: 0x755C, - 15189: 0x6064, - 15190: 0x7D6E, - 15191: 0x5A7F, - 15192: 0x7EEA, - 15193: 0x7EED, - 15194: 0x8F69, - 15195: 0x55A7, - 15196: 0x5BA3, - 15197: 0x60AC, - 15198: 0x65CB, - 15199: 0x7384, - 15200: 0x88AC, - 15201: 0x88AE, - 15202: 0x88AF, - 15203: 0x88B0, - 15204: 0x88B2, - 15205: 0x88B3, - 15206: 0x88B4, - 15207: 0x88B5, - 15208: 0x88B6, - 15209: 0x88B8, - 15210: 0x88B9, - 15211: 0x88BA, - 15212: 0x88BB, - 15213: 0x88BD, - 15214: 0x88BE, - 15215: 0x88BF, - 15216: 0x88C0, - 15217: 0x88C3, - 15218: 0x88C4, - 15219: 0x88C7, - 15220: 0x88C8, - 15221: 0x88CA, - 15222: 0x88CB, - 15223: 0x88CC, - 15224: 0x88CD, - 15225: 0x88CF, - 15226: 0x88D0, - 15227: 0x88D1, - 15228: 0x88D3, - 15229: 0x88D6, - 15230: 0x88D7, - 15231: 0x88DA, - 15232: 0x88DB, - 15233: 0x88DC, - 15234: 0x88DD, - 15235: 0x88DE, - 15236: 0x88E0, - 15237: 0x88E1, - 15238: 0x88E6, - 15239: 0x88E7, - 15240: 0x88E9, - 15241: 0x88EA, - 15242: 0x88EB, - 15243: 0x88EC, - 15244: 0x88ED, - 15245: 0x88EE, - 15246: 0x88EF, - 15247: 0x88F2, - 15248: 0x88F5, - 15249: 0x88F6, - 15250: 0x88F7, - 15251: 0x88FA, - 15252: 0x88FB, - 15253: 0x88FD, - 15254: 0x88FF, - 15255: 0x8900, - 15256: 0x8901, - 15257: 0x8903, - 15258: 0x8904, - 15259: 0x8905, - 15260: 0x8906, - 15261: 0x8907, - 15262: 0x8908, - 15263: 0x8909, - 15264: 0x890B, - 15265: 0x890C, - 15266: 0x890D, - 15267: 0x890E, - 15268: 0x890F, - 15269: 0x8911, - 15270: 0x8914, - 15271: 0x8915, - 15272: 0x8916, - 15273: 0x8917, - 15274: 0x8918, - 15275: 0x891C, - 15276: 0x891D, - 15277: 0x891E, - 15278: 0x891F, - 15279: 0x8920, - 15280: 0x8922, - 15281: 0x8923, - 15282: 0x8924, - 15283: 0x8926, - 15284: 0x8927, - 15285: 0x8928, - 15286: 0x8929, - 15287: 0x892C, - 15288: 0x892D, - 15289: 0x892E, - 15290: 0x892F, - 15291: 0x8931, - 15292: 0x8932, - 15293: 0x8933, - 15294: 0x8935, - 15295: 0x8937, - 15296: 0x9009, - 15297: 0x7663, - 15298: 0x7729, - 15299: 0x7EDA, - 15300: 0x9774, - 15301: 0x859B, - 15302: 0x5B66, - 15303: 0x7A74, - 15304: 0x96EA, - 15305: 0x8840, - 15306: 0x52CB, - 15307: 0x718F, - 15308: 0x5FAA, - 15309: 0x65EC, - 15310: 0x8BE2, - 15311: 0x5BFB, - 15312: 0x9A6F, - 15313: 0x5DE1, - 15314: 0x6B89, - 15315: 0x6C5B, - 15316: 0x8BAD, - 15317: 0x8BAF, - 15318: 0x900A, - 15319: 0x8FC5, - 15320: 0x538B, - 15321: 0x62BC, - 15322: 0x9E26, - 15323: 0x9E2D, - 15324: 0x5440, - 15325: 0x4E2B, - 15326: 0x82BD, - 15327: 0x7259, - 15328: 0x869C, - 15329: 0x5D16, - 15330: 0x8859, - 15331: 0x6DAF, - 15332: 0x96C5, - 15333: 0x54D1, - 15334: 0x4E9A, - 15335: 0x8BB6, - 15336: 0x7109, - 15337: 0x54BD, - 15338: 0x9609, - 15339: 0x70DF, - 15340: 0x6DF9, - 15341: 0x76D0, - 15342: 0x4E25, - 15343: 0x7814, - 15344: 0x8712, - 15345: 0x5CA9, - 15346: 0x5EF6, - 15347: 0x8A00, - 15348: 0x989C, - 15349: 0x960E, - 15350: 0x708E, - 15351: 0x6CBF, - 15352: 0x5944, - 15353: 0x63A9, - 15354: 0x773C, - 15355: 0x884D, - 15356: 0x6F14, - 15357: 0x8273, - 15358: 0x5830, - 15359: 0x71D5, - 15360: 0x538C, - 15361: 0x781A, - 15362: 0x96C1, - 15363: 0x5501, - 15364: 0x5F66, - 15365: 0x7130, - 15366: 0x5BB4, - 15367: 0x8C1A, - 15368: 0x9A8C, - 15369: 0x6B83, - 15370: 0x592E, - 15371: 0x9E2F, - 15372: 0x79E7, - 15373: 0x6768, - 15374: 0x626C, - 15375: 0x4F6F, - 15376: 0x75A1, - 15377: 0x7F8A, - 15378: 0x6D0B, - 15379: 0x9633, - 15380: 0x6C27, - 15381: 0x4EF0, - 15382: 0x75D2, - 15383: 0x517B, - 15384: 0x6837, - 15385: 0x6F3E, - 15386: 0x9080, - 15387: 0x8170, - 15388: 0x5996, - 15389: 0x7476, - 15390: 0x8938, - 15391: 0x8939, - 15392: 0x893A, - 15393: 0x893B, - 15394: 0x893C, - 15395: 0x893D, - 15396: 0x893E, - 15397: 0x893F, - 15398: 0x8940, - 15399: 0x8942, - 15400: 0x8943, - 15401: 0x8945, - 15402: 0x8946, - 15403: 0x8947, - 15404: 0x8948, - 15405: 0x8949, - 15406: 0x894A, - 15407: 0x894B, - 15408: 0x894C, - 15409: 0x894D, - 15410: 0x894E, - 15411: 0x894F, - 15412: 0x8950, - 15413: 0x8951, - 15414: 0x8952, - 15415: 0x8953, - 15416: 0x8954, - 15417: 0x8955, - 15418: 0x8956, - 15419: 0x8957, - 15420: 0x8958, - 15421: 0x8959, - 15422: 0x895A, - 15423: 0x895B, - 15424: 0x895C, - 15425: 0x895D, - 15426: 0x8960, - 15427: 0x8961, - 15428: 0x8962, - 15429: 0x8963, - 15430: 0x8964, - 15431: 0x8965, - 15432: 0x8967, - 15433: 0x8968, - 15434: 0x8969, - 15435: 0x896A, - 15436: 0x896B, - 15437: 0x896C, - 15438: 0x896D, - 15439: 0x896E, - 15440: 0x896F, - 15441: 0x8970, - 15442: 0x8971, - 15443: 0x8972, - 15444: 0x8973, - 15445: 0x8974, - 15446: 0x8975, - 15447: 0x8976, - 15448: 0x8977, - 15449: 0x8978, - 15450: 0x8979, - 15451: 0x897A, - 15452: 0x897C, - 15453: 0x897D, - 15454: 0x897E, - 15455: 0x8980, - 15456: 0x8982, - 15457: 0x8984, - 15458: 0x8985, - 15459: 0x8987, - 15460: 0x8988, - 15461: 0x8989, - 15462: 0x898A, - 15463: 0x898B, - 15464: 0x898C, - 15465: 0x898D, - 15466: 0x898E, - 15467: 0x898F, - 15468: 0x8990, - 15469: 0x8991, - 15470: 0x8992, - 15471: 0x8993, - 15472: 0x8994, - 15473: 0x8995, - 15474: 0x8996, - 15475: 0x8997, - 15476: 0x8998, - 15477: 0x8999, - 15478: 0x899A, - 15479: 0x899B, - 15480: 0x899C, - 15481: 0x899D, - 15482: 0x899E, - 15483: 0x899F, - 15484: 0x89A0, - 15485: 0x89A1, - 15486: 0x6447, - 15487: 0x5C27, - 15488: 0x9065, - 15489: 0x7A91, - 15490: 0x8C23, - 15491: 0x59DA, - 15492: 0x54AC, - 15493: 0x8200, - 15494: 0x836F, - 15495: 0x8981, - 15496: 0x8000, - 15497: 0x6930, - 15498: 0x564E, - 15499: 0x8036, - 15500: 0x7237, - 15501: 0x91CE, - 15502: 0x51B6, - 15503: 0x4E5F, - 15504: 0x9875, - 15505: 0x6396, - 15506: 0x4E1A, - 15507: 0x53F6, - 15508: 0x66F3, - 15509: 0x814B, - 15510: 0x591C, - 15511: 0x6DB2, - 15512: 0x4E00, - 15513: 0x58F9, - 15514: 0x533B, - 15515: 0x63D6, - 15516: 0x94F1, - 15517: 0x4F9D, - 15518: 0x4F0A, - 15519: 0x8863, - 15520: 0x9890, - 15521: 0x5937, - 15522: 0x9057, - 15523: 0x79FB, - 15524: 0x4EEA, - 15525: 0x80F0, - 15526: 0x7591, - 15527: 0x6C82, - 15528: 0x5B9C, - 15529: 0x59E8, - 15530: 0x5F5D, - 15531: 0x6905, - 15532: 0x8681, - 15533: 0x501A, - 15534: 0x5DF2, - 15535: 0x4E59, - 15536: 0x77E3, - 15537: 0x4EE5, - 15538: 0x827A, - 15539: 0x6291, - 15540: 0x6613, - 15541: 0x9091, - 15542: 0x5C79, - 15543: 0x4EBF, - 15544: 0x5F79, - 15545: 0x81C6, - 15546: 0x9038, - 15547: 0x8084, - 15548: 0x75AB, - 15549: 0x4EA6, - 15550: 0x88D4, - 15551: 0x610F, - 15552: 0x6BC5, - 15553: 0x5FC6, - 15554: 0x4E49, - 15555: 0x76CA, - 15556: 0x6EA2, - 15557: 0x8BE3, - 15558: 0x8BAE, - 15559: 0x8C0A, - 15560: 0x8BD1, - 15561: 0x5F02, - 15562: 0x7FFC, - 15563: 0x7FCC, - 15564: 0x7ECE, - 15565: 0x8335, - 15566: 0x836B, - 15567: 0x56E0, - 15568: 0x6BB7, - 15569: 0x97F3, - 15570: 0x9634, - 15571: 0x59FB, - 15572: 0x541F, - 15573: 0x94F6, - 15574: 0x6DEB, - 15575: 0x5BC5, - 15576: 0x996E, - 15577: 0x5C39, - 15578: 0x5F15, - 15579: 0x9690, - 15580: 0x89A2, - 15581: 0x89A3, - 15582: 0x89A4, - 15583: 0x89A5, - 15584: 0x89A6, - 15585: 0x89A7, - 15586: 0x89A8, - 15587: 0x89A9, - 15588: 0x89AA, - 15589: 0x89AB, - 15590: 0x89AC, - 15591: 0x89AD, - 15592: 0x89AE, - 15593: 0x89AF, - 15594: 0x89B0, - 15595: 0x89B1, - 15596: 0x89B2, - 15597: 0x89B3, - 15598: 0x89B4, - 15599: 0x89B5, - 15600: 0x89B6, - 15601: 0x89B7, - 15602: 0x89B8, - 15603: 0x89B9, - 15604: 0x89BA, - 15605: 0x89BB, - 15606: 0x89BC, - 15607: 0x89BD, - 15608: 0x89BE, - 15609: 0x89BF, - 15610: 0x89C0, - 15611: 0x89C3, - 15612: 0x89CD, - 15613: 0x89D3, - 15614: 0x89D4, - 15615: 0x89D5, - 15616: 0x89D7, - 15617: 0x89D8, - 15618: 0x89D9, - 15619: 0x89DB, - 15620: 0x89DD, - 15621: 0x89DF, - 15622: 0x89E0, - 15623: 0x89E1, - 15624: 0x89E2, - 15625: 0x89E4, - 15626: 0x89E7, - 15627: 0x89E8, - 15628: 0x89E9, - 15629: 0x89EA, - 15630: 0x89EC, - 15631: 0x89ED, - 15632: 0x89EE, - 15633: 0x89F0, - 15634: 0x89F1, - 15635: 0x89F2, - 15636: 0x89F4, - 15637: 0x89F5, - 15638: 0x89F6, - 15639: 0x89F7, - 15640: 0x89F8, - 15641: 0x89F9, - 15642: 0x89FA, - 15643: 0x89FB, - 15644: 0x89FC, - 15645: 0x89FD, - 15646: 0x89FE, - 15647: 0x89FF, - 15648: 0x8A01, - 15649: 0x8A02, - 15650: 0x8A03, - 15651: 0x8A04, - 15652: 0x8A05, - 15653: 0x8A06, - 15654: 0x8A08, - 15655: 0x8A09, - 15656: 0x8A0A, - 15657: 0x8A0B, - 15658: 0x8A0C, - 15659: 0x8A0D, - 15660: 0x8A0E, - 15661: 0x8A0F, - 15662: 0x8A10, - 15663: 0x8A11, - 15664: 0x8A12, - 15665: 0x8A13, - 15666: 0x8A14, - 15667: 0x8A15, - 15668: 0x8A16, - 15669: 0x8A17, - 15670: 0x8A18, - 15671: 0x8A19, - 15672: 0x8A1A, - 15673: 0x8A1B, - 15674: 0x8A1C, - 15675: 0x8A1D, - 15676: 0x5370, - 15677: 0x82F1, - 15678: 0x6A31, - 15679: 0x5A74, - 15680: 0x9E70, - 15681: 0x5E94, - 15682: 0x7F28, - 15683: 0x83B9, - 15684: 0x8424, - 15685: 0x8425, - 15686: 0x8367, - 15687: 0x8747, - 15688: 0x8FCE, - 15689: 0x8D62, - 15690: 0x76C8, - 15691: 0x5F71, - 15692: 0x9896, - 15693: 0x786C, - 15694: 0x6620, - 15695: 0x54DF, - 15696: 0x62E5, - 15697: 0x4F63, - 15698: 0x81C3, - 15699: 0x75C8, - 15700: 0x5EB8, - 15701: 0x96CD, - 15702: 0x8E0A, - 15703: 0x86F9, - 15704: 0x548F, - 15705: 0x6CF3, - 15706: 0x6D8C, - 15707: 0x6C38, - 15708: 0x607F, - 15709: 0x52C7, - 15710: 0x7528, - 15711: 0x5E7D, - 15712: 0x4F18, - 15713: 0x60A0, - 15714: 0x5FE7, - 15715: 0x5C24, - 15716: 0x7531, - 15717: 0x90AE, - 15718: 0x94C0, - 15719: 0x72B9, - 15720: 0x6CB9, - 15721: 0x6E38, - 15722: 0x9149, - 15723: 0x6709, - 15724: 0x53CB, - 15725: 0x53F3, - 15726: 0x4F51, - 15727: 0x91C9, - 15728: 0x8BF1, - 15729: 0x53C8, - 15730: 0x5E7C, - 15731: 0x8FC2, - 15732: 0x6DE4, - 15733: 0x4E8E, - 15734: 0x76C2, - 15735: 0x6986, - 15736: 0x865E, - 15737: 0x611A, - 15738: 0x8206, - 15739: 0x4F59, - 15740: 0x4FDE, - 15741: 0x903E, - 15742: 0x9C7C, - 15743: 0x6109, - 15744: 0x6E1D, - 15745: 0x6E14, - 15746: 0x9685, - 15747: 0x4E88, - 15748: 0x5A31, - 15749: 0x96E8, - 15750: 0x4E0E, - 15751: 0x5C7F, - 15752: 0x79B9, - 15753: 0x5B87, - 15754: 0x8BED, - 15755: 0x7FBD, - 15756: 0x7389, - 15757: 0x57DF, - 15758: 0x828B, - 15759: 0x90C1, - 15760: 0x5401, - 15761: 0x9047, - 15762: 0x55BB, - 15763: 0x5CEA, - 15764: 0x5FA1, - 15765: 0x6108, - 15766: 0x6B32, - 15767: 0x72F1, - 15768: 0x80B2, - 15769: 0x8A89, - 15770: 0x8A1E, - 15771: 0x8A1F, - 15772: 0x8A20, - 15773: 0x8A21, - 15774: 0x8A22, - 15775: 0x8A23, - 15776: 0x8A24, - 15777: 0x8A25, - 15778: 0x8A26, - 15779: 0x8A27, - 15780: 0x8A28, - 15781: 0x8A29, - 15782: 0x8A2A, - 15783: 0x8A2B, - 15784: 0x8A2C, - 15785: 0x8A2D, - 15786: 0x8A2E, - 15787: 0x8A2F, - 15788: 0x8A30, - 15789: 0x8A31, - 15790: 0x8A32, - 15791: 0x8A33, - 15792: 0x8A34, - 15793: 0x8A35, - 15794: 0x8A36, - 15795: 0x8A37, - 15796: 0x8A38, - 15797: 0x8A39, - 15798: 0x8A3A, - 15799: 0x8A3B, - 15800: 0x8A3C, - 15801: 0x8A3D, - 15802: 0x8A3F, - 15803: 0x8A40, - 15804: 0x8A41, - 15805: 0x8A42, - 15806: 0x8A43, - 15807: 0x8A44, - 15808: 0x8A45, - 15809: 0x8A46, - 15810: 0x8A47, - 15811: 0x8A49, - 15812: 0x8A4A, - 15813: 0x8A4B, - 15814: 0x8A4C, - 15815: 0x8A4D, - 15816: 0x8A4E, - 15817: 0x8A4F, - 15818: 0x8A50, - 15819: 0x8A51, - 15820: 0x8A52, - 15821: 0x8A53, - 15822: 0x8A54, - 15823: 0x8A55, - 15824: 0x8A56, - 15825: 0x8A57, - 15826: 0x8A58, - 15827: 0x8A59, - 15828: 0x8A5A, - 15829: 0x8A5B, - 15830: 0x8A5C, - 15831: 0x8A5D, - 15832: 0x8A5E, - 15833: 0x8A5F, - 15834: 0x8A60, - 15835: 0x8A61, - 15836: 0x8A62, - 15837: 0x8A63, - 15838: 0x8A64, - 15839: 0x8A65, - 15840: 0x8A66, - 15841: 0x8A67, - 15842: 0x8A68, - 15843: 0x8A69, - 15844: 0x8A6A, - 15845: 0x8A6B, - 15846: 0x8A6C, - 15847: 0x8A6D, - 15848: 0x8A6E, - 15849: 0x8A6F, - 15850: 0x8A70, - 15851: 0x8A71, - 15852: 0x8A72, - 15853: 0x8A73, - 15854: 0x8A74, - 15855: 0x8A75, - 15856: 0x8A76, - 15857: 0x8A77, - 15858: 0x8A78, - 15859: 0x8A7A, - 15860: 0x8A7B, - 15861: 0x8A7C, - 15862: 0x8A7D, - 15863: 0x8A7E, - 15864: 0x8A7F, - 15865: 0x8A80, - 15866: 0x6D74, - 15867: 0x5BD3, - 15868: 0x88D5, - 15869: 0x9884, - 15870: 0x8C6B, - 15871: 0x9A6D, - 15872: 0x9E33, - 15873: 0x6E0A, - 15874: 0x51A4, - 15875: 0x5143, - 15876: 0x57A3, - 15877: 0x8881, - 15878: 0x539F, - 15879: 0x63F4, - 15880: 0x8F95, - 15881: 0x56ED, - 15882: 0x5458, - 15883: 0x5706, - 15884: 0x733F, - 15885: 0x6E90, - 15886: 0x7F18, - 15887: 0x8FDC, - 15888: 0x82D1, - 15889: 0x613F, - 15890: 0x6028, - 15891: 0x9662, - 15892: 0x66F0, - 15893: 0x7EA6, - 15894: 0x8D8A, - 15895: 0x8DC3, - 15896: 0x94A5, - 15897: 0x5CB3, - 15898: 0x7CA4, - 15899: 0x6708, - 15900: 0x60A6, - 15901: 0x9605, - 15902: 0x8018, - 15903: 0x4E91, - 15904: 0x90E7, - 15905: 0x5300, - 15906: 0x9668, - 15907: 0x5141, - 15908: 0x8FD0, - 15909: 0x8574, - 15910: 0x915D, - 15911: 0x6655, - 15912: 0x97F5, - 15913: 0x5B55, - 15914: 0x531D, - 15915: 0x7838, - 15916: 0x6742, - 15917: 0x683D, - 15918: 0x54C9, - 15919: 0x707E, - 15920: 0x5BB0, - 15921: 0x8F7D, - 15922: 0x518D, - 15923: 0x5728, - 15924: 0x54B1, - 15925: 0x6512, - 15926: 0x6682, - 15927: 0x8D5E, - 15928: 0x8D43, - 15929: 0x810F, - 15930: 0x846C, - 15931: 0x906D, - 15932: 0x7CDF, - 15933: 0x51FF, - 15934: 0x85FB, - 15935: 0x67A3, - 15936: 0x65E9, - 15937: 0x6FA1, - 15938: 0x86A4, - 15939: 0x8E81, - 15940: 0x566A, - 15941: 0x9020, - 15942: 0x7682, - 15943: 0x7076, - 15944: 0x71E5, - 15945: 0x8D23, - 15946: 0x62E9, - 15947: 0x5219, - 15948: 0x6CFD, - 15949: 0x8D3C, - 15950: 0x600E, - 15951: 0x589E, - 15952: 0x618E, - 15953: 0x66FE, - 15954: 0x8D60, - 15955: 0x624E, - 15956: 0x55B3, - 15957: 0x6E23, - 15958: 0x672D, - 15959: 0x8F67, - 15960: 0x8A81, - 15961: 0x8A82, - 15962: 0x8A83, - 15963: 0x8A84, - 15964: 0x8A85, - 15965: 0x8A86, - 15966: 0x8A87, - 15967: 0x8A88, - 15968: 0x8A8B, - 15969: 0x8A8C, - 15970: 0x8A8D, - 15971: 0x8A8E, - 15972: 0x8A8F, - 15973: 0x8A90, - 15974: 0x8A91, - 15975: 0x8A92, - 15976: 0x8A94, - 15977: 0x8A95, - 15978: 0x8A96, - 15979: 0x8A97, - 15980: 0x8A98, - 15981: 0x8A99, - 15982: 0x8A9A, - 15983: 0x8A9B, - 15984: 0x8A9C, - 15985: 0x8A9D, - 15986: 0x8A9E, - 15987: 0x8A9F, - 15988: 0x8AA0, - 15989: 0x8AA1, - 15990: 0x8AA2, - 15991: 0x8AA3, - 15992: 0x8AA4, - 15993: 0x8AA5, - 15994: 0x8AA6, - 15995: 0x8AA7, - 15996: 0x8AA8, - 15997: 0x8AA9, - 15998: 0x8AAA, - 15999: 0x8AAB, - 16000: 0x8AAC, - 16001: 0x8AAD, - 16002: 0x8AAE, - 16003: 0x8AAF, - 16004: 0x8AB0, - 16005: 0x8AB1, - 16006: 0x8AB2, - 16007: 0x8AB3, - 16008: 0x8AB4, - 16009: 0x8AB5, - 16010: 0x8AB6, - 16011: 0x8AB7, - 16012: 0x8AB8, - 16013: 0x8AB9, - 16014: 0x8ABA, - 16015: 0x8ABB, - 16016: 0x8ABC, - 16017: 0x8ABD, - 16018: 0x8ABE, - 16019: 0x8ABF, - 16020: 0x8AC0, - 16021: 0x8AC1, - 16022: 0x8AC2, - 16023: 0x8AC3, - 16024: 0x8AC4, - 16025: 0x8AC5, - 16026: 0x8AC6, - 16027: 0x8AC7, - 16028: 0x8AC8, - 16029: 0x8AC9, - 16030: 0x8ACA, - 16031: 0x8ACB, - 16032: 0x8ACC, - 16033: 0x8ACD, - 16034: 0x8ACE, - 16035: 0x8ACF, - 16036: 0x8AD0, - 16037: 0x8AD1, - 16038: 0x8AD2, - 16039: 0x8AD3, - 16040: 0x8AD4, - 16041: 0x8AD5, - 16042: 0x8AD6, - 16043: 0x8AD7, - 16044: 0x8AD8, - 16045: 0x8AD9, - 16046: 0x8ADA, - 16047: 0x8ADB, - 16048: 0x8ADC, - 16049: 0x8ADD, - 16050: 0x8ADE, - 16051: 0x8ADF, - 16052: 0x8AE0, - 16053: 0x8AE1, - 16054: 0x8AE2, - 16055: 0x8AE3, - 16056: 0x94E1, - 16057: 0x95F8, - 16058: 0x7728, - 16059: 0x6805, - 16060: 0x69A8, - 16061: 0x548B, - 16062: 0x4E4D, - 16063: 0x70B8, - 16064: 0x8BC8, - 16065: 0x6458, - 16066: 0x658B, - 16067: 0x5B85, - 16068: 0x7A84, - 16069: 0x503A, - 16070: 0x5BE8, - 16071: 0x77BB, - 16072: 0x6BE1, - 16073: 0x8A79, - 16074: 0x7C98, - 16075: 0x6CBE, - 16076: 0x76CF, - 16077: 0x65A9, - 16078: 0x8F97, - 16079: 0x5D2D, - 16080: 0x5C55, - 16081: 0x8638, - 16082: 0x6808, - 16083: 0x5360, - 16084: 0x6218, - 16085: 0x7AD9, - 16086: 0x6E5B, - 16087: 0x7EFD, - 16088: 0x6A1F, - 16089: 0x7AE0, - 16090: 0x5F70, - 16091: 0x6F33, - 16092: 0x5F20, - 16093: 0x638C, - 16094: 0x6DA8, - 16095: 0x6756, - 16096: 0x4E08, - 16097: 0x5E10, - 16098: 0x8D26, - 16099: 0x4ED7, - 16100: 0x80C0, - 16101: 0x7634, - 16102: 0x969C, - 16103: 0x62DB, - 16104: 0x662D, - 16105: 0x627E, - 16106: 0x6CBC, - 16107: 0x8D75, - 16108: 0x7167, - 16109: 0x7F69, - 16110: 0x5146, - 16111: 0x8087, - 16112: 0x53EC, - 16113: 0x906E, - 16114: 0x6298, - 16115: 0x54F2, - 16116: 0x86F0, - 16117: 0x8F99, - 16118: 0x8005, - 16119: 0x9517, - 16120: 0x8517, - 16121: 0x8FD9, - 16122: 0x6D59, - 16123: 0x73CD, - 16124: 0x659F, - 16125: 0x771F, - 16126: 0x7504, - 16127: 0x7827, - 16128: 0x81FB, - 16129: 0x8D1E, - 16130: 0x9488, - 16131: 0x4FA6, - 16132: 0x6795, - 16133: 0x75B9, - 16134: 0x8BCA, - 16135: 0x9707, - 16136: 0x632F, - 16137: 0x9547, - 16138: 0x9635, - 16139: 0x84B8, - 16140: 0x6323, - 16141: 0x7741, - 16142: 0x5F81, - 16143: 0x72F0, - 16144: 0x4E89, - 16145: 0x6014, - 16146: 0x6574, - 16147: 0x62EF, - 16148: 0x6B63, - 16149: 0x653F, - 16150: 0x8AE4, - 16151: 0x8AE5, - 16152: 0x8AE6, - 16153: 0x8AE7, - 16154: 0x8AE8, - 16155: 0x8AE9, - 16156: 0x8AEA, - 16157: 0x8AEB, - 16158: 0x8AEC, - 16159: 0x8AED, - 16160: 0x8AEE, - 16161: 0x8AEF, - 16162: 0x8AF0, - 16163: 0x8AF1, - 16164: 0x8AF2, - 16165: 0x8AF3, - 16166: 0x8AF4, - 16167: 0x8AF5, - 16168: 0x8AF6, - 16169: 0x8AF7, - 16170: 0x8AF8, - 16171: 0x8AF9, - 16172: 0x8AFA, - 16173: 0x8AFB, - 16174: 0x8AFC, - 16175: 0x8AFD, - 16176: 0x8AFE, - 16177: 0x8AFF, - 16178: 0x8B00, - 16179: 0x8B01, - 16180: 0x8B02, - 16181: 0x8B03, - 16182: 0x8B04, - 16183: 0x8B05, - 16184: 0x8B06, - 16185: 0x8B08, - 16186: 0x8B09, - 16187: 0x8B0A, - 16188: 0x8B0B, - 16189: 0x8B0C, - 16190: 0x8B0D, - 16191: 0x8B0E, - 16192: 0x8B0F, - 16193: 0x8B10, - 16194: 0x8B11, - 16195: 0x8B12, - 16196: 0x8B13, - 16197: 0x8B14, - 16198: 0x8B15, - 16199: 0x8B16, - 16200: 0x8B17, - 16201: 0x8B18, - 16202: 0x8B19, - 16203: 0x8B1A, - 16204: 0x8B1B, - 16205: 0x8B1C, - 16206: 0x8B1D, - 16207: 0x8B1E, - 16208: 0x8B1F, - 16209: 0x8B20, - 16210: 0x8B21, - 16211: 0x8B22, - 16212: 0x8B23, - 16213: 0x8B24, - 16214: 0x8B25, - 16215: 0x8B27, - 16216: 0x8B28, - 16217: 0x8B29, - 16218: 0x8B2A, - 16219: 0x8B2B, - 16220: 0x8B2C, - 16221: 0x8B2D, - 16222: 0x8B2E, - 16223: 0x8B2F, - 16224: 0x8B30, - 16225: 0x8B31, - 16226: 0x8B32, - 16227: 0x8B33, - 16228: 0x8B34, - 16229: 0x8B35, - 16230: 0x8B36, - 16231: 0x8B37, - 16232: 0x8B38, - 16233: 0x8B39, - 16234: 0x8B3A, - 16235: 0x8B3B, - 16236: 0x8B3C, - 16237: 0x8B3D, - 16238: 0x8B3E, - 16239: 0x8B3F, - 16240: 0x8B40, - 16241: 0x8B41, - 16242: 0x8B42, - 16243: 0x8B43, - 16244: 0x8B44, - 16245: 0x8B45, - 16246: 0x5E27, - 16247: 0x75C7, - 16248: 0x90D1, - 16249: 0x8BC1, - 16250: 0x829D, - 16251: 0x679D, - 16252: 0x652F, - 16253: 0x5431, - 16254: 0x8718, - 16255: 0x77E5, - 16256: 0x80A2, - 16257: 0x8102, - 16258: 0x6C41, - 16259: 0x4E4B, - 16260: 0x7EC7, - 16261: 0x804C, - 16262: 0x76F4, - 16263: 0x690D, - 16264: 0x6B96, - 16265: 0x6267, - 16266: 0x503C, - 16267: 0x4F84, - 16268: 0x5740, - 16269: 0x6307, - 16270: 0x6B62, - 16271: 0x8DBE, - 16272: 0x53EA, - 16273: 0x65E8, - 16274: 0x7EB8, - 16275: 0x5FD7, - 16276: 0x631A, - 16277: 0x63B7, - 16278: 0x81F3, - 16279: 0x81F4, - 16280: 0x7F6E, - 16281: 0x5E1C, - 16282: 0x5CD9, - 16283: 0x5236, - 16284: 0x667A, - 16285: 0x79E9, - 16286: 0x7A1A, - 16287: 0x8D28, - 16288: 0x7099, - 16289: 0x75D4, - 16290: 0x6EDE, - 16291: 0x6CBB, - 16292: 0x7A92, - 16293: 0x4E2D, - 16294: 0x76C5, - 16295: 0x5FE0, - 16296: 0x949F, - 16297: 0x8877, - 16298: 0x7EC8, - 16299: 0x79CD, - 16300: 0x80BF, - 16301: 0x91CD, - 16302: 0x4EF2, - 16303: 0x4F17, - 16304: 0x821F, - 16305: 0x5468, - 16306: 0x5DDE, - 16307: 0x6D32, - 16308: 0x8BCC, - 16309: 0x7CA5, - 16310: 0x8F74, - 16311: 0x8098, - 16312: 0x5E1A, - 16313: 0x5492, - 16314: 0x76B1, - 16315: 0x5B99, - 16316: 0x663C, - 16317: 0x9AA4, - 16318: 0x73E0, - 16319: 0x682A, - 16320: 0x86DB, - 16321: 0x6731, - 16322: 0x732A, - 16323: 0x8BF8, - 16324: 0x8BDB, - 16325: 0x9010, - 16326: 0x7AF9, - 16327: 0x70DB, - 16328: 0x716E, - 16329: 0x62C4, - 16330: 0x77A9, - 16331: 0x5631, - 16332: 0x4E3B, - 16333: 0x8457, - 16334: 0x67F1, - 16335: 0x52A9, - 16336: 0x86C0, - 16337: 0x8D2E, - 16338: 0x94F8, - 16339: 0x7B51, - 16340: 0x8B46, - 16341: 0x8B47, - 16342: 0x8B48, - 16343: 0x8B49, - 16344: 0x8B4A, - 16345: 0x8B4B, - 16346: 0x8B4C, - 16347: 0x8B4D, - 16348: 0x8B4E, - 16349: 0x8B4F, - 16350: 0x8B50, - 16351: 0x8B51, - 16352: 0x8B52, - 16353: 0x8B53, - 16354: 0x8B54, - 16355: 0x8B55, - 16356: 0x8B56, - 16357: 0x8B57, - 16358: 0x8B58, - 16359: 0x8B59, - 16360: 0x8B5A, - 16361: 0x8B5B, - 16362: 0x8B5C, - 16363: 0x8B5D, - 16364: 0x8B5E, - 16365: 0x8B5F, - 16366: 0x8B60, - 16367: 0x8B61, - 16368: 0x8B62, - 16369: 0x8B63, - 16370: 0x8B64, - 16371: 0x8B65, - 16372: 0x8B67, - 16373: 0x8B68, - 16374: 0x8B69, - 16375: 0x8B6A, - 16376: 0x8B6B, - 16377: 0x8B6D, - 16378: 0x8B6E, - 16379: 0x8B6F, - 16380: 0x8B70, - 16381: 0x8B71, - 16382: 0x8B72, - 16383: 0x8B73, - 16384: 0x8B74, - 16385: 0x8B75, - 16386: 0x8B76, - 16387: 0x8B77, - 16388: 0x8B78, - 16389: 0x8B79, - 16390: 0x8B7A, - 16391: 0x8B7B, - 16392: 0x8B7C, - 16393: 0x8B7D, - 16394: 0x8B7E, - 16395: 0x8B7F, - 16396: 0x8B80, - 16397: 0x8B81, - 16398: 0x8B82, - 16399: 0x8B83, - 16400: 0x8B84, - 16401: 0x8B85, - 16402: 0x8B86, - 16403: 0x8B87, - 16404: 0x8B88, - 16405: 0x8B89, - 16406: 0x8B8A, - 16407: 0x8B8B, - 16408: 0x8B8C, - 16409: 0x8B8D, - 16410: 0x8B8E, - 16411: 0x8B8F, - 16412: 0x8B90, - 16413: 0x8B91, - 16414: 0x8B92, - 16415: 0x8B93, - 16416: 0x8B94, - 16417: 0x8B95, - 16418: 0x8B96, - 16419: 0x8B97, - 16420: 0x8B98, - 16421: 0x8B99, - 16422: 0x8B9A, - 16423: 0x8B9B, - 16424: 0x8B9C, - 16425: 0x8B9D, - 16426: 0x8B9E, - 16427: 0x8B9F, - 16428: 0x8BAC, - 16429: 0x8BB1, - 16430: 0x8BBB, - 16431: 0x8BC7, - 16432: 0x8BD0, - 16433: 0x8BEA, - 16434: 0x8C09, - 16435: 0x8C1E, - 16436: 0x4F4F, - 16437: 0x6CE8, - 16438: 0x795D, - 16439: 0x9A7B, - 16440: 0x6293, - 16441: 0x722A, - 16442: 0x62FD, - 16443: 0x4E13, - 16444: 0x7816, - 16445: 0x8F6C, - 16446: 0x64B0, - 16447: 0x8D5A, - 16448: 0x7BC6, - 16449: 0x6869, - 16450: 0x5E84, - 16451: 0x88C5, - 16452: 0x5986, - 16453: 0x649E, - 16454: 0x58EE, - 16455: 0x72B6, - 16456: 0x690E, - 16457: 0x9525, - 16458: 0x8FFD, - 16459: 0x8D58, - 16460: 0x5760, - 16461: 0x7F00, - 16462: 0x8C06, - 16463: 0x51C6, - 16464: 0x6349, - 16465: 0x62D9, - 16466: 0x5353, - 16467: 0x684C, - 16468: 0x7422, - 16469: 0x8301, - 16470: 0x914C, - 16471: 0x5544, - 16472: 0x7740, - 16473: 0x707C, - 16474: 0x6D4A, - 16475: 0x5179, - 16476: 0x54A8, - 16477: 0x8D44, - 16478: 0x59FF, - 16479: 0x6ECB, - 16480: 0x6DC4, - 16481: 0x5B5C, - 16482: 0x7D2B, - 16483: 0x4ED4, - 16484: 0x7C7D, - 16485: 0x6ED3, - 16486: 0x5B50, - 16487: 0x81EA, - 16488: 0x6E0D, - 16489: 0x5B57, - 16490: 0x9B03, - 16491: 0x68D5, - 16492: 0x8E2A, - 16493: 0x5B97, - 16494: 0x7EFC, - 16495: 0x603B, - 16496: 0x7EB5, - 16497: 0x90B9, - 16498: 0x8D70, - 16499: 0x594F, - 16500: 0x63CD, - 16501: 0x79DF, - 16502: 0x8DB3, - 16503: 0x5352, - 16504: 0x65CF, - 16505: 0x7956, - 16506: 0x8BC5, - 16507: 0x963B, - 16508: 0x7EC4, - 16509: 0x94BB, - 16510: 0x7E82, - 16511: 0x5634, - 16512: 0x9189, - 16513: 0x6700, - 16514: 0x7F6A, - 16515: 0x5C0A, - 16516: 0x9075, - 16517: 0x6628, - 16518: 0x5DE6, - 16519: 0x4F50, - 16520: 0x67DE, - 16521: 0x505A, - 16522: 0x4F5C, - 16523: 0x5750, - 16524: 0x5EA7, - 16530: 0x8C38, - 16531: 0x8C39, - 16532: 0x8C3A, - 16533: 0x8C3B, - 16534: 0x8C3C, - 16535: 0x8C3D, - 16536: 0x8C3E, - 16537: 0x8C3F, - 16538: 0x8C40, - 16539: 0x8C42, - 16540: 0x8C43, - 16541: 0x8C44, - 16542: 0x8C45, - 16543: 0x8C48, - 16544: 0x8C4A, - 16545: 0x8C4B, - 16546: 0x8C4D, - 16547: 0x8C4E, - 16548: 0x8C4F, - 16549: 0x8C50, - 16550: 0x8C51, - 16551: 0x8C52, - 16552: 0x8C53, - 16553: 0x8C54, - 16554: 0x8C56, - 16555: 0x8C57, - 16556: 0x8C58, - 16557: 0x8C59, - 16558: 0x8C5B, - 16559: 0x8C5C, - 16560: 0x8C5D, - 16561: 0x8C5E, - 16562: 0x8C5F, - 16563: 0x8C60, - 16564: 0x8C63, - 16565: 0x8C64, - 16566: 0x8C65, - 16567: 0x8C66, - 16568: 0x8C67, - 16569: 0x8C68, - 16570: 0x8C69, - 16571: 0x8C6C, - 16572: 0x8C6D, - 16573: 0x8C6E, - 16574: 0x8C6F, - 16575: 0x8C70, - 16576: 0x8C71, - 16577: 0x8C72, - 16578: 0x8C74, - 16579: 0x8C75, - 16580: 0x8C76, - 16581: 0x8C77, - 16582: 0x8C7B, - 16583: 0x8C7C, - 16584: 0x8C7D, - 16585: 0x8C7E, - 16586: 0x8C7F, - 16587: 0x8C80, - 16588: 0x8C81, - 16589: 0x8C83, - 16590: 0x8C84, - 16591: 0x8C86, - 16592: 0x8C87, - 16593: 0x8C88, - 16594: 0x8C8B, - 16595: 0x8C8D, - 16596: 0x8C8E, - 16597: 0x8C8F, - 16598: 0x8C90, - 16599: 0x8C91, - 16600: 0x8C92, - 16601: 0x8C93, - 16602: 0x8C95, - 16603: 0x8C96, - 16604: 0x8C97, - 16605: 0x8C99, - 16606: 0x8C9A, - 16607: 0x8C9B, - 16608: 0x8C9C, - 16609: 0x8C9D, - 16610: 0x8C9E, - 16611: 0x8C9F, - 16612: 0x8CA0, - 16613: 0x8CA1, - 16614: 0x8CA2, - 16615: 0x8CA3, - 16616: 0x8CA4, - 16617: 0x8CA5, - 16618: 0x8CA6, - 16619: 0x8CA7, - 16620: 0x8CA8, - 16621: 0x8CA9, - 16622: 0x8CAA, - 16623: 0x8CAB, - 16624: 0x8CAC, - 16625: 0x8CAD, - 16626: 0x4E8D, - 16627: 0x4E0C, - 16628: 0x5140, - 16629: 0x4E10, - 16630: 0x5EFF, - 16631: 0x5345, - 16632: 0x4E15, - 16633: 0x4E98, - 16634: 0x4E1E, - 16635: 0x9B32, - 16636: 0x5B6C, - 16637: 0x5669, - 16638: 0x4E28, - 16639: 0x79BA, - 16640: 0x4E3F, - 16641: 0x5315, - 16642: 0x4E47, - 16643: 0x592D, - 16644: 0x723B, - 16645: 0x536E, - 16646: 0x6C10, - 16647: 0x56DF, - 16648: 0x80E4, - 16649: 0x9997, - 16650: 0x6BD3, - 16651: 0x777E, - 16652: 0x9F17, - 16653: 0x4E36, - 16654: 0x4E9F, - 16655: 0x9F10, - 16656: 0x4E5C, - 16657: 0x4E69, - 16658: 0x4E93, - 16659: 0x8288, - 16660: 0x5B5B, - 16661: 0x556C, - 16662: 0x560F, - 16663: 0x4EC4, - 16664: 0x538D, - 16665: 0x539D, - 16666: 0x53A3, - 16667: 0x53A5, - 16668: 0x53AE, - 16669: 0x9765, - 16670: 0x8D5D, - 16671: 0x531A, - 16672: 0x53F5, - 16673: 0x5326, - 16674: 0x532E, - 16675: 0x533E, - 16676: 0x8D5C, - 16677: 0x5366, - 16678: 0x5363, - 16679: 0x5202, - 16680: 0x5208, - 16681: 0x520E, - 16682: 0x522D, - 16683: 0x5233, - 16684: 0x523F, - 16685: 0x5240, - 16686: 0x524C, - 16687: 0x525E, - 16688: 0x5261, - 16689: 0x525C, - 16690: 0x84AF, - 16691: 0x527D, - 16692: 0x5282, - 16693: 0x5281, - 16694: 0x5290, - 16695: 0x5293, - 16696: 0x5182, - 16697: 0x7F54, - 16698: 0x4EBB, - 16699: 0x4EC3, - 16700: 0x4EC9, - 16701: 0x4EC2, - 16702: 0x4EE8, - 16703: 0x4EE1, - 16704: 0x4EEB, - 16705: 0x4EDE, - 16706: 0x4F1B, - 16707: 0x4EF3, - 16708: 0x4F22, - 16709: 0x4F64, - 16710: 0x4EF5, - 16711: 0x4F25, - 16712: 0x4F27, - 16713: 0x4F09, - 16714: 0x4F2B, - 16715: 0x4F5E, - 16716: 0x4F67, - 16717: 0x6538, - 16718: 0x4F5A, - 16719: 0x4F5D, - 16720: 0x8CAE, - 16721: 0x8CAF, - 16722: 0x8CB0, - 16723: 0x8CB1, - 16724: 0x8CB2, - 16725: 0x8CB3, - 16726: 0x8CB4, - 16727: 0x8CB5, - 16728: 0x8CB6, - 16729: 0x8CB7, - 16730: 0x8CB8, - 16731: 0x8CB9, - 16732: 0x8CBA, - 16733: 0x8CBB, - 16734: 0x8CBC, - 16735: 0x8CBD, - 16736: 0x8CBE, - 16737: 0x8CBF, - 16738: 0x8CC0, - 16739: 0x8CC1, - 16740: 0x8CC2, - 16741: 0x8CC3, - 16742: 0x8CC4, - 16743: 0x8CC5, - 16744: 0x8CC6, - 16745: 0x8CC7, - 16746: 0x8CC8, - 16747: 0x8CC9, - 16748: 0x8CCA, - 16749: 0x8CCB, - 16750: 0x8CCC, - 16751: 0x8CCD, - 16752: 0x8CCE, - 16753: 0x8CCF, - 16754: 0x8CD0, - 16755: 0x8CD1, - 16756: 0x8CD2, - 16757: 0x8CD3, - 16758: 0x8CD4, - 16759: 0x8CD5, - 16760: 0x8CD6, - 16761: 0x8CD7, - 16762: 0x8CD8, - 16763: 0x8CD9, - 16764: 0x8CDA, - 16765: 0x8CDB, - 16766: 0x8CDC, - 16767: 0x8CDD, - 16768: 0x8CDE, - 16769: 0x8CDF, - 16770: 0x8CE0, - 16771: 0x8CE1, - 16772: 0x8CE2, - 16773: 0x8CE3, - 16774: 0x8CE4, - 16775: 0x8CE5, - 16776: 0x8CE6, - 16777: 0x8CE7, - 16778: 0x8CE8, - 16779: 0x8CE9, - 16780: 0x8CEA, - 16781: 0x8CEB, - 16782: 0x8CEC, - 16783: 0x8CED, - 16784: 0x8CEE, - 16785: 0x8CEF, - 16786: 0x8CF0, - 16787: 0x8CF1, - 16788: 0x8CF2, - 16789: 0x8CF3, - 16790: 0x8CF4, - 16791: 0x8CF5, - 16792: 0x8CF6, - 16793: 0x8CF7, - 16794: 0x8CF8, - 16795: 0x8CF9, - 16796: 0x8CFA, - 16797: 0x8CFB, - 16798: 0x8CFC, - 16799: 0x8CFD, - 16800: 0x8CFE, - 16801: 0x8CFF, - 16802: 0x8D00, - 16803: 0x8D01, - 16804: 0x8D02, - 16805: 0x8D03, - 16806: 0x8D04, - 16807: 0x8D05, - 16808: 0x8D06, - 16809: 0x8D07, - 16810: 0x8D08, - 16811: 0x8D09, - 16812: 0x8D0A, - 16813: 0x8D0B, - 16814: 0x8D0C, - 16815: 0x8D0D, - 16816: 0x4F5F, - 16817: 0x4F57, - 16818: 0x4F32, - 16819: 0x4F3D, - 16820: 0x4F76, - 16821: 0x4F74, - 16822: 0x4F91, - 16823: 0x4F89, - 16824: 0x4F83, - 16825: 0x4F8F, - 16826: 0x4F7E, - 16827: 0x4F7B, - 16828: 0x4FAA, - 16829: 0x4F7C, - 16830: 0x4FAC, - 16831: 0x4F94, - 16832: 0x4FE6, - 16833: 0x4FE8, - 16834: 0x4FEA, - 16835: 0x4FC5, - 16836: 0x4FDA, - 16837: 0x4FE3, - 16838: 0x4FDC, - 16839: 0x4FD1, - 16840: 0x4FDF, - 16841: 0x4FF8, - 16842: 0x5029, - 16843: 0x504C, - 16844: 0x4FF3, - 16845: 0x502C, - 16846: 0x500F, - 16847: 0x502E, - 16848: 0x502D, - 16849: 0x4FFE, - 16850: 0x501C, - 16851: 0x500C, - 16852: 0x5025, - 16853: 0x5028, - 16854: 0x507E, - 16855: 0x5043, - 16856: 0x5055, - 16857: 0x5048, - 16858: 0x504E, - 16859: 0x506C, - 16860: 0x507B, - 16861: 0x50A5, - 16862: 0x50A7, - 16863: 0x50A9, - 16864: 0x50BA, - 16865: 0x50D6, - 16866: 0x5106, - 16867: 0x50ED, - 16868: 0x50EC, - 16869: 0x50E6, - 16870: 0x50EE, - 16871: 0x5107, - 16872: 0x510B, - 16873: 0x4EDD, - 16874: 0x6C3D, - 16875: 0x4F58, - 16876: 0x4F65, - 16877: 0x4FCE, - 16878: 0x9FA0, - 16879: 0x6C46, - 16880: 0x7C74, - 16881: 0x516E, - 16882: 0x5DFD, - 16883: 0x9EC9, - 16884: 0x9998, - 16885: 0x5181, - 16886: 0x5914, - 16887: 0x52F9, - 16888: 0x530D, - 16889: 0x8A07, - 16890: 0x5310, - 16891: 0x51EB, - 16892: 0x5919, - 16893: 0x5155, - 16894: 0x4EA0, - 16895: 0x5156, - 16896: 0x4EB3, - 16897: 0x886E, - 16898: 0x88A4, - 16899: 0x4EB5, - 16900: 0x8114, - 16901: 0x88D2, - 16902: 0x7980, - 16903: 0x5B34, - 16904: 0x8803, - 16905: 0x7FB8, - 16906: 0x51AB, - 16907: 0x51B1, - 16908: 0x51BD, - 16909: 0x51BC, - 16910: 0x8D0E, - 16911: 0x8D0F, - 16912: 0x8D10, - 16913: 0x8D11, - 16914: 0x8D12, - 16915: 0x8D13, - 16916: 0x8D14, - 16917: 0x8D15, - 16918: 0x8D16, - 16919: 0x8D17, - 16920: 0x8D18, - 16921: 0x8D19, - 16922: 0x8D1A, - 16923: 0x8D1B, - 16924: 0x8D1C, - 16925: 0x8D20, - 16926: 0x8D51, - 16927: 0x8D52, - 16928: 0x8D57, - 16929: 0x8D5F, - 16930: 0x8D65, - 16931: 0x8D68, - 16932: 0x8D69, - 16933: 0x8D6A, - 16934: 0x8D6C, - 16935: 0x8D6E, - 16936: 0x8D6F, - 16937: 0x8D71, - 16938: 0x8D72, - 16939: 0x8D78, - 16940: 0x8D79, - 16941: 0x8D7A, - 16942: 0x8D7B, - 16943: 0x8D7C, - 16944: 0x8D7D, - 16945: 0x8D7E, - 16946: 0x8D7F, - 16947: 0x8D80, - 16948: 0x8D82, - 16949: 0x8D83, - 16950: 0x8D86, - 16951: 0x8D87, - 16952: 0x8D88, - 16953: 0x8D89, - 16954: 0x8D8C, - 16955: 0x8D8D, - 16956: 0x8D8E, - 16957: 0x8D8F, - 16958: 0x8D90, - 16959: 0x8D92, - 16960: 0x8D93, - 16961: 0x8D95, - 16962: 0x8D96, - 16963: 0x8D97, - 16964: 0x8D98, - 16965: 0x8D99, - 16966: 0x8D9A, - 16967: 0x8D9B, - 16968: 0x8D9C, - 16969: 0x8D9D, - 16970: 0x8D9E, - 16971: 0x8DA0, - 16972: 0x8DA1, - 16973: 0x8DA2, - 16974: 0x8DA4, - 16975: 0x8DA5, - 16976: 0x8DA6, - 16977: 0x8DA7, - 16978: 0x8DA8, - 16979: 0x8DA9, - 16980: 0x8DAA, - 16981: 0x8DAB, - 16982: 0x8DAC, - 16983: 0x8DAD, - 16984: 0x8DAE, - 16985: 0x8DAF, - 16986: 0x8DB0, - 16987: 0x8DB2, - 16988: 0x8DB6, - 16989: 0x8DB7, - 16990: 0x8DB9, - 16991: 0x8DBB, - 16992: 0x8DBD, - 16993: 0x8DC0, - 16994: 0x8DC1, - 16995: 0x8DC2, - 16996: 0x8DC5, - 16997: 0x8DC7, - 16998: 0x8DC8, - 16999: 0x8DC9, - 17000: 0x8DCA, - 17001: 0x8DCD, - 17002: 0x8DD0, - 17003: 0x8DD2, - 17004: 0x8DD3, - 17005: 0x8DD4, - 17006: 0x51C7, - 17007: 0x5196, - 17008: 0x51A2, - 17009: 0x51A5, - 17010: 0x8BA0, - 17011: 0x8BA6, - 17012: 0x8BA7, - 17013: 0x8BAA, - 17014: 0x8BB4, - 17015: 0x8BB5, - 17016: 0x8BB7, - 17017: 0x8BC2, - 17018: 0x8BC3, - 17019: 0x8BCB, - 17020: 0x8BCF, - 17021: 0x8BCE, - 17022: 0x8BD2, - 17023: 0x8BD3, - 17024: 0x8BD4, - 17025: 0x8BD6, - 17026: 0x8BD8, - 17027: 0x8BD9, - 17028: 0x8BDC, - 17029: 0x8BDF, - 17030: 0x8BE0, - 17031: 0x8BE4, - 17032: 0x8BE8, - 17033: 0x8BE9, - 17034: 0x8BEE, - 17035: 0x8BF0, - 17036: 0x8BF3, - 17037: 0x8BF6, - 17038: 0x8BF9, - 17039: 0x8BFC, - 17040: 0x8BFF, - 17041: 0x8C00, - 17042: 0x8C02, - 17043: 0x8C04, - 17044: 0x8C07, - 17045: 0x8C0C, - 17046: 0x8C0F, - 17047: 0x8C11, - 17048: 0x8C12, - 17049: 0x8C14, - 17050: 0x8C15, - 17051: 0x8C16, - 17052: 0x8C19, - 17053: 0x8C1B, - 17054: 0x8C18, - 17055: 0x8C1D, - 17056: 0x8C1F, - 17057: 0x8C20, - 17058: 0x8C21, - 17059: 0x8C25, - 17060: 0x8C27, - 17061: 0x8C2A, - 17062: 0x8C2B, - 17063: 0x8C2E, - 17064: 0x8C2F, - 17065: 0x8C32, - 17066: 0x8C33, - 17067: 0x8C35, - 17068: 0x8C36, - 17069: 0x5369, - 17070: 0x537A, - 17071: 0x961D, - 17072: 0x9622, - 17073: 0x9621, - 17074: 0x9631, - 17075: 0x962A, - 17076: 0x963D, - 17077: 0x963C, - 17078: 0x9642, - 17079: 0x9649, - 17080: 0x9654, - 17081: 0x965F, - 17082: 0x9667, - 17083: 0x966C, - 17084: 0x9672, - 17085: 0x9674, - 17086: 0x9688, - 17087: 0x968D, - 17088: 0x9697, - 17089: 0x96B0, - 17090: 0x9097, - 17091: 0x909B, - 17092: 0x909D, - 17093: 0x9099, - 17094: 0x90AC, - 17095: 0x90A1, - 17096: 0x90B4, - 17097: 0x90B3, - 17098: 0x90B6, - 17099: 0x90BA, - 17100: 0x8DD5, - 17101: 0x8DD8, - 17102: 0x8DD9, - 17103: 0x8DDC, - 17104: 0x8DE0, - 17105: 0x8DE1, - 17106: 0x8DE2, - 17107: 0x8DE5, - 17108: 0x8DE6, - 17109: 0x8DE7, - 17110: 0x8DE9, - 17111: 0x8DED, - 17112: 0x8DEE, - 17113: 0x8DF0, - 17114: 0x8DF1, - 17115: 0x8DF2, - 17116: 0x8DF4, - 17117: 0x8DF6, - 17118: 0x8DFC, - 17119: 0x8DFE, - 17120: 0x8DFF, - 17121: 0x8E00, - 17122: 0x8E01, - 17123: 0x8E02, - 17124: 0x8E03, - 17125: 0x8E04, - 17126: 0x8E06, - 17127: 0x8E07, - 17128: 0x8E08, - 17129: 0x8E0B, - 17130: 0x8E0D, - 17131: 0x8E0E, - 17132: 0x8E10, - 17133: 0x8E11, - 17134: 0x8E12, - 17135: 0x8E13, - 17136: 0x8E15, - 17137: 0x8E16, - 17138: 0x8E17, - 17139: 0x8E18, - 17140: 0x8E19, - 17141: 0x8E1A, - 17142: 0x8E1B, - 17143: 0x8E1C, - 17144: 0x8E20, - 17145: 0x8E21, - 17146: 0x8E24, - 17147: 0x8E25, - 17148: 0x8E26, - 17149: 0x8E27, - 17150: 0x8E28, - 17151: 0x8E2B, - 17152: 0x8E2D, - 17153: 0x8E30, - 17154: 0x8E32, - 17155: 0x8E33, - 17156: 0x8E34, - 17157: 0x8E36, - 17158: 0x8E37, - 17159: 0x8E38, - 17160: 0x8E3B, - 17161: 0x8E3C, - 17162: 0x8E3E, - 17163: 0x8E3F, - 17164: 0x8E43, - 17165: 0x8E45, - 17166: 0x8E46, - 17167: 0x8E4C, - 17168: 0x8E4D, - 17169: 0x8E4E, - 17170: 0x8E4F, - 17171: 0x8E50, - 17172: 0x8E53, - 17173: 0x8E54, - 17174: 0x8E55, - 17175: 0x8E56, - 17176: 0x8E57, - 17177: 0x8E58, - 17178: 0x8E5A, - 17179: 0x8E5B, - 17180: 0x8E5C, - 17181: 0x8E5D, - 17182: 0x8E5E, - 17183: 0x8E5F, - 17184: 0x8E60, - 17185: 0x8E61, - 17186: 0x8E62, - 17187: 0x8E63, - 17188: 0x8E64, - 17189: 0x8E65, - 17190: 0x8E67, - 17191: 0x8E68, - 17192: 0x8E6A, - 17193: 0x8E6B, - 17194: 0x8E6E, - 17195: 0x8E71, - 17196: 0x90B8, - 17197: 0x90B0, - 17198: 0x90CF, - 17199: 0x90C5, - 17200: 0x90BE, - 17201: 0x90D0, - 17202: 0x90C4, - 17203: 0x90C7, - 17204: 0x90D3, - 17205: 0x90E6, - 17206: 0x90E2, - 17207: 0x90DC, - 17208: 0x90D7, - 17209: 0x90DB, - 17210: 0x90EB, - 17211: 0x90EF, - 17212: 0x90FE, - 17213: 0x9104, - 17214: 0x9122, - 17215: 0x911E, - 17216: 0x9123, - 17217: 0x9131, - 17218: 0x912F, - 17219: 0x9139, - 17220: 0x9143, - 17221: 0x9146, - 17222: 0x520D, - 17223: 0x5942, - 17224: 0x52A2, - 17225: 0x52AC, - 17226: 0x52AD, - 17227: 0x52BE, - 17228: 0x54FF, - 17229: 0x52D0, - 17230: 0x52D6, - 17231: 0x52F0, - 17232: 0x53DF, - 17233: 0x71EE, - 17234: 0x77CD, - 17235: 0x5EF4, - 17236: 0x51F5, - 17237: 0x51FC, - 17238: 0x9B2F, - 17239: 0x53B6, - 17240: 0x5F01, - 17241: 0x755A, - 17242: 0x5DEF, - 17243: 0x574C, - 17244: 0x57A9, - 17245: 0x57A1, - 17246: 0x587E, - 17247: 0x58BC, - 17248: 0x58C5, - 17249: 0x58D1, - 17250: 0x5729, - 17251: 0x572C, - 17252: 0x572A, - 17253: 0x5733, - 17254: 0x5739, - 17255: 0x572E, - 17256: 0x572F, - 17257: 0x575C, - 17258: 0x573B, - 17259: 0x5742, - 17260: 0x5769, - 17261: 0x5785, - 17262: 0x576B, - 17263: 0x5786, - 17264: 0x577C, - 17265: 0x577B, - 17266: 0x5768, - 17267: 0x576D, - 17268: 0x5776, - 17269: 0x5773, - 17270: 0x57AD, - 17271: 0x57A4, - 17272: 0x578C, - 17273: 0x57B2, - 17274: 0x57CF, - 17275: 0x57A7, - 17276: 0x57B4, - 17277: 0x5793, - 17278: 0x57A0, - 17279: 0x57D5, - 17280: 0x57D8, - 17281: 0x57DA, - 17282: 0x57D9, - 17283: 0x57D2, - 17284: 0x57B8, - 17285: 0x57F4, - 17286: 0x57EF, - 17287: 0x57F8, - 17288: 0x57E4, - 17289: 0x57DD, - 17290: 0x8E73, - 17291: 0x8E75, - 17292: 0x8E77, - 17293: 0x8E78, - 17294: 0x8E79, - 17295: 0x8E7A, - 17296: 0x8E7B, - 17297: 0x8E7D, - 17298: 0x8E7E, - 17299: 0x8E80, - 17300: 0x8E82, - 17301: 0x8E83, - 17302: 0x8E84, - 17303: 0x8E86, - 17304: 0x8E88, - 17305: 0x8E89, - 17306: 0x8E8A, - 17307: 0x8E8B, - 17308: 0x8E8C, - 17309: 0x8E8D, - 17310: 0x8E8E, - 17311: 0x8E91, - 17312: 0x8E92, - 17313: 0x8E93, - 17314: 0x8E95, - 17315: 0x8E96, - 17316: 0x8E97, - 17317: 0x8E98, - 17318: 0x8E99, - 17319: 0x8E9A, - 17320: 0x8E9B, - 17321: 0x8E9D, - 17322: 0x8E9F, - 17323: 0x8EA0, - 17324: 0x8EA1, - 17325: 0x8EA2, - 17326: 0x8EA3, - 17327: 0x8EA4, - 17328: 0x8EA5, - 17329: 0x8EA6, - 17330: 0x8EA7, - 17331: 0x8EA8, - 17332: 0x8EA9, - 17333: 0x8EAA, - 17334: 0x8EAD, - 17335: 0x8EAE, - 17336: 0x8EB0, - 17337: 0x8EB1, - 17338: 0x8EB3, - 17339: 0x8EB4, - 17340: 0x8EB5, - 17341: 0x8EB6, - 17342: 0x8EB7, - 17343: 0x8EB8, - 17344: 0x8EB9, - 17345: 0x8EBB, - 17346: 0x8EBC, - 17347: 0x8EBD, - 17348: 0x8EBE, - 17349: 0x8EBF, - 17350: 0x8EC0, - 17351: 0x8EC1, - 17352: 0x8EC2, - 17353: 0x8EC3, - 17354: 0x8EC4, - 17355: 0x8EC5, - 17356: 0x8EC6, - 17357: 0x8EC7, - 17358: 0x8EC8, - 17359: 0x8EC9, - 17360: 0x8ECA, - 17361: 0x8ECB, - 17362: 0x8ECC, - 17363: 0x8ECD, - 17364: 0x8ECF, - 17365: 0x8ED0, - 17366: 0x8ED1, - 17367: 0x8ED2, - 17368: 0x8ED3, - 17369: 0x8ED4, - 17370: 0x8ED5, - 17371: 0x8ED6, - 17372: 0x8ED7, - 17373: 0x8ED8, - 17374: 0x8ED9, - 17375: 0x8EDA, - 17376: 0x8EDB, - 17377: 0x8EDC, - 17378: 0x8EDD, - 17379: 0x8EDE, - 17380: 0x8EDF, - 17381: 0x8EE0, - 17382: 0x8EE1, - 17383: 0x8EE2, - 17384: 0x8EE3, - 17385: 0x8EE4, - 17386: 0x580B, - 17387: 0x580D, - 17388: 0x57FD, - 17389: 0x57ED, - 17390: 0x5800, - 17391: 0x581E, - 17392: 0x5819, - 17393: 0x5844, - 17394: 0x5820, - 17395: 0x5865, - 17396: 0x586C, - 17397: 0x5881, - 17398: 0x5889, - 17399: 0x589A, - 17400: 0x5880, - 17401: 0x99A8, - 17402: 0x9F19, - 17403: 0x61FF, - 17404: 0x8279, - 17405: 0x827D, - 17406: 0x827F, - 17407: 0x828F, - 17408: 0x828A, - 17409: 0x82A8, - 17410: 0x8284, - 17411: 0x828E, - 17412: 0x8291, - 17413: 0x8297, - 17414: 0x8299, - 17415: 0x82AB, - 17416: 0x82B8, - 17417: 0x82BE, - 17418: 0x82B0, - 17419: 0x82C8, - 17420: 0x82CA, - 17421: 0x82E3, - 17422: 0x8298, - 17423: 0x82B7, - 17424: 0x82AE, - 17425: 0x82CB, - 17426: 0x82CC, - 17427: 0x82C1, - 17428: 0x82A9, - 17429: 0x82B4, - 17430: 0x82A1, - 17431: 0x82AA, - 17432: 0x829F, - 17433: 0x82C4, - 17434: 0x82CE, - 17435: 0x82A4, - 17436: 0x82E1, - 17437: 0x8309, - 17438: 0x82F7, - 17439: 0x82E4, - 17440: 0x830F, - 17441: 0x8307, - 17442: 0x82DC, - 17443: 0x82F4, - 17444: 0x82D2, - 17445: 0x82D8, - 17446: 0x830C, - 17447: 0x82FB, - 17448: 0x82D3, - 17449: 0x8311, - 17450: 0x831A, - 17451: 0x8306, - 17452: 0x8314, - 17453: 0x8315, - 17454: 0x82E0, - 17455: 0x82D5, - 17456: 0x831C, - 17457: 0x8351, - 17458: 0x835B, - 17459: 0x835C, - 17460: 0x8308, - 17461: 0x8392, - 17462: 0x833C, - 17463: 0x8334, - 17464: 0x8331, - 17465: 0x839B, - 17466: 0x835E, - 17467: 0x832F, - 17468: 0x834F, - 17469: 0x8347, - 17470: 0x8343, - 17471: 0x835F, - 17472: 0x8340, - 17473: 0x8317, - 17474: 0x8360, - 17475: 0x832D, - 17476: 0x833A, - 17477: 0x8333, - 17478: 0x8366, - 17479: 0x8365, - 17480: 0x8EE5, - 17481: 0x8EE6, - 17482: 0x8EE7, - 17483: 0x8EE8, - 17484: 0x8EE9, - 17485: 0x8EEA, - 17486: 0x8EEB, - 17487: 0x8EEC, - 17488: 0x8EED, - 17489: 0x8EEE, - 17490: 0x8EEF, - 17491: 0x8EF0, - 17492: 0x8EF1, - 17493: 0x8EF2, - 17494: 0x8EF3, - 17495: 0x8EF4, - 17496: 0x8EF5, - 17497: 0x8EF6, - 17498: 0x8EF7, - 17499: 0x8EF8, - 17500: 0x8EF9, - 17501: 0x8EFA, - 17502: 0x8EFB, - 17503: 0x8EFC, - 17504: 0x8EFD, - 17505: 0x8EFE, - 17506: 0x8EFF, - 17507: 0x8F00, - 17508: 0x8F01, - 17509: 0x8F02, - 17510: 0x8F03, - 17511: 0x8F04, - 17512: 0x8F05, - 17513: 0x8F06, - 17514: 0x8F07, - 17515: 0x8F08, - 17516: 0x8F09, - 17517: 0x8F0A, - 17518: 0x8F0B, - 17519: 0x8F0C, - 17520: 0x8F0D, - 17521: 0x8F0E, - 17522: 0x8F0F, - 17523: 0x8F10, - 17524: 0x8F11, - 17525: 0x8F12, - 17526: 0x8F13, - 17527: 0x8F14, - 17528: 0x8F15, - 17529: 0x8F16, - 17530: 0x8F17, - 17531: 0x8F18, - 17532: 0x8F19, - 17533: 0x8F1A, - 17534: 0x8F1B, - 17535: 0x8F1C, - 17536: 0x8F1D, - 17537: 0x8F1E, - 17538: 0x8F1F, - 17539: 0x8F20, - 17540: 0x8F21, - 17541: 0x8F22, - 17542: 0x8F23, - 17543: 0x8F24, - 17544: 0x8F25, - 17545: 0x8F26, - 17546: 0x8F27, - 17547: 0x8F28, - 17548: 0x8F29, - 17549: 0x8F2A, - 17550: 0x8F2B, - 17551: 0x8F2C, - 17552: 0x8F2D, - 17553: 0x8F2E, - 17554: 0x8F2F, - 17555: 0x8F30, - 17556: 0x8F31, - 17557: 0x8F32, - 17558: 0x8F33, - 17559: 0x8F34, - 17560: 0x8F35, - 17561: 0x8F36, - 17562: 0x8F37, - 17563: 0x8F38, - 17564: 0x8F39, - 17565: 0x8F3A, - 17566: 0x8F3B, - 17567: 0x8F3C, - 17568: 0x8F3D, - 17569: 0x8F3E, - 17570: 0x8F3F, - 17571: 0x8F40, - 17572: 0x8F41, - 17573: 0x8F42, - 17574: 0x8F43, - 17575: 0x8F44, - 17576: 0x8368, - 17577: 0x831B, - 17578: 0x8369, - 17579: 0x836C, - 17580: 0x836A, - 17581: 0x836D, - 17582: 0x836E, - 17583: 0x83B0, - 17584: 0x8378, - 17585: 0x83B3, - 17586: 0x83B4, - 17587: 0x83A0, - 17588: 0x83AA, - 17589: 0x8393, - 17590: 0x839C, - 17591: 0x8385, - 17592: 0x837C, - 17593: 0x83B6, - 17594: 0x83A9, - 17595: 0x837D, - 17596: 0x83B8, - 17597: 0x837B, - 17598: 0x8398, - 17599: 0x839E, - 17600: 0x83A8, - 17601: 0x83BA, - 17602: 0x83BC, - 17603: 0x83C1, - 17604: 0x8401, - 17605: 0x83E5, - 17606: 0x83D8, - 17607: 0x5807, - 17608: 0x8418, - 17609: 0x840B, - 17610: 0x83DD, - 17611: 0x83FD, - 17612: 0x83D6, - 17613: 0x841C, - 17614: 0x8438, - 17615: 0x8411, - 17616: 0x8406, - 17617: 0x83D4, - 17618: 0x83DF, - 17619: 0x840F, - 17620: 0x8403, - 17621: 0x83F8, - 17622: 0x83F9, - 17623: 0x83EA, - 17624: 0x83C5, - 17625: 0x83C0, - 17626: 0x8426, - 17627: 0x83F0, - 17628: 0x83E1, - 17629: 0x845C, - 17630: 0x8451, - 17631: 0x845A, - 17632: 0x8459, - 17633: 0x8473, - 17634: 0x8487, - 17635: 0x8488, - 17636: 0x847A, - 17637: 0x8489, - 17638: 0x8478, - 17639: 0x843C, - 17640: 0x8446, - 17641: 0x8469, - 17642: 0x8476, - 17643: 0x848C, - 17644: 0x848E, - 17645: 0x8431, - 17646: 0x846D, - 17647: 0x84C1, - 17648: 0x84CD, - 17649: 0x84D0, - 17650: 0x84E6, - 17651: 0x84BD, - 17652: 0x84D3, - 17653: 0x84CA, - 17654: 0x84BF, - 17655: 0x84BA, - 17656: 0x84E0, - 17657: 0x84A1, - 17658: 0x84B9, - 17659: 0x84B4, - 17660: 0x8497, - 17661: 0x84E5, - 17662: 0x84E3, - 17663: 0x850C, - 17664: 0x750D, - 17665: 0x8538, - 17666: 0x84F0, - 17667: 0x8539, - 17668: 0x851F, - 17669: 0x853A, - 17670: 0x8F45, - 17671: 0x8F46, - 17672: 0x8F47, - 17673: 0x8F48, - 17674: 0x8F49, - 17675: 0x8F4A, - 17676: 0x8F4B, - 17677: 0x8F4C, - 17678: 0x8F4D, - 17679: 0x8F4E, - 17680: 0x8F4F, - 17681: 0x8F50, - 17682: 0x8F51, - 17683: 0x8F52, - 17684: 0x8F53, - 17685: 0x8F54, - 17686: 0x8F55, - 17687: 0x8F56, - 17688: 0x8F57, - 17689: 0x8F58, - 17690: 0x8F59, - 17691: 0x8F5A, - 17692: 0x8F5B, - 17693: 0x8F5C, - 17694: 0x8F5D, - 17695: 0x8F5E, - 17696: 0x8F5F, - 17697: 0x8F60, - 17698: 0x8F61, - 17699: 0x8F62, - 17700: 0x8F63, - 17701: 0x8F64, - 17702: 0x8F65, - 17703: 0x8F6A, - 17704: 0x8F80, - 17705: 0x8F8C, - 17706: 0x8F92, - 17707: 0x8F9D, - 17708: 0x8FA0, - 17709: 0x8FA1, - 17710: 0x8FA2, - 17711: 0x8FA4, - 17712: 0x8FA5, - 17713: 0x8FA6, - 17714: 0x8FA7, - 17715: 0x8FAA, - 17716: 0x8FAC, - 17717: 0x8FAD, - 17718: 0x8FAE, - 17719: 0x8FAF, - 17720: 0x8FB2, - 17721: 0x8FB3, - 17722: 0x8FB4, - 17723: 0x8FB5, - 17724: 0x8FB7, - 17725: 0x8FB8, - 17726: 0x8FBA, - 17727: 0x8FBB, - 17728: 0x8FBC, - 17729: 0x8FBF, - 17730: 0x8FC0, - 17731: 0x8FC3, - 17732: 0x8FC6, - 17733: 0x8FC9, - 17734: 0x8FCA, - 17735: 0x8FCB, - 17736: 0x8FCC, - 17737: 0x8FCD, - 17738: 0x8FCF, - 17739: 0x8FD2, - 17740: 0x8FD6, - 17741: 0x8FD7, - 17742: 0x8FDA, - 17743: 0x8FE0, - 17744: 0x8FE1, - 17745: 0x8FE3, - 17746: 0x8FE7, - 17747: 0x8FEC, - 17748: 0x8FEF, - 17749: 0x8FF1, - 17750: 0x8FF2, - 17751: 0x8FF4, - 17752: 0x8FF5, - 17753: 0x8FF6, - 17754: 0x8FFA, - 17755: 0x8FFB, - 17756: 0x8FFC, - 17757: 0x8FFE, - 17758: 0x8FFF, - 17759: 0x9007, - 17760: 0x9008, - 17761: 0x900C, - 17762: 0x900E, - 17763: 0x9013, - 17764: 0x9015, - 17765: 0x9018, - 17766: 0x8556, - 17767: 0x853B, - 17768: 0x84FF, - 17769: 0x84FC, - 17770: 0x8559, - 17771: 0x8548, - 17772: 0x8568, - 17773: 0x8564, - 17774: 0x855E, - 17775: 0x857A, - 17776: 0x77A2, - 17777: 0x8543, - 17778: 0x8572, - 17779: 0x857B, - 17780: 0x85A4, - 17781: 0x85A8, - 17782: 0x8587, - 17783: 0x858F, - 17784: 0x8579, - 17785: 0x85AE, - 17786: 0x859C, - 17787: 0x8585, - 17788: 0x85B9, - 17789: 0x85B7, - 17790: 0x85B0, - 17791: 0x85D3, - 17792: 0x85C1, - 17793: 0x85DC, - 17794: 0x85FF, - 17795: 0x8627, - 17796: 0x8605, - 17797: 0x8629, - 17798: 0x8616, - 17799: 0x863C, - 17800: 0x5EFE, - 17801: 0x5F08, - 17802: 0x593C, - 17803: 0x5941, - 17804: 0x8037, - 17805: 0x5955, - 17806: 0x595A, - 17807: 0x5958, - 17808: 0x530F, - 17809: 0x5C22, - 17810: 0x5C25, - 17811: 0x5C2C, - 17812: 0x5C34, - 17813: 0x624C, - 17814: 0x626A, - 17815: 0x629F, - 17816: 0x62BB, - 17817: 0x62CA, - 17818: 0x62DA, - 17819: 0x62D7, - 17820: 0x62EE, - 17821: 0x6322, - 17822: 0x62F6, - 17823: 0x6339, - 17824: 0x634B, - 17825: 0x6343, - 17826: 0x63AD, - 17827: 0x63F6, - 17828: 0x6371, - 17829: 0x637A, - 17830: 0x638E, - 17831: 0x63B4, - 17832: 0x636D, - 17833: 0x63AC, - 17834: 0x638A, - 17835: 0x6369, - 17836: 0x63AE, - 17837: 0x63BC, - 17838: 0x63F2, - 17839: 0x63F8, - 17840: 0x63E0, - 17841: 0x63FF, - 17842: 0x63C4, - 17843: 0x63DE, - 17844: 0x63CE, - 17845: 0x6452, - 17846: 0x63C6, - 17847: 0x63BE, - 17848: 0x6445, - 17849: 0x6441, - 17850: 0x640B, - 17851: 0x641B, - 17852: 0x6420, - 17853: 0x640C, - 17854: 0x6426, - 17855: 0x6421, - 17856: 0x645E, - 17857: 0x6484, - 17858: 0x646D, - 17859: 0x6496, - 17860: 0x9019, - 17861: 0x901C, - 17862: 0x9023, - 17863: 0x9024, - 17864: 0x9025, - 17865: 0x9027, - 17866: 0x9028, - 17867: 0x9029, - 17868: 0x902A, - 17869: 0x902B, - 17870: 0x902C, - 17871: 0x9030, - 17872: 0x9031, - 17873: 0x9032, - 17874: 0x9033, - 17875: 0x9034, - 17876: 0x9037, - 17877: 0x9039, - 17878: 0x903A, - 17879: 0x903D, - 17880: 0x903F, - 17881: 0x9040, - 17882: 0x9043, - 17883: 0x9045, - 17884: 0x9046, - 17885: 0x9048, - 17886: 0x9049, - 17887: 0x904A, - 17888: 0x904B, - 17889: 0x904C, - 17890: 0x904E, - 17891: 0x9054, - 17892: 0x9055, - 17893: 0x9056, - 17894: 0x9059, - 17895: 0x905A, - 17896: 0x905C, - 17897: 0x905D, - 17898: 0x905E, - 17899: 0x905F, - 17900: 0x9060, - 17901: 0x9061, - 17902: 0x9064, - 17903: 0x9066, - 17904: 0x9067, - 17905: 0x9069, - 17906: 0x906A, - 17907: 0x906B, - 17908: 0x906C, - 17909: 0x906F, - 17910: 0x9070, - 17911: 0x9071, - 17912: 0x9072, - 17913: 0x9073, - 17914: 0x9076, - 17915: 0x9077, - 17916: 0x9078, - 17917: 0x9079, - 17918: 0x907A, - 17919: 0x907B, - 17920: 0x907C, - 17921: 0x907E, - 17922: 0x9081, - 17923: 0x9084, - 17924: 0x9085, - 17925: 0x9086, - 17926: 0x9087, - 17927: 0x9089, - 17928: 0x908A, - 17929: 0x908C, - 17930: 0x908D, - 17931: 0x908E, - 17932: 0x908F, - 17933: 0x9090, - 17934: 0x9092, - 17935: 0x9094, - 17936: 0x9096, - 17937: 0x9098, - 17938: 0x909A, - 17939: 0x909C, - 17940: 0x909E, - 17941: 0x909F, - 17942: 0x90A0, - 17943: 0x90A4, - 17944: 0x90A5, - 17945: 0x90A7, - 17946: 0x90A8, - 17947: 0x90A9, - 17948: 0x90AB, - 17949: 0x90AD, - 17950: 0x90B2, - 17951: 0x90B7, - 17952: 0x90BC, - 17953: 0x90BD, - 17954: 0x90BF, - 17955: 0x90C0, - 17956: 0x647A, - 17957: 0x64B7, - 17958: 0x64B8, - 17959: 0x6499, - 17960: 0x64BA, - 17961: 0x64C0, - 17962: 0x64D0, - 17963: 0x64D7, - 17964: 0x64E4, - 17965: 0x64E2, - 17966: 0x6509, - 17967: 0x6525, - 17968: 0x652E, - 17969: 0x5F0B, - 17970: 0x5FD2, - 17971: 0x7519, - 17972: 0x5F11, - 17973: 0x535F, - 17974: 0x53F1, - 17975: 0x53FD, - 17976: 0x53E9, - 17977: 0x53E8, - 17978: 0x53FB, - 17979: 0x5412, - 17980: 0x5416, - 17981: 0x5406, - 17982: 0x544B, - 17983: 0x5452, - 17984: 0x5453, - 17985: 0x5454, - 17986: 0x5456, - 17987: 0x5443, - 17988: 0x5421, - 17989: 0x5457, - 17990: 0x5459, - 17991: 0x5423, - 17992: 0x5432, - 17993: 0x5482, - 17994: 0x5494, - 17995: 0x5477, - 17996: 0x5471, - 17997: 0x5464, - 17998: 0x549A, - 17999: 0x549B, - 18000: 0x5484, - 18001: 0x5476, - 18002: 0x5466, - 18003: 0x549D, - 18004: 0x54D0, - 18005: 0x54AD, - 18006: 0x54C2, - 18007: 0x54B4, - 18008: 0x54D2, - 18009: 0x54A7, - 18010: 0x54A6, - 18011: 0x54D3, - 18012: 0x54D4, - 18013: 0x5472, - 18014: 0x54A3, - 18015: 0x54D5, - 18016: 0x54BB, - 18017: 0x54BF, - 18018: 0x54CC, - 18019: 0x54D9, - 18020: 0x54DA, - 18021: 0x54DC, - 18022: 0x54A9, - 18023: 0x54AA, - 18024: 0x54A4, - 18025: 0x54DD, - 18026: 0x54CF, - 18027: 0x54DE, - 18028: 0x551B, - 18029: 0x54E7, - 18030: 0x5520, - 18031: 0x54FD, - 18032: 0x5514, - 18033: 0x54F3, - 18034: 0x5522, - 18035: 0x5523, - 18036: 0x550F, - 18037: 0x5511, - 18038: 0x5527, - 18039: 0x552A, - 18040: 0x5567, - 18041: 0x558F, - 18042: 0x55B5, - 18043: 0x5549, - 18044: 0x556D, - 18045: 0x5541, - 18046: 0x5555, - 18047: 0x553F, - 18048: 0x5550, - 18049: 0x553C, - 18050: 0x90C2, - 18051: 0x90C3, - 18052: 0x90C6, - 18053: 0x90C8, - 18054: 0x90C9, - 18055: 0x90CB, - 18056: 0x90CC, - 18057: 0x90CD, - 18058: 0x90D2, - 18059: 0x90D4, - 18060: 0x90D5, - 18061: 0x90D6, - 18062: 0x90D8, - 18063: 0x90D9, - 18064: 0x90DA, - 18065: 0x90DE, - 18066: 0x90DF, - 18067: 0x90E0, - 18068: 0x90E3, - 18069: 0x90E4, - 18070: 0x90E5, - 18071: 0x90E9, - 18072: 0x90EA, - 18073: 0x90EC, - 18074: 0x90EE, - 18075: 0x90F0, - 18076: 0x90F1, - 18077: 0x90F2, - 18078: 0x90F3, - 18079: 0x90F5, - 18080: 0x90F6, - 18081: 0x90F7, - 18082: 0x90F9, - 18083: 0x90FA, - 18084: 0x90FB, - 18085: 0x90FC, - 18086: 0x90FF, - 18087: 0x9100, - 18088: 0x9101, - 18089: 0x9103, - 18090: 0x9105, - 18091: 0x9106, - 18092: 0x9107, - 18093: 0x9108, - 18094: 0x9109, - 18095: 0x910A, - 18096: 0x910B, - 18097: 0x910C, - 18098: 0x910D, - 18099: 0x910E, - 18100: 0x910F, - 18101: 0x9110, - 18102: 0x9111, - 18103: 0x9112, - 18104: 0x9113, - 18105: 0x9114, - 18106: 0x9115, - 18107: 0x9116, - 18108: 0x9117, - 18109: 0x9118, - 18110: 0x911A, - 18111: 0x911B, - 18112: 0x911C, - 18113: 0x911D, - 18114: 0x911F, - 18115: 0x9120, - 18116: 0x9121, - 18117: 0x9124, - 18118: 0x9125, - 18119: 0x9126, - 18120: 0x9127, - 18121: 0x9128, - 18122: 0x9129, - 18123: 0x912A, - 18124: 0x912B, - 18125: 0x912C, - 18126: 0x912D, - 18127: 0x912E, - 18128: 0x9130, - 18129: 0x9132, - 18130: 0x9133, - 18131: 0x9134, - 18132: 0x9135, - 18133: 0x9136, - 18134: 0x9137, - 18135: 0x9138, - 18136: 0x913A, - 18137: 0x913B, - 18138: 0x913C, - 18139: 0x913D, - 18140: 0x913E, - 18141: 0x913F, - 18142: 0x9140, - 18143: 0x9141, - 18144: 0x9142, - 18145: 0x9144, - 18146: 0x5537, - 18147: 0x5556, - 18148: 0x5575, - 18149: 0x5576, - 18150: 0x5577, - 18151: 0x5533, - 18152: 0x5530, - 18153: 0x555C, - 18154: 0x558B, - 18155: 0x55D2, - 18156: 0x5583, - 18157: 0x55B1, - 18158: 0x55B9, - 18159: 0x5588, - 18160: 0x5581, - 18161: 0x559F, - 18162: 0x557E, - 18163: 0x55D6, - 18164: 0x5591, - 18165: 0x557B, - 18166: 0x55DF, - 18167: 0x55BD, - 18168: 0x55BE, - 18169: 0x5594, - 18170: 0x5599, - 18171: 0x55EA, - 18172: 0x55F7, - 18173: 0x55C9, - 18174: 0x561F, - 18175: 0x55D1, - 18176: 0x55EB, - 18177: 0x55EC, - 18178: 0x55D4, - 18179: 0x55E6, - 18180: 0x55DD, - 18181: 0x55C4, - 18182: 0x55EF, - 18183: 0x55E5, - 18184: 0x55F2, - 18185: 0x55F3, - 18186: 0x55CC, - 18187: 0x55CD, - 18188: 0x55E8, - 18189: 0x55F5, - 18190: 0x55E4, - 18191: 0x8F94, - 18192: 0x561E, - 18193: 0x5608, - 18194: 0x560C, - 18195: 0x5601, - 18196: 0x5624, - 18197: 0x5623, - 18198: 0x55FE, - 18199: 0x5600, - 18200: 0x5627, - 18201: 0x562D, - 18202: 0x5658, - 18203: 0x5639, - 18204: 0x5657, - 18205: 0x562C, - 18206: 0x564D, - 18207: 0x5662, - 18208: 0x5659, - 18209: 0x565C, - 18210: 0x564C, - 18211: 0x5654, - 18212: 0x5686, - 18213: 0x5664, - 18214: 0x5671, - 18215: 0x566B, - 18216: 0x567B, - 18217: 0x567C, - 18218: 0x5685, - 18219: 0x5693, - 18220: 0x56AF, - 18221: 0x56D4, - 18222: 0x56D7, - 18223: 0x56DD, - 18224: 0x56E1, - 18225: 0x56F5, - 18226: 0x56EB, - 18227: 0x56F9, - 18228: 0x56FF, - 18229: 0x5704, - 18230: 0x570A, - 18231: 0x5709, - 18232: 0x571C, - 18233: 0x5E0F, - 18234: 0x5E19, - 18235: 0x5E14, - 18236: 0x5E11, - 18237: 0x5E31, - 18238: 0x5E3B, - 18239: 0x5E3C, - 18240: 0x9145, - 18241: 0x9147, - 18242: 0x9148, - 18243: 0x9151, - 18244: 0x9153, - 18245: 0x9154, - 18246: 0x9155, - 18247: 0x9156, - 18248: 0x9158, - 18249: 0x9159, - 18250: 0x915B, - 18251: 0x915C, - 18252: 0x915F, - 18253: 0x9160, - 18254: 0x9166, - 18255: 0x9167, - 18256: 0x9168, - 18257: 0x916B, - 18258: 0x916D, - 18259: 0x9173, - 18260: 0x917A, - 18261: 0x917B, - 18262: 0x917C, - 18263: 0x9180, - 18264: 0x9181, - 18265: 0x9182, - 18266: 0x9183, - 18267: 0x9184, - 18268: 0x9186, - 18269: 0x9188, - 18270: 0x918A, - 18271: 0x918E, - 18272: 0x918F, - 18273: 0x9193, - 18274: 0x9194, - 18275: 0x9195, - 18276: 0x9196, - 18277: 0x9197, - 18278: 0x9198, - 18279: 0x9199, - 18280: 0x919C, - 18281: 0x919D, - 18282: 0x919E, - 18283: 0x919F, - 18284: 0x91A0, - 18285: 0x91A1, - 18286: 0x91A4, - 18287: 0x91A5, - 18288: 0x91A6, - 18289: 0x91A7, - 18290: 0x91A8, - 18291: 0x91A9, - 18292: 0x91AB, - 18293: 0x91AC, - 18294: 0x91B0, - 18295: 0x91B1, - 18296: 0x91B2, - 18297: 0x91B3, - 18298: 0x91B6, - 18299: 0x91B7, - 18300: 0x91B8, - 18301: 0x91B9, - 18302: 0x91BB, - 18303: 0x91BC, - 18304: 0x91BD, - 18305: 0x91BE, - 18306: 0x91BF, - 18307: 0x91C0, - 18308: 0x91C1, - 18309: 0x91C2, - 18310: 0x91C3, - 18311: 0x91C4, - 18312: 0x91C5, - 18313: 0x91C6, - 18314: 0x91C8, - 18315: 0x91CB, - 18316: 0x91D0, - 18317: 0x91D2, - 18318: 0x91D3, - 18319: 0x91D4, - 18320: 0x91D5, - 18321: 0x91D6, - 18322: 0x91D7, - 18323: 0x91D8, - 18324: 0x91D9, - 18325: 0x91DA, - 18326: 0x91DB, - 18327: 0x91DD, - 18328: 0x91DE, - 18329: 0x91DF, - 18330: 0x91E0, - 18331: 0x91E1, - 18332: 0x91E2, - 18333: 0x91E3, - 18334: 0x91E4, - 18335: 0x91E5, - 18336: 0x5E37, - 18337: 0x5E44, - 18338: 0x5E54, - 18339: 0x5E5B, - 18340: 0x5E5E, - 18341: 0x5E61, - 18342: 0x5C8C, - 18343: 0x5C7A, - 18344: 0x5C8D, - 18345: 0x5C90, - 18346: 0x5C96, - 18347: 0x5C88, - 18348: 0x5C98, - 18349: 0x5C99, - 18350: 0x5C91, - 18351: 0x5C9A, - 18352: 0x5C9C, - 18353: 0x5CB5, - 18354: 0x5CA2, - 18355: 0x5CBD, - 18356: 0x5CAC, - 18357: 0x5CAB, - 18358: 0x5CB1, - 18359: 0x5CA3, - 18360: 0x5CC1, - 18361: 0x5CB7, - 18362: 0x5CC4, - 18363: 0x5CD2, - 18364: 0x5CE4, - 18365: 0x5CCB, - 18366: 0x5CE5, - 18367: 0x5D02, - 18368: 0x5D03, - 18369: 0x5D27, - 18370: 0x5D26, - 18371: 0x5D2E, - 18372: 0x5D24, - 18373: 0x5D1E, - 18374: 0x5D06, - 18375: 0x5D1B, - 18376: 0x5D58, - 18377: 0x5D3E, - 18378: 0x5D34, - 18379: 0x5D3D, - 18380: 0x5D6C, - 18381: 0x5D5B, - 18382: 0x5D6F, - 18383: 0x5D5D, - 18384: 0x5D6B, - 18385: 0x5D4B, - 18386: 0x5D4A, - 18387: 0x5D69, - 18388: 0x5D74, - 18389: 0x5D82, - 18390: 0x5D99, - 18391: 0x5D9D, - 18392: 0x8C73, - 18393: 0x5DB7, - 18394: 0x5DC5, - 18395: 0x5F73, - 18396: 0x5F77, - 18397: 0x5F82, - 18398: 0x5F87, - 18399: 0x5F89, - 18400: 0x5F8C, - 18401: 0x5F95, - 18402: 0x5F99, - 18403: 0x5F9C, - 18404: 0x5FA8, - 18405: 0x5FAD, - 18406: 0x5FB5, - 18407: 0x5FBC, - 18408: 0x8862, - 18409: 0x5F61, - 18410: 0x72AD, - 18411: 0x72B0, - 18412: 0x72B4, - 18413: 0x72B7, - 18414: 0x72B8, - 18415: 0x72C3, - 18416: 0x72C1, - 18417: 0x72CE, - 18418: 0x72CD, - 18419: 0x72D2, - 18420: 0x72E8, - 18421: 0x72EF, - 18422: 0x72E9, - 18423: 0x72F2, - 18424: 0x72F4, - 18425: 0x72F7, - 18426: 0x7301, - 18427: 0x72F3, - 18428: 0x7303, - 18429: 0x72FA, - 18430: 0x91E6, - 18431: 0x91E7, - 18432: 0x91E8, - 18433: 0x91E9, - 18434: 0x91EA, - 18435: 0x91EB, - 18436: 0x91EC, - 18437: 0x91ED, - 18438: 0x91EE, - 18439: 0x91EF, - 18440: 0x91F0, - 18441: 0x91F1, - 18442: 0x91F2, - 18443: 0x91F3, - 18444: 0x91F4, - 18445: 0x91F5, - 18446: 0x91F6, - 18447: 0x91F7, - 18448: 0x91F8, - 18449: 0x91F9, - 18450: 0x91FA, - 18451: 0x91FB, - 18452: 0x91FC, - 18453: 0x91FD, - 18454: 0x91FE, - 18455: 0x91FF, - 18456: 0x9200, - 18457: 0x9201, - 18458: 0x9202, - 18459: 0x9203, - 18460: 0x9204, - 18461: 0x9205, - 18462: 0x9206, - 18463: 0x9207, - 18464: 0x9208, - 18465: 0x9209, - 18466: 0x920A, - 18467: 0x920B, - 18468: 0x920C, - 18469: 0x920D, - 18470: 0x920E, - 18471: 0x920F, - 18472: 0x9210, - 18473: 0x9211, - 18474: 0x9212, - 18475: 0x9213, - 18476: 0x9214, - 18477: 0x9215, - 18478: 0x9216, - 18479: 0x9217, - 18480: 0x9218, - 18481: 0x9219, - 18482: 0x921A, - 18483: 0x921B, - 18484: 0x921C, - 18485: 0x921D, - 18486: 0x921E, - 18487: 0x921F, - 18488: 0x9220, - 18489: 0x9221, - 18490: 0x9222, - 18491: 0x9223, - 18492: 0x9224, - 18493: 0x9225, - 18494: 0x9226, - 18495: 0x9227, - 18496: 0x9228, - 18497: 0x9229, - 18498: 0x922A, - 18499: 0x922B, - 18500: 0x922C, - 18501: 0x922D, - 18502: 0x922E, - 18503: 0x922F, - 18504: 0x9230, - 18505: 0x9231, - 18506: 0x9232, - 18507: 0x9233, - 18508: 0x9234, - 18509: 0x9235, - 18510: 0x9236, - 18511: 0x9237, - 18512: 0x9238, - 18513: 0x9239, - 18514: 0x923A, - 18515: 0x923B, - 18516: 0x923C, - 18517: 0x923D, - 18518: 0x923E, - 18519: 0x923F, - 18520: 0x9240, - 18521: 0x9241, - 18522: 0x9242, - 18523: 0x9243, - 18524: 0x9244, - 18525: 0x9245, - 18526: 0x72FB, - 18527: 0x7317, - 18528: 0x7313, - 18529: 0x7321, - 18530: 0x730A, - 18531: 0x731E, - 18532: 0x731D, - 18533: 0x7315, - 18534: 0x7322, - 18535: 0x7339, - 18536: 0x7325, - 18537: 0x732C, - 18538: 0x7338, - 18539: 0x7331, - 18540: 0x7350, - 18541: 0x734D, - 18542: 0x7357, - 18543: 0x7360, - 18544: 0x736C, - 18545: 0x736F, - 18546: 0x737E, - 18547: 0x821B, - 18548: 0x5925, - 18549: 0x98E7, - 18550: 0x5924, - 18551: 0x5902, - 18552: 0x9963, - 18553: 0x9967, - 18554: 0x9968, - 18555: 0x9969, - 18556: 0x996A, - 18557: 0x996B, - 18558: 0x996C, - 18559: 0x9974, - 18560: 0x9977, - 18561: 0x997D, - 18562: 0x9980, - 18563: 0x9984, - 18564: 0x9987, - 18565: 0x998A, - 18566: 0x998D, - 18567: 0x9990, - 18568: 0x9991, - 18569: 0x9993, - 18570: 0x9994, - 18571: 0x9995, - 18572: 0x5E80, - 18573: 0x5E91, - 18574: 0x5E8B, - 18575: 0x5E96, - 18576: 0x5EA5, - 18577: 0x5EA0, - 18578: 0x5EB9, - 18579: 0x5EB5, - 18580: 0x5EBE, - 18581: 0x5EB3, - 18582: 0x8D53, - 18583: 0x5ED2, - 18584: 0x5ED1, - 18585: 0x5EDB, - 18586: 0x5EE8, - 18587: 0x5EEA, - 18588: 0x81BA, - 18589: 0x5FC4, - 18590: 0x5FC9, - 18591: 0x5FD6, - 18592: 0x5FCF, - 18593: 0x6003, - 18594: 0x5FEE, - 18595: 0x6004, - 18596: 0x5FE1, - 18597: 0x5FE4, - 18598: 0x5FFE, - 18599: 0x6005, - 18600: 0x6006, - 18601: 0x5FEA, - 18602: 0x5FED, - 18603: 0x5FF8, - 18604: 0x6019, - 18605: 0x6035, - 18606: 0x6026, - 18607: 0x601B, - 18608: 0x600F, - 18609: 0x600D, - 18610: 0x6029, - 18611: 0x602B, - 18612: 0x600A, - 18613: 0x603F, - 18614: 0x6021, - 18615: 0x6078, - 18616: 0x6079, - 18617: 0x607B, - 18618: 0x607A, - 18619: 0x6042, - 18620: 0x9246, - 18621: 0x9247, - 18622: 0x9248, - 18623: 0x9249, - 18624: 0x924A, - 18625: 0x924B, - 18626: 0x924C, - 18627: 0x924D, - 18628: 0x924E, - 18629: 0x924F, - 18630: 0x9250, - 18631: 0x9251, - 18632: 0x9252, - 18633: 0x9253, - 18634: 0x9254, - 18635: 0x9255, - 18636: 0x9256, - 18637: 0x9257, - 18638: 0x9258, - 18639: 0x9259, - 18640: 0x925A, - 18641: 0x925B, - 18642: 0x925C, - 18643: 0x925D, - 18644: 0x925E, - 18645: 0x925F, - 18646: 0x9260, - 18647: 0x9261, - 18648: 0x9262, - 18649: 0x9263, - 18650: 0x9264, - 18651: 0x9265, - 18652: 0x9266, - 18653: 0x9267, - 18654: 0x9268, - 18655: 0x9269, - 18656: 0x926A, - 18657: 0x926B, - 18658: 0x926C, - 18659: 0x926D, - 18660: 0x926E, - 18661: 0x926F, - 18662: 0x9270, - 18663: 0x9271, - 18664: 0x9272, - 18665: 0x9273, - 18666: 0x9275, - 18667: 0x9276, - 18668: 0x9277, - 18669: 0x9278, - 18670: 0x9279, - 18671: 0x927A, - 18672: 0x927B, - 18673: 0x927C, - 18674: 0x927D, - 18675: 0x927E, - 18676: 0x927F, - 18677: 0x9280, - 18678: 0x9281, - 18679: 0x9282, - 18680: 0x9283, - 18681: 0x9284, - 18682: 0x9285, - 18683: 0x9286, - 18684: 0x9287, - 18685: 0x9288, - 18686: 0x9289, - 18687: 0x928A, - 18688: 0x928B, - 18689: 0x928C, - 18690: 0x928D, - 18691: 0x928F, - 18692: 0x9290, - 18693: 0x9291, - 18694: 0x9292, - 18695: 0x9293, - 18696: 0x9294, - 18697: 0x9295, - 18698: 0x9296, - 18699: 0x9297, - 18700: 0x9298, - 18701: 0x9299, - 18702: 0x929A, - 18703: 0x929B, - 18704: 0x929C, - 18705: 0x929D, - 18706: 0x929E, - 18707: 0x929F, - 18708: 0x92A0, - 18709: 0x92A1, - 18710: 0x92A2, - 18711: 0x92A3, - 18712: 0x92A4, - 18713: 0x92A5, - 18714: 0x92A6, - 18715: 0x92A7, - 18716: 0x606A, - 18717: 0x607D, - 18718: 0x6096, - 18719: 0x609A, - 18720: 0x60AD, - 18721: 0x609D, - 18722: 0x6083, - 18723: 0x6092, - 18724: 0x608C, - 18725: 0x609B, - 18726: 0x60EC, - 18727: 0x60BB, - 18728: 0x60B1, - 18729: 0x60DD, - 18730: 0x60D8, - 18731: 0x60C6, - 18732: 0x60DA, - 18733: 0x60B4, - 18734: 0x6120, - 18735: 0x6126, - 18736: 0x6115, - 18737: 0x6123, - 18738: 0x60F4, - 18739: 0x6100, - 18740: 0x610E, - 18741: 0x612B, - 18742: 0x614A, - 18743: 0x6175, - 18744: 0x61AC, - 18745: 0x6194, - 18746: 0x61A7, - 18747: 0x61B7, - 18748: 0x61D4, - 18749: 0x61F5, - 18750: 0x5FDD, - 18751: 0x96B3, - 18752: 0x95E9, - 18753: 0x95EB, - 18754: 0x95F1, - 18755: 0x95F3, - 18756: 0x95F5, - 18757: 0x95F6, - 18758: 0x95FC, - 18759: 0x95FE, - 18760: 0x9603, - 18761: 0x9604, - 18762: 0x9606, - 18763: 0x9608, - 18764: 0x960A, - 18765: 0x960B, - 18766: 0x960C, - 18767: 0x960D, - 18768: 0x960F, - 18769: 0x9612, - 18770: 0x9615, - 18771: 0x9616, - 18772: 0x9617, - 18773: 0x9619, - 18774: 0x961A, - 18775: 0x4E2C, - 18776: 0x723F, - 18777: 0x6215, - 18778: 0x6C35, - 18779: 0x6C54, - 18780: 0x6C5C, - 18781: 0x6C4A, - 18782: 0x6CA3, - 18783: 0x6C85, - 18784: 0x6C90, - 18785: 0x6C94, - 18786: 0x6C8C, - 18787: 0x6C68, - 18788: 0x6C69, - 18789: 0x6C74, - 18790: 0x6C76, - 18791: 0x6C86, - 18792: 0x6CA9, - 18793: 0x6CD0, - 18794: 0x6CD4, - 18795: 0x6CAD, - 18796: 0x6CF7, - 18797: 0x6CF8, - 18798: 0x6CF1, - 18799: 0x6CD7, - 18800: 0x6CB2, - 18801: 0x6CE0, - 18802: 0x6CD6, - 18803: 0x6CFA, - 18804: 0x6CEB, - 18805: 0x6CEE, - 18806: 0x6CB1, - 18807: 0x6CD3, - 18808: 0x6CEF, - 18809: 0x6CFE, - 18810: 0x92A8, - 18811: 0x92A9, - 18812: 0x92AA, - 18813: 0x92AB, - 18814: 0x92AC, - 18815: 0x92AD, - 18816: 0x92AF, - 18817: 0x92B0, - 18818: 0x92B1, - 18819: 0x92B2, - 18820: 0x92B3, - 18821: 0x92B4, - 18822: 0x92B5, - 18823: 0x92B6, - 18824: 0x92B7, - 18825: 0x92B8, - 18826: 0x92B9, - 18827: 0x92BA, - 18828: 0x92BB, - 18829: 0x92BC, - 18830: 0x92BD, - 18831: 0x92BE, - 18832: 0x92BF, - 18833: 0x92C0, - 18834: 0x92C1, - 18835: 0x92C2, - 18836: 0x92C3, - 18837: 0x92C4, - 18838: 0x92C5, - 18839: 0x92C6, - 18840: 0x92C7, - 18841: 0x92C9, - 18842: 0x92CA, - 18843: 0x92CB, - 18844: 0x92CC, - 18845: 0x92CD, - 18846: 0x92CE, - 18847: 0x92CF, - 18848: 0x92D0, - 18849: 0x92D1, - 18850: 0x92D2, - 18851: 0x92D3, - 18852: 0x92D4, - 18853: 0x92D5, - 18854: 0x92D6, - 18855: 0x92D7, - 18856: 0x92D8, - 18857: 0x92D9, - 18858: 0x92DA, - 18859: 0x92DB, - 18860: 0x92DC, - 18861: 0x92DD, - 18862: 0x92DE, - 18863: 0x92DF, - 18864: 0x92E0, - 18865: 0x92E1, - 18866: 0x92E2, - 18867: 0x92E3, - 18868: 0x92E4, - 18869: 0x92E5, - 18870: 0x92E6, - 18871: 0x92E7, - 18872: 0x92E8, - 18873: 0x92E9, - 18874: 0x92EA, - 18875: 0x92EB, - 18876: 0x92EC, - 18877: 0x92ED, - 18878: 0x92EE, - 18879: 0x92EF, - 18880: 0x92F0, - 18881: 0x92F1, - 18882: 0x92F2, - 18883: 0x92F3, - 18884: 0x92F4, - 18885: 0x92F5, - 18886: 0x92F6, - 18887: 0x92F7, - 18888: 0x92F8, - 18889: 0x92F9, - 18890: 0x92FA, - 18891: 0x92FB, - 18892: 0x92FC, - 18893: 0x92FD, - 18894: 0x92FE, - 18895: 0x92FF, - 18896: 0x9300, - 18897: 0x9301, - 18898: 0x9302, - 18899: 0x9303, - 18900: 0x9304, - 18901: 0x9305, - 18902: 0x9306, - 18903: 0x9307, - 18904: 0x9308, - 18905: 0x9309, - 18906: 0x6D39, - 18907: 0x6D27, - 18908: 0x6D0C, - 18909: 0x6D43, - 18910: 0x6D48, - 18911: 0x6D07, - 18912: 0x6D04, - 18913: 0x6D19, - 18914: 0x6D0E, - 18915: 0x6D2B, - 18916: 0x6D4D, - 18917: 0x6D2E, - 18918: 0x6D35, - 18919: 0x6D1A, - 18920: 0x6D4F, - 18921: 0x6D52, - 18922: 0x6D54, - 18923: 0x6D33, - 18924: 0x6D91, - 18925: 0x6D6F, - 18926: 0x6D9E, - 18927: 0x6DA0, - 18928: 0x6D5E, - 18929: 0x6D93, - 18930: 0x6D94, - 18931: 0x6D5C, - 18932: 0x6D60, - 18933: 0x6D7C, - 18934: 0x6D63, - 18935: 0x6E1A, - 18936: 0x6DC7, - 18937: 0x6DC5, - 18938: 0x6DDE, - 18939: 0x6E0E, - 18940: 0x6DBF, - 18941: 0x6DE0, - 18942: 0x6E11, - 18943: 0x6DE6, - 18944: 0x6DDD, - 18945: 0x6DD9, - 18946: 0x6E16, - 18947: 0x6DAB, - 18948: 0x6E0C, - 18949: 0x6DAE, - 18950: 0x6E2B, - 18951: 0x6E6E, - 18952: 0x6E4E, - 18953: 0x6E6B, - 18954: 0x6EB2, - 18955: 0x6E5F, - 18956: 0x6E86, - 18957: 0x6E53, - 18958: 0x6E54, - 18959: 0x6E32, - 18960: 0x6E25, - 18961: 0x6E44, - 18962: 0x6EDF, - 18963: 0x6EB1, - 18964: 0x6E98, - 18965: 0x6EE0, - 18966: 0x6F2D, - 18967: 0x6EE2, - 18968: 0x6EA5, - 18969: 0x6EA7, - 18970: 0x6EBD, - 18971: 0x6EBB, - 18972: 0x6EB7, - 18973: 0x6ED7, - 18974: 0x6EB4, - 18975: 0x6ECF, - 18976: 0x6E8F, - 18977: 0x6EC2, - 18978: 0x6E9F, - 18979: 0x6F62, - 18980: 0x6F46, - 18981: 0x6F47, - 18982: 0x6F24, - 18983: 0x6F15, - 18984: 0x6EF9, - 18985: 0x6F2F, - 18986: 0x6F36, - 18987: 0x6F4B, - 18988: 0x6F74, - 18989: 0x6F2A, - 18990: 0x6F09, - 18991: 0x6F29, - 18992: 0x6F89, - 18993: 0x6F8D, - 18994: 0x6F8C, - 18995: 0x6F78, - 18996: 0x6F72, - 18997: 0x6F7C, - 18998: 0x6F7A, - 18999: 0x6FD1, - 19000: 0x930A, - 19001: 0x930B, - 19002: 0x930C, - 19003: 0x930D, - 19004: 0x930E, - 19005: 0x930F, - 19006: 0x9310, - 19007: 0x9311, - 19008: 0x9312, - 19009: 0x9313, - 19010: 0x9314, - 19011: 0x9315, - 19012: 0x9316, - 19013: 0x9317, - 19014: 0x9318, - 19015: 0x9319, - 19016: 0x931A, - 19017: 0x931B, - 19018: 0x931C, - 19019: 0x931D, - 19020: 0x931E, - 19021: 0x931F, - 19022: 0x9320, - 19023: 0x9321, - 19024: 0x9322, - 19025: 0x9323, - 19026: 0x9324, - 19027: 0x9325, - 19028: 0x9326, - 19029: 0x9327, - 19030: 0x9328, - 19031: 0x9329, - 19032: 0x932A, - 19033: 0x932B, - 19034: 0x932C, - 19035: 0x932D, - 19036: 0x932E, - 19037: 0x932F, - 19038: 0x9330, - 19039: 0x9331, - 19040: 0x9332, - 19041: 0x9333, - 19042: 0x9334, - 19043: 0x9335, - 19044: 0x9336, - 19045: 0x9337, - 19046: 0x9338, - 19047: 0x9339, - 19048: 0x933A, - 19049: 0x933B, - 19050: 0x933C, - 19051: 0x933D, - 19052: 0x933F, - 19053: 0x9340, - 19054: 0x9341, - 19055: 0x9342, - 19056: 0x9343, - 19057: 0x9344, - 19058: 0x9345, - 19059: 0x9346, - 19060: 0x9347, - 19061: 0x9348, - 19062: 0x9349, - 19063: 0x934A, - 19064: 0x934B, - 19065: 0x934C, - 19066: 0x934D, - 19067: 0x934E, - 19068: 0x934F, - 19069: 0x9350, - 19070: 0x9351, - 19071: 0x9352, - 19072: 0x9353, - 19073: 0x9354, - 19074: 0x9355, - 19075: 0x9356, - 19076: 0x9357, - 19077: 0x9358, - 19078: 0x9359, - 19079: 0x935A, - 19080: 0x935B, - 19081: 0x935C, - 19082: 0x935D, - 19083: 0x935E, - 19084: 0x935F, - 19085: 0x9360, - 19086: 0x9361, - 19087: 0x9362, - 19088: 0x9363, - 19089: 0x9364, - 19090: 0x9365, - 19091: 0x9366, - 19092: 0x9367, - 19093: 0x9368, - 19094: 0x9369, - 19095: 0x936B, - 19096: 0x6FC9, - 19097: 0x6FA7, - 19098: 0x6FB9, - 19099: 0x6FB6, - 19100: 0x6FC2, - 19101: 0x6FE1, - 19102: 0x6FEE, - 19103: 0x6FDE, - 19104: 0x6FE0, - 19105: 0x6FEF, - 19106: 0x701A, - 19107: 0x7023, - 19108: 0x701B, - 19109: 0x7039, - 19110: 0x7035, - 19111: 0x704F, - 19112: 0x705E, - 19113: 0x5B80, - 19114: 0x5B84, - 19115: 0x5B95, - 19116: 0x5B93, - 19117: 0x5BA5, - 19118: 0x5BB8, - 19119: 0x752F, - 19120: 0x9A9E, - 19121: 0x6434, - 19122: 0x5BE4, - 19123: 0x5BEE, - 19124: 0x8930, - 19125: 0x5BF0, - 19126: 0x8E47, - 19127: 0x8B07, - 19128: 0x8FB6, - 19129: 0x8FD3, - 19130: 0x8FD5, - 19131: 0x8FE5, - 19132: 0x8FEE, - 19133: 0x8FE4, - 19134: 0x8FE9, - 19135: 0x8FE6, - 19136: 0x8FF3, - 19137: 0x8FE8, - 19138: 0x9005, - 19139: 0x9004, - 19140: 0x900B, - 19141: 0x9026, - 19142: 0x9011, - 19143: 0x900D, - 19144: 0x9016, - 19145: 0x9021, - 19146: 0x9035, - 19147: 0x9036, - 19148: 0x902D, - 19149: 0x902F, - 19150: 0x9044, - 19151: 0x9051, - 19152: 0x9052, - 19153: 0x9050, - 19154: 0x9068, - 19155: 0x9058, - 19156: 0x9062, - 19157: 0x905B, - 19158: 0x66B9, - 19159: 0x9074, - 19160: 0x907D, - 19161: 0x9082, - 19162: 0x9088, - 19163: 0x9083, - 19164: 0x908B, - 19165: 0x5F50, - 19166: 0x5F57, - 19167: 0x5F56, - 19168: 0x5F58, - 19169: 0x5C3B, - 19170: 0x54AB, - 19171: 0x5C50, - 19172: 0x5C59, - 19173: 0x5B71, - 19174: 0x5C63, - 19175: 0x5C66, - 19176: 0x7FBC, - 19177: 0x5F2A, - 19178: 0x5F29, - 19179: 0x5F2D, - 19180: 0x8274, - 19181: 0x5F3C, - 19182: 0x9B3B, - 19183: 0x5C6E, - 19184: 0x5981, - 19185: 0x5983, - 19186: 0x598D, - 19187: 0x59A9, - 19188: 0x59AA, - 19189: 0x59A3, - 19190: 0x936C, - 19191: 0x936D, - 19192: 0x936E, - 19193: 0x936F, - 19194: 0x9370, - 19195: 0x9371, - 19196: 0x9372, - 19197: 0x9373, - 19198: 0x9374, - 19199: 0x9375, - 19200: 0x9376, - 19201: 0x9377, - 19202: 0x9378, - 19203: 0x9379, - 19204: 0x937A, - 19205: 0x937B, - 19206: 0x937C, - 19207: 0x937D, - 19208: 0x937E, - 19209: 0x937F, - 19210: 0x9380, - 19211: 0x9381, - 19212: 0x9382, - 19213: 0x9383, - 19214: 0x9384, - 19215: 0x9385, - 19216: 0x9386, - 19217: 0x9387, - 19218: 0x9388, - 19219: 0x9389, - 19220: 0x938A, - 19221: 0x938B, - 19222: 0x938C, - 19223: 0x938D, - 19224: 0x938E, - 19225: 0x9390, - 19226: 0x9391, - 19227: 0x9392, - 19228: 0x9393, - 19229: 0x9394, - 19230: 0x9395, - 19231: 0x9396, - 19232: 0x9397, - 19233: 0x9398, - 19234: 0x9399, - 19235: 0x939A, - 19236: 0x939B, - 19237: 0x939C, - 19238: 0x939D, - 19239: 0x939E, - 19240: 0x939F, - 19241: 0x93A0, - 19242: 0x93A1, - 19243: 0x93A2, - 19244: 0x93A3, - 19245: 0x93A4, - 19246: 0x93A5, - 19247: 0x93A6, - 19248: 0x93A7, - 19249: 0x93A8, - 19250: 0x93A9, - 19251: 0x93AA, - 19252: 0x93AB, - 19253: 0x93AC, - 19254: 0x93AD, - 19255: 0x93AE, - 19256: 0x93AF, - 19257: 0x93B0, - 19258: 0x93B1, - 19259: 0x93B2, - 19260: 0x93B3, - 19261: 0x93B4, - 19262: 0x93B5, - 19263: 0x93B6, - 19264: 0x93B7, - 19265: 0x93B8, - 19266: 0x93B9, - 19267: 0x93BA, - 19268: 0x93BB, - 19269: 0x93BC, - 19270: 0x93BD, - 19271: 0x93BE, - 19272: 0x93BF, - 19273: 0x93C0, - 19274: 0x93C1, - 19275: 0x93C2, - 19276: 0x93C3, - 19277: 0x93C4, - 19278: 0x93C5, - 19279: 0x93C6, - 19280: 0x93C7, - 19281: 0x93C8, - 19282: 0x93C9, - 19283: 0x93CB, - 19284: 0x93CC, - 19285: 0x93CD, - 19286: 0x5997, - 19287: 0x59CA, - 19288: 0x59AB, - 19289: 0x599E, - 19290: 0x59A4, - 19291: 0x59D2, - 19292: 0x59B2, - 19293: 0x59AF, - 19294: 0x59D7, - 19295: 0x59BE, - 19296: 0x5A05, - 19297: 0x5A06, - 19298: 0x59DD, - 19299: 0x5A08, - 19300: 0x59E3, - 19301: 0x59D8, - 19302: 0x59F9, - 19303: 0x5A0C, - 19304: 0x5A09, - 19305: 0x5A32, - 19306: 0x5A34, - 19307: 0x5A11, - 19308: 0x5A23, - 19309: 0x5A13, - 19310: 0x5A40, - 19311: 0x5A67, - 19312: 0x5A4A, - 19313: 0x5A55, - 19314: 0x5A3C, - 19315: 0x5A62, - 19316: 0x5A75, - 19317: 0x80EC, - 19318: 0x5AAA, - 19319: 0x5A9B, - 19320: 0x5A77, - 19321: 0x5A7A, - 19322: 0x5ABE, - 19323: 0x5AEB, - 19324: 0x5AB2, - 19325: 0x5AD2, - 19326: 0x5AD4, - 19327: 0x5AB8, - 19328: 0x5AE0, - 19329: 0x5AE3, - 19330: 0x5AF1, - 19331: 0x5AD6, - 19332: 0x5AE6, - 19333: 0x5AD8, - 19334: 0x5ADC, - 19335: 0x5B09, - 19336: 0x5B17, - 19337: 0x5B16, - 19338: 0x5B32, - 19339: 0x5B37, - 19340: 0x5B40, - 19341: 0x5C15, - 19342: 0x5C1C, - 19343: 0x5B5A, - 19344: 0x5B65, - 19345: 0x5B73, - 19346: 0x5B51, - 19347: 0x5B53, - 19348: 0x5B62, - 19349: 0x9A75, - 19350: 0x9A77, - 19351: 0x9A78, - 19352: 0x9A7A, - 19353: 0x9A7F, - 19354: 0x9A7D, - 19355: 0x9A80, - 19356: 0x9A81, - 19357: 0x9A85, - 19358: 0x9A88, - 19359: 0x9A8A, - 19360: 0x9A90, - 19361: 0x9A92, - 19362: 0x9A93, - 19363: 0x9A96, - 19364: 0x9A98, - 19365: 0x9A9B, - 19366: 0x9A9C, - 19367: 0x9A9D, - 19368: 0x9A9F, - 19369: 0x9AA0, - 19370: 0x9AA2, - 19371: 0x9AA3, - 19372: 0x9AA5, - 19373: 0x9AA7, - 19374: 0x7E9F, - 19375: 0x7EA1, - 19376: 0x7EA3, - 19377: 0x7EA5, - 19378: 0x7EA8, - 19379: 0x7EA9, - 19380: 0x93CE, - 19381: 0x93CF, - 19382: 0x93D0, - 19383: 0x93D1, - 19384: 0x93D2, - 19385: 0x93D3, - 19386: 0x93D4, - 19387: 0x93D5, - 19388: 0x93D7, - 19389: 0x93D8, - 19390: 0x93D9, - 19391: 0x93DA, - 19392: 0x93DB, - 19393: 0x93DC, - 19394: 0x93DD, - 19395: 0x93DE, - 19396: 0x93DF, - 19397: 0x93E0, - 19398: 0x93E1, - 19399: 0x93E2, - 19400: 0x93E3, - 19401: 0x93E4, - 19402: 0x93E5, - 19403: 0x93E6, - 19404: 0x93E7, - 19405: 0x93E8, - 19406: 0x93E9, - 19407: 0x93EA, - 19408: 0x93EB, - 19409: 0x93EC, - 19410: 0x93ED, - 19411: 0x93EE, - 19412: 0x93EF, - 19413: 0x93F0, - 19414: 0x93F1, - 19415: 0x93F2, - 19416: 0x93F3, - 19417: 0x93F4, - 19418: 0x93F5, - 19419: 0x93F6, - 19420: 0x93F7, - 19421: 0x93F8, - 19422: 0x93F9, - 19423: 0x93FA, - 19424: 0x93FB, - 19425: 0x93FC, - 19426: 0x93FD, - 19427: 0x93FE, - 19428: 0x93FF, - 19429: 0x9400, - 19430: 0x9401, - 19431: 0x9402, - 19432: 0x9403, - 19433: 0x9404, - 19434: 0x9405, - 19435: 0x9406, - 19436: 0x9407, - 19437: 0x9408, - 19438: 0x9409, - 19439: 0x940A, - 19440: 0x940B, - 19441: 0x940C, - 19442: 0x940D, - 19443: 0x940E, - 19444: 0x940F, - 19445: 0x9410, - 19446: 0x9411, - 19447: 0x9412, - 19448: 0x9413, - 19449: 0x9414, - 19450: 0x9415, - 19451: 0x9416, - 19452: 0x9417, - 19453: 0x9418, - 19454: 0x9419, - 19455: 0x941A, - 19456: 0x941B, - 19457: 0x941C, - 19458: 0x941D, - 19459: 0x941E, - 19460: 0x941F, - 19461: 0x9420, - 19462: 0x9421, - 19463: 0x9422, - 19464: 0x9423, - 19465: 0x9424, - 19466: 0x9425, - 19467: 0x9426, - 19468: 0x9427, - 19469: 0x9428, - 19470: 0x9429, - 19471: 0x942A, - 19472: 0x942B, - 19473: 0x942C, - 19474: 0x942D, - 19475: 0x942E, - 19476: 0x7EAD, - 19477: 0x7EB0, - 19478: 0x7EBE, - 19479: 0x7EC0, - 19480: 0x7EC1, - 19481: 0x7EC2, - 19482: 0x7EC9, - 19483: 0x7ECB, - 19484: 0x7ECC, - 19485: 0x7ED0, - 19486: 0x7ED4, - 19487: 0x7ED7, - 19488: 0x7EDB, - 19489: 0x7EE0, - 19490: 0x7EE1, - 19491: 0x7EE8, - 19492: 0x7EEB, - 19493: 0x7EEE, - 19494: 0x7EEF, - 19495: 0x7EF1, - 19496: 0x7EF2, - 19497: 0x7F0D, - 19498: 0x7EF6, - 19499: 0x7EFA, - 19500: 0x7EFB, - 19501: 0x7EFE, - 19502: 0x7F01, - 19503: 0x7F02, - 19504: 0x7F03, - 19505: 0x7F07, - 19506: 0x7F08, - 19507: 0x7F0B, - 19508: 0x7F0C, - 19509: 0x7F0F, - 19510: 0x7F11, - 19511: 0x7F12, - 19512: 0x7F17, - 19513: 0x7F19, - 19514: 0x7F1C, - 19515: 0x7F1B, - 19516: 0x7F1F, - 19517: 0x7F21, - 19518: 0x7F22, - 19519: 0x7F23, - 19520: 0x7F24, - 19521: 0x7F25, - 19522: 0x7F26, - 19523: 0x7F27, - 19524: 0x7F2A, - 19525: 0x7F2B, - 19526: 0x7F2C, - 19527: 0x7F2D, - 19528: 0x7F2F, - 19529: 0x7F30, - 19530: 0x7F31, - 19531: 0x7F32, - 19532: 0x7F33, - 19533: 0x7F35, - 19534: 0x5E7A, - 19535: 0x757F, - 19536: 0x5DDB, - 19537: 0x753E, - 19538: 0x9095, - 19539: 0x738E, - 19540: 0x7391, - 19541: 0x73AE, - 19542: 0x73A2, - 19543: 0x739F, - 19544: 0x73CF, - 19545: 0x73C2, - 19546: 0x73D1, - 19547: 0x73B7, - 19548: 0x73B3, - 19549: 0x73C0, - 19550: 0x73C9, - 19551: 0x73C8, - 19552: 0x73E5, - 19553: 0x73D9, - 19554: 0x987C, - 19555: 0x740A, - 19556: 0x73E9, - 19557: 0x73E7, - 19558: 0x73DE, - 19559: 0x73BA, - 19560: 0x73F2, - 19561: 0x740F, - 19562: 0x742A, - 19563: 0x745B, - 19564: 0x7426, - 19565: 0x7425, - 19566: 0x7428, - 19567: 0x7430, - 19568: 0x742E, - 19569: 0x742C, - 19570: 0x942F, - 19571: 0x9430, - 19572: 0x9431, - 19573: 0x9432, - 19574: 0x9433, - 19575: 0x9434, - 19576: 0x9435, - 19577: 0x9436, - 19578: 0x9437, - 19579: 0x9438, - 19580: 0x9439, - 19581: 0x943A, - 19582: 0x943B, - 19583: 0x943C, - 19584: 0x943D, - 19585: 0x943F, - 19586: 0x9440, - 19587: 0x9441, - 19588: 0x9442, - 19589: 0x9443, - 19590: 0x9444, - 19591: 0x9445, - 19592: 0x9446, - 19593: 0x9447, - 19594: 0x9448, - 19595: 0x9449, - 19596: 0x944A, - 19597: 0x944B, - 19598: 0x944C, - 19599: 0x944D, - 19600: 0x944E, - 19601: 0x944F, - 19602: 0x9450, - 19603: 0x9451, - 19604: 0x9452, - 19605: 0x9453, - 19606: 0x9454, - 19607: 0x9455, - 19608: 0x9456, - 19609: 0x9457, - 19610: 0x9458, - 19611: 0x9459, - 19612: 0x945A, - 19613: 0x945B, - 19614: 0x945C, - 19615: 0x945D, - 19616: 0x945E, - 19617: 0x945F, - 19618: 0x9460, - 19619: 0x9461, - 19620: 0x9462, - 19621: 0x9463, - 19622: 0x9464, - 19623: 0x9465, - 19624: 0x9466, - 19625: 0x9467, - 19626: 0x9468, - 19627: 0x9469, - 19628: 0x946A, - 19629: 0x946C, - 19630: 0x946D, - 19631: 0x946E, - 19632: 0x946F, - 19633: 0x9470, - 19634: 0x9471, - 19635: 0x9472, - 19636: 0x9473, - 19637: 0x9474, - 19638: 0x9475, - 19639: 0x9476, - 19640: 0x9477, - 19641: 0x9478, - 19642: 0x9479, - 19643: 0x947A, - 19644: 0x947B, - 19645: 0x947C, - 19646: 0x947D, - 19647: 0x947E, - 19648: 0x947F, - 19649: 0x9480, - 19650: 0x9481, - 19651: 0x9482, - 19652: 0x9483, - 19653: 0x9484, - 19654: 0x9491, - 19655: 0x9496, - 19656: 0x9498, - 19657: 0x94C7, - 19658: 0x94CF, - 19659: 0x94D3, - 19660: 0x94D4, - 19661: 0x94DA, - 19662: 0x94E6, - 19663: 0x94FB, - 19664: 0x951C, - 19665: 0x9520, - 19666: 0x741B, - 19667: 0x741A, - 19668: 0x7441, - 19669: 0x745C, - 19670: 0x7457, - 19671: 0x7455, - 19672: 0x7459, - 19673: 0x7477, - 19674: 0x746D, - 19675: 0x747E, - 19676: 0x749C, - 19677: 0x748E, - 19678: 0x7480, - 19679: 0x7481, - 19680: 0x7487, - 19681: 0x748B, - 19682: 0x749E, - 19683: 0x74A8, - 19684: 0x74A9, - 19685: 0x7490, - 19686: 0x74A7, - 19687: 0x74D2, - 19688: 0x74BA, - 19689: 0x97EA, - 19690: 0x97EB, - 19691: 0x97EC, - 19692: 0x674C, - 19693: 0x6753, - 19694: 0x675E, - 19695: 0x6748, - 19696: 0x6769, - 19697: 0x67A5, - 19698: 0x6787, - 19699: 0x676A, - 19700: 0x6773, - 19701: 0x6798, - 19702: 0x67A7, - 19703: 0x6775, - 19704: 0x67A8, - 19705: 0x679E, - 19706: 0x67AD, - 19707: 0x678B, - 19708: 0x6777, - 19709: 0x677C, - 19710: 0x67F0, - 19711: 0x6809, - 19712: 0x67D8, - 19713: 0x680A, - 19714: 0x67E9, - 19715: 0x67B0, - 19716: 0x680C, - 19717: 0x67D9, - 19718: 0x67B5, - 19719: 0x67DA, - 19720: 0x67B3, - 19721: 0x67DD, - 19722: 0x6800, - 19723: 0x67C3, - 19724: 0x67B8, - 19725: 0x67E2, - 19726: 0x680E, - 19727: 0x67C1, - 19728: 0x67FD, - 19729: 0x6832, - 19730: 0x6833, - 19731: 0x6860, - 19732: 0x6861, - 19733: 0x684E, - 19734: 0x6862, - 19735: 0x6844, - 19736: 0x6864, - 19737: 0x6883, - 19738: 0x681D, - 19739: 0x6855, - 19740: 0x6866, - 19741: 0x6841, - 19742: 0x6867, - 19743: 0x6840, - 19744: 0x683E, - 19745: 0x684A, - 19746: 0x6849, - 19747: 0x6829, - 19748: 0x68B5, - 19749: 0x688F, - 19750: 0x6874, - 19751: 0x6877, - 19752: 0x6893, - 19753: 0x686B, - 19754: 0x68C2, - 19755: 0x696E, - 19756: 0x68FC, - 19757: 0x691F, - 19758: 0x6920, - 19759: 0x68F9, - 19760: 0x9527, - 19761: 0x9533, - 19762: 0x953D, - 19763: 0x9543, - 19764: 0x9548, - 19765: 0x954B, - 19766: 0x9555, - 19767: 0x955A, - 19768: 0x9560, - 19769: 0x956E, - 19770: 0x9574, - 19771: 0x9575, - 19772: 0x9577, - 19773: 0x9578, - 19774: 0x9579, - 19775: 0x957A, - 19776: 0x957B, - 19777: 0x957C, - 19778: 0x957D, - 19779: 0x957E, - 19780: 0x9580, - 19781: 0x9581, - 19782: 0x9582, - 19783: 0x9583, - 19784: 0x9584, - 19785: 0x9585, - 19786: 0x9586, - 19787: 0x9587, - 19788: 0x9588, - 19789: 0x9589, - 19790: 0x958A, - 19791: 0x958B, - 19792: 0x958C, - 19793: 0x958D, - 19794: 0x958E, - 19795: 0x958F, - 19796: 0x9590, - 19797: 0x9591, - 19798: 0x9592, - 19799: 0x9593, - 19800: 0x9594, - 19801: 0x9595, - 19802: 0x9596, - 19803: 0x9597, - 19804: 0x9598, - 19805: 0x9599, - 19806: 0x959A, - 19807: 0x959B, - 19808: 0x959C, - 19809: 0x959D, - 19810: 0x959E, - 19811: 0x959F, - 19812: 0x95A0, - 19813: 0x95A1, - 19814: 0x95A2, - 19815: 0x95A3, - 19816: 0x95A4, - 19817: 0x95A5, - 19818: 0x95A6, - 19819: 0x95A7, - 19820: 0x95A8, - 19821: 0x95A9, - 19822: 0x95AA, - 19823: 0x95AB, - 19824: 0x95AC, - 19825: 0x95AD, - 19826: 0x95AE, - 19827: 0x95AF, - 19828: 0x95B0, - 19829: 0x95B1, - 19830: 0x95B2, - 19831: 0x95B3, - 19832: 0x95B4, - 19833: 0x95B5, - 19834: 0x95B6, - 19835: 0x95B7, - 19836: 0x95B8, - 19837: 0x95B9, - 19838: 0x95BA, - 19839: 0x95BB, - 19840: 0x95BC, - 19841: 0x95BD, - 19842: 0x95BE, - 19843: 0x95BF, - 19844: 0x95C0, - 19845: 0x95C1, - 19846: 0x95C2, - 19847: 0x95C3, - 19848: 0x95C4, - 19849: 0x95C5, - 19850: 0x95C6, - 19851: 0x95C7, - 19852: 0x95C8, - 19853: 0x95C9, - 19854: 0x95CA, - 19855: 0x95CB, - 19856: 0x6924, - 19857: 0x68F0, - 19858: 0x690B, - 19859: 0x6901, - 19860: 0x6957, - 19861: 0x68E3, - 19862: 0x6910, - 19863: 0x6971, - 19864: 0x6939, - 19865: 0x6960, - 19866: 0x6942, - 19867: 0x695D, - 19868: 0x6984, - 19869: 0x696B, - 19870: 0x6980, - 19871: 0x6998, - 19872: 0x6978, - 19873: 0x6934, - 19874: 0x69CC, - 19875: 0x6987, - 19876: 0x6988, - 19877: 0x69CE, - 19878: 0x6989, - 19879: 0x6966, - 19880: 0x6963, - 19881: 0x6979, - 19882: 0x699B, - 19883: 0x69A7, - 19884: 0x69BB, - 19885: 0x69AB, - 19886: 0x69AD, - 19887: 0x69D4, - 19888: 0x69B1, - 19889: 0x69C1, - 19890: 0x69CA, - 19891: 0x69DF, - 19892: 0x6995, - 19893: 0x69E0, - 19894: 0x698D, - 19895: 0x69FF, - 19896: 0x6A2F, - 19897: 0x69ED, - 19898: 0x6A17, - 19899: 0x6A18, - 19900: 0x6A65, - 19901: 0x69F2, - 19902: 0x6A44, - 19903: 0x6A3E, - 19904: 0x6AA0, - 19905: 0x6A50, - 19906: 0x6A5B, - 19907: 0x6A35, - 19908: 0x6A8E, - 19909: 0x6A79, - 19910: 0x6A3D, - 19911: 0x6A28, - 19912: 0x6A58, - 19913: 0x6A7C, - 19914: 0x6A91, - 19915: 0x6A90, - 19916: 0x6AA9, - 19917: 0x6A97, - 19918: 0x6AAB, - 19919: 0x7337, - 19920: 0x7352, - 19921: 0x6B81, - 19922: 0x6B82, - 19923: 0x6B87, - 19924: 0x6B84, - 19925: 0x6B92, - 19926: 0x6B93, - 19927: 0x6B8D, - 19928: 0x6B9A, - 19929: 0x6B9B, - 19930: 0x6BA1, - 19931: 0x6BAA, - 19932: 0x8F6B, - 19933: 0x8F6D, - 19934: 0x8F71, - 19935: 0x8F72, - 19936: 0x8F73, - 19937: 0x8F75, - 19938: 0x8F76, - 19939: 0x8F78, - 19940: 0x8F77, - 19941: 0x8F79, - 19942: 0x8F7A, - 19943: 0x8F7C, - 19944: 0x8F7E, - 19945: 0x8F81, - 19946: 0x8F82, - 19947: 0x8F84, - 19948: 0x8F87, - 19949: 0x8F8B, - 19950: 0x95CC, - 19951: 0x95CD, - 19952: 0x95CE, - 19953: 0x95CF, - 19954: 0x95D0, - 19955: 0x95D1, - 19956: 0x95D2, - 19957: 0x95D3, - 19958: 0x95D4, - 19959: 0x95D5, - 19960: 0x95D6, - 19961: 0x95D7, - 19962: 0x95D8, - 19963: 0x95D9, - 19964: 0x95DA, - 19965: 0x95DB, - 19966: 0x95DC, - 19967: 0x95DD, - 19968: 0x95DE, - 19969: 0x95DF, - 19970: 0x95E0, - 19971: 0x95E1, - 19972: 0x95E2, - 19973: 0x95E3, - 19974: 0x95E4, - 19975: 0x95E5, - 19976: 0x95E6, - 19977: 0x95E7, - 19978: 0x95EC, - 19979: 0x95FF, - 19980: 0x9607, - 19981: 0x9613, - 19982: 0x9618, - 19983: 0x961B, - 19984: 0x961E, - 19985: 0x9620, - 19986: 0x9623, - 19987: 0x9624, - 19988: 0x9625, - 19989: 0x9626, - 19990: 0x9627, - 19991: 0x9628, - 19992: 0x9629, - 19993: 0x962B, - 19994: 0x962C, - 19995: 0x962D, - 19996: 0x962F, - 19997: 0x9630, - 19998: 0x9637, - 19999: 0x9638, - 20000: 0x9639, - 20001: 0x963A, - 20002: 0x963E, - 20003: 0x9641, - 20004: 0x9643, - 20005: 0x964A, - 20006: 0x964E, - 20007: 0x964F, - 20008: 0x9651, - 20009: 0x9652, - 20010: 0x9653, - 20011: 0x9656, - 20012: 0x9657, - 20013: 0x9658, - 20014: 0x9659, - 20015: 0x965A, - 20016: 0x965C, - 20017: 0x965D, - 20018: 0x965E, - 20019: 0x9660, - 20020: 0x9663, - 20021: 0x9665, - 20022: 0x9666, - 20023: 0x966B, - 20024: 0x966D, - 20025: 0x966E, - 20026: 0x966F, - 20027: 0x9670, - 20028: 0x9671, - 20029: 0x9673, - 20030: 0x9678, - 20031: 0x9679, - 20032: 0x967A, - 20033: 0x967B, - 20034: 0x967C, - 20035: 0x967D, - 20036: 0x967E, - 20037: 0x967F, - 20038: 0x9680, - 20039: 0x9681, - 20040: 0x9682, - 20041: 0x9683, - 20042: 0x9684, - 20043: 0x9687, - 20044: 0x9689, - 20045: 0x968A, - 20046: 0x8F8D, - 20047: 0x8F8E, - 20048: 0x8F8F, - 20049: 0x8F98, - 20050: 0x8F9A, - 20051: 0x8ECE, - 20052: 0x620B, - 20053: 0x6217, - 20054: 0x621B, - 20055: 0x621F, - 20056: 0x6222, - 20057: 0x6221, - 20058: 0x6225, - 20059: 0x6224, - 20060: 0x622C, - 20061: 0x81E7, - 20062: 0x74EF, - 20063: 0x74F4, - 20064: 0x74FF, - 20065: 0x750F, - 20066: 0x7511, - 20067: 0x7513, - 20068: 0x6534, - 20069: 0x65EE, - 20070: 0x65EF, - 20071: 0x65F0, - 20072: 0x660A, - 20073: 0x6619, - 20074: 0x6772, - 20075: 0x6603, - 20076: 0x6615, - 20077: 0x6600, - 20078: 0x7085, - 20079: 0x66F7, - 20080: 0x661D, - 20081: 0x6634, - 20082: 0x6631, - 20083: 0x6636, - 20084: 0x6635, - 20085: 0x8006, - 20086: 0x665F, - 20087: 0x6654, - 20088: 0x6641, - 20089: 0x664F, - 20090: 0x6656, - 20091: 0x6661, - 20092: 0x6657, - 20093: 0x6677, - 20094: 0x6684, - 20095: 0x668C, - 20096: 0x66A7, - 20097: 0x669D, - 20098: 0x66BE, - 20099: 0x66DB, - 20100: 0x66DC, - 20101: 0x66E6, - 20102: 0x66E9, - 20103: 0x8D32, - 20104: 0x8D33, - 20105: 0x8D36, - 20106: 0x8D3B, - 20107: 0x8D3D, - 20108: 0x8D40, - 20109: 0x8D45, - 20110: 0x8D46, - 20111: 0x8D48, - 20112: 0x8D49, - 20113: 0x8D47, - 20114: 0x8D4D, - 20115: 0x8D55, - 20116: 0x8D59, - 20117: 0x89C7, - 20118: 0x89CA, - 20119: 0x89CB, - 20120: 0x89CC, - 20121: 0x89CE, - 20122: 0x89CF, - 20123: 0x89D0, - 20124: 0x89D1, - 20125: 0x726E, - 20126: 0x729F, - 20127: 0x725D, - 20128: 0x7266, - 20129: 0x726F, - 20130: 0x727E, - 20131: 0x727F, - 20132: 0x7284, - 20133: 0x728B, - 20134: 0x728D, - 20135: 0x728F, - 20136: 0x7292, - 20137: 0x6308, - 20138: 0x6332, - 20139: 0x63B0, - 20140: 0x968C, - 20141: 0x968E, - 20142: 0x9691, - 20143: 0x9692, - 20144: 0x9693, - 20145: 0x9695, - 20146: 0x9696, - 20147: 0x969A, - 20148: 0x969B, - 20149: 0x969D, - 20150: 0x969E, - 20151: 0x969F, - 20152: 0x96A0, - 20153: 0x96A1, - 20154: 0x96A2, - 20155: 0x96A3, - 20156: 0x96A4, - 20157: 0x96A5, - 20158: 0x96A6, - 20159: 0x96A8, - 20160: 0x96A9, - 20161: 0x96AA, - 20162: 0x96AB, - 20163: 0x96AC, - 20164: 0x96AD, - 20165: 0x96AE, - 20166: 0x96AF, - 20167: 0x96B1, - 20168: 0x96B2, - 20169: 0x96B4, - 20170: 0x96B5, - 20171: 0x96B7, - 20172: 0x96B8, - 20173: 0x96BA, - 20174: 0x96BB, - 20175: 0x96BF, - 20176: 0x96C2, - 20177: 0x96C3, - 20178: 0x96C8, - 20179: 0x96CA, - 20180: 0x96CB, - 20181: 0x96D0, - 20182: 0x96D1, - 20183: 0x96D3, - 20184: 0x96D4, - 20185: 0x96D6, - 20186: 0x96D7, - 20187: 0x96D8, - 20188: 0x96D9, - 20189: 0x96DA, - 20190: 0x96DB, - 20191: 0x96DC, - 20192: 0x96DD, - 20193: 0x96DE, - 20194: 0x96DF, - 20195: 0x96E1, - 20196: 0x96E2, - 20197: 0x96E3, - 20198: 0x96E4, - 20199: 0x96E5, - 20200: 0x96E6, - 20201: 0x96E7, - 20202: 0x96EB, - 20203: 0x96EC, - 20204: 0x96ED, - 20205: 0x96EE, - 20206: 0x96F0, - 20207: 0x96F1, - 20208: 0x96F2, - 20209: 0x96F4, - 20210: 0x96F5, - 20211: 0x96F8, - 20212: 0x96FA, - 20213: 0x96FB, - 20214: 0x96FC, - 20215: 0x96FD, - 20216: 0x96FF, - 20217: 0x9702, - 20218: 0x9703, - 20219: 0x9705, - 20220: 0x970A, - 20221: 0x970B, - 20222: 0x970C, - 20223: 0x9710, - 20224: 0x9711, - 20225: 0x9712, - 20226: 0x9714, - 20227: 0x9715, - 20228: 0x9717, - 20229: 0x9718, - 20230: 0x9719, - 20231: 0x971A, - 20232: 0x971B, - 20233: 0x971D, - 20234: 0x971F, - 20235: 0x9720, - 20236: 0x643F, - 20237: 0x64D8, - 20238: 0x8004, - 20239: 0x6BEA, - 20240: 0x6BF3, - 20241: 0x6BFD, - 20242: 0x6BF5, - 20243: 0x6BF9, - 20244: 0x6C05, - 20245: 0x6C07, - 20246: 0x6C06, - 20247: 0x6C0D, - 20248: 0x6C15, - 20249: 0x6C18, - 20250: 0x6C19, - 20251: 0x6C1A, - 20252: 0x6C21, - 20253: 0x6C29, - 20254: 0x6C24, - 20255: 0x6C2A, - 20256: 0x6C32, - 20257: 0x6535, - 20258: 0x6555, - 20259: 0x656B, - 20260: 0x724D, - 20261: 0x7252, - 20262: 0x7256, - 20263: 0x7230, - 20264: 0x8662, - 20265: 0x5216, - 20266: 0x809F, - 20267: 0x809C, - 20268: 0x8093, - 20269: 0x80BC, - 20270: 0x670A, - 20271: 0x80BD, - 20272: 0x80B1, - 20273: 0x80AB, - 20274: 0x80AD, - 20275: 0x80B4, - 20276: 0x80B7, - 20277: 0x80E7, - 20278: 0x80E8, - 20279: 0x80E9, - 20280: 0x80EA, - 20281: 0x80DB, - 20282: 0x80C2, - 20283: 0x80C4, - 20284: 0x80D9, - 20285: 0x80CD, - 20286: 0x80D7, - 20287: 0x6710, - 20288: 0x80DD, - 20289: 0x80EB, - 20290: 0x80F1, - 20291: 0x80F4, - 20292: 0x80ED, - 20293: 0x810D, - 20294: 0x810E, - 20295: 0x80F2, - 20296: 0x80FC, - 20297: 0x6715, - 20298: 0x8112, - 20299: 0x8C5A, - 20300: 0x8136, - 20301: 0x811E, - 20302: 0x812C, - 20303: 0x8118, - 20304: 0x8132, - 20305: 0x8148, - 20306: 0x814C, - 20307: 0x8153, - 20308: 0x8174, - 20309: 0x8159, - 20310: 0x815A, - 20311: 0x8171, - 20312: 0x8160, - 20313: 0x8169, - 20314: 0x817C, - 20315: 0x817D, - 20316: 0x816D, - 20317: 0x8167, - 20318: 0x584D, - 20319: 0x5AB5, - 20320: 0x8188, - 20321: 0x8182, - 20322: 0x8191, - 20323: 0x6ED5, - 20324: 0x81A3, - 20325: 0x81AA, - 20326: 0x81CC, - 20327: 0x6726, - 20328: 0x81CA, - 20329: 0x81BB, - 20330: 0x9721, - 20331: 0x9722, - 20332: 0x9723, - 20333: 0x9724, - 20334: 0x9725, - 20335: 0x9726, - 20336: 0x9727, - 20337: 0x9728, - 20338: 0x9729, - 20339: 0x972B, - 20340: 0x972C, - 20341: 0x972E, - 20342: 0x972F, - 20343: 0x9731, - 20344: 0x9733, - 20345: 0x9734, - 20346: 0x9735, - 20347: 0x9736, - 20348: 0x9737, - 20349: 0x973A, - 20350: 0x973B, - 20351: 0x973C, - 20352: 0x973D, - 20353: 0x973F, - 20354: 0x9740, - 20355: 0x9741, - 20356: 0x9742, - 20357: 0x9743, - 20358: 0x9744, - 20359: 0x9745, - 20360: 0x9746, - 20361: 0x9747, - 20362: 0x9748, - 20363: 0x9749, - 20364: 0x974A, - 20365: 0x974B, - 20366: 0x974C, - 20367: 0x974D, - 20368: 0x974E, - 20369: 0x974F, - 20370: 0x9750, - 20371: 0x9751, - 20372: 0x9754, - 20373: 0x9755, - 20374: 0x9757, - 20375: 0x9758, - 20376: 0x975A, - 20377: 0x975C, - 20378: 0x975D, - 20379: 0x975F, - 20380: 0x9763, - 20381: 0x9764, - 20382: 0x9766, - 20383: 0x9767, - 20384: 0x9768, - 20385: 0x976A, - 20386: 0x976B, - 20387: 0x976C, - 20388: 0x976D, - 20389: 0x976E, - 20390: 0x976F, - 20391: 0x9770, - 20392: 0x9771, - 20393: 0x9772, - 20394: 0x9775, - 20395: 0x9777, - 20396: 0x9778, - 20397: 0x9779, - 20398: 0x977A, - 20399: 0x977B, - 20400: 0x977D, - 20401: 0x977E, - 20402: 0x977F, - 20403: 0x9780, - 20404: 0x9781, - 20405: 0x9782, - 20406: 0x9783, - 20407: 0x9784, - 20408: 0x9786, - 20409: 0x9787, - 20410: 0x9788, - 20411: 0x9789, - 20412: 0x978A, - 20413: 0x978C, - 20414: 0x978E, - 20415: 0x978F, - 20416: 0x9790, - 20417: 0x9793, - 20418: 0x9795, - 20419: 0x9796, - 20420: 0x9797, - 20421: 0x9799, - 20422: 0x979A, - 20423: 0x979B, - 20424: 0x979C, - 20425: 0x979D, - 20426: 0x81C1, - 20427: 0x81A6, - 20428: 0x6B24, - 20429: 0x6B37, - 20430: 0x6B39, - 20431: 0x6B43, - 20432: 0x6B46, - 20433: 0x6B59, - 20434: 0x98D1, - 20435: 0x98D2, - 20436: 0x98D3, - 20437: 0x98D5, - 20438: 0x98D9, - 20439: 0x98DA, - 20440: 0x6BB3, - 20441: 0x5F40, - 20442: 0x6BC2, - 20443: 0x89F3, - 20444: 0x6590, - 20445: 0x9F51, - 20446: 0x6593, - 20447: 0x65BC, - 20448: 0x65C6, - 20449: 0x65C4, - 20450: 0x65C3, - 20451: 0x65CC, - 20452: 0x65CE, - 20453: 0x65D2, - 20454: 0x65D6, - 20455: 0x7080, - 20456: 0x709C, - 20457: 0x7096, - 20458: 0x709D, - 20459: 0x70BB, - 20460: 0x70C0, - 20461: 0x70B7, - 20462: 0x70AB, - 20463: 0x70B1, - 20464: 0x70E8, - 20465: 0x70CA, - 20466: 0x7110, - 20467: 0x7113, - 20468: 0x7116, - 20469: 0x712F, - 20470: 0x7131, - 20471: 0x7173, - 20472: 0x715C, - 20473: 0x7168, - 20474: 0x7145, - 20475: 0x7172, - 20476: 0x714A, - 20477: 0x7178, - 20478: 0x717A, - 20479: 0x7198, - 20480: 0x71B3, - 20481: 0x71B5, - 20482: 0x71A8, - 20483: 0x71A0, - 20484: 0x71E0, - 20485: 0x71D4, - 20486: 0x71E7, - 20487: 0x71F9, - 20488: 0x721D, - 20489: 0x7228, - 20490: 0x706C, - 20491: 0x7118, - 20492: 0x7166, - 20493: 0x71B9, - 20494: 0x623E, - 20495: 0x623D, - 20496: 0x6243, - 20497: 0x6248, - 20498: 0x6249, - 20499: 0x793B, - 20500: 0x7940, - 20501: 0x7946, - 20502: 0x7949, - 20503: 0x795B, - 20504: 0x795C, - 20505: 0x7953, - 20506: 0x795A, - 20507: 0x7962, - 20508: 0x7957, - 20509: 0x7960, - 20510: 0x796F, - 20511: 0x7967, - 20512: 0x797A, - 20513: 0x7985, - 20514: 0x798A, - 20515: 0x799A, - 20516: 0x79A7, - 20517: 0x79B3, - 20518: 0x5FD1, - 20519: 0x5FD0, - 20520: 0x979E, - 20521: 0x979F, - 20522: 0x97A1, - 20523: 0x97A2, - 20524: 0x97A4, - 20525: 0x97A5, - 20526: 0x97A6, - 20527: 0x97A7, - 20528: 0x97A8, - 20529: 0x97A9, - 20530: 0x97AA, - 20531: 0x97AC, - 20532: 0x97AE, - 20533: 0x97B0, - 20534: 0x97B1, - 20535: 0x97B3, - 20536: 0x97B5, - 20537: 0x97B6, - 20538: 0x97B7, - 20539: 0x97B8, - 20540: 0x97B9, - 20541: 0x97BA, - 20542: 0x97BB, - 20543: 0x97BC, - 20544: 0x97BD, - 20545: 0x97BE, - 20546: 0x97BF, - 20547: 0x97C0, - 20548: 0x97C1, - 20549: 0x97C2, - 20550: 0x97C3, - 20551: 0x97C4, - 20552: 0x97C5, - 20553: 0x97C6, - 20554: 0x97C7, - 20555: 0x97C8, - 20556: 0x97C9, - 20557: 0x97CA, - 20558: 0x97CB, - 20559: 0x97CC, - 20560: 0x97CD, - 20561: 0x97CE, - 20562: 0x97CF, - 20563: 0x97D0, - 20564: 0x97D1, - 20565: 0x97D2, - 20566: 0x97D3, - 20567: 0x97D4, - 20568: 0x97D5, - 20569: 0x97D6, - 20570: 0x97D7, - 20571: 0x97D8, - 20572: 0x97D9, - 20573: 0x97DA, - 20574: 0x97DB, - 20575: 0x97DC, - 20576: 0x97DD, - 20577: 0x97DE, - 20578: 0x97DF, - 20579: 0x97E0, - 20580: 0x97E1, - 20581: 0x97E2, - 20582: 0x97E3, - 20583: 0x97E4, - 20584: 0x97E5, - 20585: 0x97E8, - 20586: 0x97EE, - 20587: 0x97EF, - 20588: 0x97F0, - 20589: 0x97F1, - 20590: 0x97F2, - 20591: 0x97F4, - 20592: 0x97F7, - 20593: 0x97F8, - 20594: 0x97F9, - 20595: 0x97FA, - 20596: 0x97FB, - 20597: 0x97FC, - 20598: 0x97FD, - 20599: 0x97FE, - 20600: 0x97FF, - 20601: 0x9800, - 20602: 0x9801, - 20603: 0x9802, - 20604: 0x9803, - 20605: 0x9804, - 20606: 0x9805, - 20607: 0x9806, - 20608: 0x9807, - 20609: 0x9808, - 20610: 0x9809, - 20611: 0x980A, - 20612: 0x980B, - 20613: 0x980C, - 20614: 0x980D, - 20615: 0x980E, - 20616: 0x603C, - 20617: 0x605D, - 20618: 0x605A, - 20619: 0x6067, - 20620: 0x6041, - 20621: 0x6059, - 20622: 0x6063, - 20623: 0x60AB, - 20624: 0x6106, - 20625: 0x610D, - 20626: 0x615D, - 20627: 0x61A9, - 20628: 0x619D, - 20629: 0x61CB, - 20630: 0x61D1, - 20631: 0x6206, - 20632: 0x8080, - 20633: 0x807F, - 20634: 0x6C93, - 20635: 0x6CF6, - 20636: 0x6DFC, - 20637: 0x77F6, - 20638: 0x77F8, - 20639: 0x7800, - 20640: 0x7809, - 20641: 0x7817, - 20642: 0x7818, - 20643: 0x7811, - 20644: 0x65AB, - 20645: 0x782D, - 20646: 0x781C, - 20647: 0x781D, - 20648: 0x7839, - 20649: 0x783A, - 20650: 0x783B, - 20651: 0x781F, - 20652: 0x783C, - 20653: 0x7825, - 20654: 0x782C, - 20655: 0x7823, - 20656: 0x7829, - 20657: 0x784E, - 20658: 0x786D, - 20659: 0x7856, - 20660: 0x7857, - 20661: 0x7826, - 20662: 0x7850, - 20663: 0x7847, - 20664: 0x784C, - 20665: 0x786A, - 20666: 0x789B, - 20667: 0x7893, - 20668: 0x789A, - 20669: 0x7887, - 20670: 0x789C, - 20671: 0x78A1, - 20672: 0x78A3, - 20673: 0x78B2, - 20674: 0x78B9, - 20675: 0x78A5, - 20676: 0x78D4, - 20677: 0x78D9, - 20678: 0x78C9, - 20679: 0x78EC, - 20680: 0x78F2, - 20681: 0x7905, - 20682: 0x78F4, - 20683: 0x7913, - 20684: 0x7924, - 20685: 0x791E, - 20686: 0x7934, - 20687: 0x9F9B, - 20688: 0x9EF9, - 20689: 0x9EFB, - 20690: 0x9EFC, - 20691: 0x76F1, - 20692: 0x7704, - 20693: 0x770D, - 20694: 0x76F9, - 20695: 0x7707, - 20696: 0x7708, - 20697: 0x771A, - 20698: 0x7722, - 20699: 0x7719, - 20700: 0x772D, - 20701: 0x7726, - 20702: 0x7735, - 20703: 0x7738, - 20704: 0x7750, - 20705: 0x7751, - 20706: 0x7747, - 20707: 0x7743, - 20708: 0x775A, - 20709: 0x7768, - 20710: 0x980F, - 20711: 0x9810, - 20712: 0x9811, - 20713: 0x9812, - 20714: 0x9813, - 20715: 0x9814, - 20716: 0x9815, - 20717: 0x9816, - 20718: 0x9817, - 20719: 0x9818, - 20720: 0x9819, - 20721: 0x981A, - 20722: 0x981B, - 20723: 0x981C, - 20724: 0x981D, - 20725: 0x981E, - 20726: 0x981F, - 20727: 0x9820, - 20728: 0x9821, - 20729: 0x9822, - 20730: 0x9823, - 20731: 0x9824, - 20732: 0x9825, - 20733: 0x9826, - 20734: 0x9827, - 20735: 0x9828, - 20736: 0x9829, - 20737: 0x982A, - 20738: 0x982B, - 20739: 0x982C, - 20740: 0x982D, - 20741: 0x982E, - 20742: 0x982F, - 20743: 0x9830, - 20744: 0x9831, - 20745: 0x9832, - 20746: 0x9833, - 20747: 0x9834, - 20748: 0x9835, - 20749: 0x9836, - 20750: 0x9837, - 20751: 0x9838, - 20752: 0x9839, - 20753: 0x983A, - 20754: 0x983B, - 20755: 0x983C, - 20756: 0x983D, - 20757: 0x983E, - 20758: 0x983F, - 20759: 0x9840, - 20760: 0x9841, - 20761: 0x9842, - 20762: 0x9843, - 20763: 0x9844, - 20764: 0x9845, - 20765: 0x9846, - 20766: 0x9847, - 20767: 0x9848, - 20768: 0x9849, - 20769: 0x984A, - 20770: 0x984B, - 20771: 0x984C, - 20772: 0x984D, - 20773: 0x984E, - 20774: 0x984F, - 20775: 0x9850, - 20776: 0x9851, - 20777: 0x9852, - 20778: 0x9853, - 20779: 0x9854, - 20780: 0x9855, - 20781: 0x9856, - 20782: 0x9857, - 20783: 0x9858, - 20784: 0x9859, - 20785: 0x985A, - 20786: 0x985B, - 20787: 0x985C, - 20788: 0x985D, - 20789: 0x985E, - 20790: 0x985F, - 20791: 0x9860, - 20792: 0x9861, - 20793: 0x9862, - 20794: 0x9863, - 20795: 0x9864, - 20796: 0x9865, - 20797: 0x9866, - 20798: 0x9867, - 20799: 0x9868, - 20800: 0x9869, - 20801: 0x986A, - 20802: 0x986B, - 20803: 0x986C, - 20804: 0x986D, - 20805: 0x986E, - 20806: 0x7762, - 20807: 0x7765, - 20808: 0x777F, - 20809: 0x778D, - 20810: 0x777D, - 20811: 0x7780, - 20812: 0x778C, - 20813: 0x7791, - 20814: 0x779F, - 20815: 0x77A0, - 20816: 0x77B0, - 20817: 0x77B5, - 20818: 0x77BD, - 20819: 0x753A, - 20820: 0x7540, - 20821: 0x754E, - 20822: 0x754B, - 20823: 0x7548, - 20824: 0x755B, - 20825: 0x7572, - 20826: 0x7579, - 20827: 0x7583, - 20828: 0x7F58, - 20829: 0x7F61, - 20830: 0x7F5F, - 20831: 0x8A48, - 20832: 0x7F68, - 20833: 0x7F74, - 20834: 0x7F71, - 20835: 0x7F79, - 20836: 0x7F81, - 20837: 0x7F7E, - 20838: 0x76CD, - 20839: 0x76E5, - 20840: 0x8832, - 20841: 0x9485, - 20842: 0x9486, - 20843: 0x9487, - 20844: 0x948B, - 20845: 0x948A, - 20846: 0x948C, - 20847: 0x948D, - 20848: 0x948F, - 20849: 0x9490, - 20850: 0x9494, - 20851: 0x9497, - 20852: 0x9495, - 20853: 0x949A, - 20854: 0x949B, - 20855: 0x949C, - 20856: 0x94A3, - 20857: 0x94A4, - 20858: 0x94AB, - 20859: 0x94AA, - 20860: 0x94AD, - 20861: 0x94AC, - 20862: 0x94AF, - 20863: 0x94B0, - 20864: 0x94B2, - 20865: 0x94B4, - 20866: 0x94B6, - 20867: 0x94B7, - 20868: 0x94B8, - 20869: 0x94B9, - 20870: 0x94BA, - 20871: 0x94BC, - 20872: 0x94BD, - 20873: 0x94BF, - 20874: 0x94C4, - 20875: 0x94C8, - 20876: 0x94C9, - 20877: 0x94CA, - 20878: 0x94CB, - 20879: 0x94CC, - 20880: 0x94CD, - 20881: 0x94CE, - 20882: 0x94D0, - 20883: 0x94D1, - 20884: 0x94D2, - 20885: 0x94D5, - 20886: 0x94D6, - 20887: 0x94D7, - 20888: 0x94D9, - 20889: 0x94D8, - 20890: 0x94DB, - 20891: 0x94DE, - 20892: 0x94DF, - 20893: 0x94E0, - 20894: 0x94E2, - 20895: 0x94E4, - 20896: 0x94E5, - 20897: 0x94E7, - 20898: 0x94E8, - 20899: 0x94EA, - 20900: 0x986F, - 20901: 0x9870, - 20902: 0x9871, - 20903: 0x9872, - 20904: 0x9873, - 20905: 0x9874, - 20906: 0x988B, - 20907: 0x988E, - 20908: 0x9892, - 20909: 0x9895, - 20910: 0x9899, - 20911: 0x98A3, - 20912: 0x98A8, - 20913: 0x98A9, - 20914: 0x98AA, - 20915: 0x98AB, - 20916: 0x98AC, - 20917: 0x98AD, - 20918: 0x98AE, - 20919: 0x98AF, - 20920: 0x98B0, - 20921: 0x98B1, - 20922: 0x98B2, - 20923: 0x98B3, - 20924: 0x98B4, - 20925: 0x98B5, - 20926: 0x98B6, - 20927: 0x98B7, - 20928: 0x98B8, - 20929: 0x98B9, - 20930: 0x98BA, - 20931: 0x98BB, - 20932: 0x98BC, - 20933: 0x98BD, - 20934: 0x98BE, - 20935: 0x98BF, - 20936: 0x98C0, - 20937: 0x98C1, - 20938: 0x98C2, - 20939: 0x98C3, - 20940: 0x98C4, - 20941: 0x98C5, - 20942: 0x98C6, - 20943: 0x98C7, - 20944: 0x98C8, - 20945: 0x98C9, - 20946: 0x98CA, - 20947: 0x98CB, - 20948: 0x98CC, - 20949: 0x98CD, - 20950: 0x98CF, - 20951: 0x98D0, - 20952: 0x98D4, - 20953: 0x98D6, - 20954: 0x98D7, - 20955: 0x98DB, - 20956: 0x98DC, - 20957: 0x98DD, - 20958: 0x98E0, - 20959: 0x98E1, - 20960: 0x98E2, - 20961: 0x98E3, - 20962: 0x98E4, - 20963: 0x98E5, - 20964: 0x98E6, - 20965: 0x98E9, - 20966: 0x98EA, - 20967: 0x98EB, - 20968: 0x98EC, - 20969: 0x98ED, - 20970: 0x98EE, - 20971: 0x98EF, - 20972: 0x98F0, - 20973: 0x98F1, - 20974: 0x98F2, - 20975: 0x98F3, - 20976: 0x98F4, - 20977: 0x98F5, - 20978: 0x98F6, - 20979: 0x98F7, - 20980: 0x98F8, - 20981: 0x98F9, - 20982: 0x98FA, - 20983: 0x98FB, - 20984: 0x98FC, - 20985: 0x98FD, - 20986: 0x98FE, - 20987: 0x98FF, - 20988: 0x9900, - 20989: 0x9901, - 20990: 0x9902, - 20991: 0x9903, - 20992: 0x9904, - 20993: 0x9905, - 20994: 0x9906, - 20995: 0x9907, - 20996: 0x94E9, - 20997: 0x94EB, - 20998: 0x94EE, - 20999: 0x94EF, - 21000: 0x94F3, - 21001: 0x94F4, - 21002: 0x94F5, - 21003: 0x94F7, - 21004: 0x94F9, - 21005: 0x94FC, - 21006: 0x94FD, - 21007: 0x94FF, - 21008: 0x9503, - 21009: 0x9502, - 21010: 0x9506, - 21011: 0x9507, - 21012: 0x9509, - 21013: 0x950A, - 21014: 0x950D, - 21015: 0x950E, - 21016: 0x950F, - 21017: 0x9512, - 21018: 0x9513, - 21019: 0x9514, - 21020: 0x9515, - 21021: 0x9516, - 21022: 0x9518, - 21023: 0x951B, - 21024: 0x951D, - 21025: 0x951E, - 21026: 0x951F, - 21027: 0x9522, - 21028: 0x952A, - 21029: 0x952B, - 21030: 0x9529, - 21031: 0x952C, - 21032: 0x9531, - 21033: 0x9532, - 21034: 0x9534, - 21035: 0x9536, - 21036: 0x9537, - 21037: 0x9538, - 21038: 0x953C, - 21039: 0x953E, - 21040: 0x953F, - 21041: 0x9542, - 21042: 0x9535, - 21043: 0x9544, - 21044: 0x9545, - 21045: 0x9546, - 21046: 0x9549, - 21047: 0x954C, - 21048: 0x954E, - 21049: 0x954F, - 21050: 0x9552, - 21051: 0x9553, - 21052: 0x9554, - 21053: 0x9556, - 21054: 0x9557, - 21055: 0x9558, - 21056: 0x9559, - 21057: 0x955B, - 21058: 0x955E, - 21059: 0x955F, - 21060: 0x955D, - 21061: 0x9561, - 21062: 0x9562, - 21063: 0x9564, - 21064: 0x9565, - 21065: 0x9566, - 21066: 0x9567, - 21067: 0x9568, - 21068: 0x9569, - 21069: 0x956A, - 21070: 0x956B, - 21071: 0x956C, - 21072: 0x956F, - 21073: 0x9571, - 21074: 0x9572, - 21075: 0x9573, - 21076: 0x953A, - 21077: 0x77E7, - 21078: 0x77EC, - 21079: 0x96C9, - 21080: 0x79D5, - 21081: 0x79ED, - 21082: 0x79E3, - 21083: 0x79EB, - 21084: 0x7A06, - 21085: 0x5D47, - 21086: 0x7A03, - 21087: 0x7A02, - 21088: 0x7A1E, - 21089: 0x7A14, - 21090: 0x9908, - 21091: 0x9909, - 21092: 0x990A, - 21093: 0x990B, - 21094: 0x990C, - 21095: 0x990E, - 21096: 0x990F, - 21097: 0x9911, - 21098: 0x9912, - 21099: 0x9913, - 21100: 0x9914, - 21101: 0x9915, - 21102: 0x9916, - 21103: 0x9917, - 21104: 0x9918, - 21105: 0x9919, - 21106: 0x991A, - 21107: 0x991B, - 21108: 0x991C, - 21109: 0x991D, - 21110: 0x991E, - 21111: 0x991F, - 21112: 0x9920, - 21113: 0x9921, - 21114: 0x9922, - 21115: 0x9923, - 21116: 0x9924, - 21117: 0x9925, - 21118: 0x9926, - 21119: 0x9927, - 21120: 0x9928, - 21121: 0x9929, - 21122: 0x992A, - 21123: 0x992B, - 21124: 0x992C, - 21125: 0x992D, - 21126: 0x992F, - 21127: 0x9930, - 21128: 0x9931, - 21129: 0x9932, - 21130: 0x9933, - 21131: 0x9934, - 21132: 0x9935, - 21133: 0x9936, - 21134: 0x9937, - 21135: 0x9938, - 21136: 0x9939, - 21137: 0x993A, - 21138: 0x993B, - 21139: 0x993C, - 21140: 0x993D, - 21141: 0x993E, - 21142: 0x993F, - 21143: 0x9940, - 21144: 0x9941, - 21145: 0x9942, - 21146: 0x9943, - 21147: 0x9944, - 21148: 0x9945, - 21149: 0x9946, - 21150: 0x9947, - 21151: 0x9948, - 21152: 0x9949, - 21153: 0x994A, - 21154: 0x994B, - 21155: 0x994C, - 21156: 0x994D, - 21157: 0x994E, - 21158: 0x994F, - 21159: 0x9950, - 21160: 0x9951, - 21161: 0x9952, - 21162: 0x9953, - 21163: 0x9956, - 21164: 0x9957, - 21165: 0x9958, - 21166: 0x9959, - 21167: 0x995A, - 21168: 0x995B, - 21169: 0x995C, - 21170: 0x995D, - 21171: 0x995E, - 21172: 0x995F, - 21173: 0x9960, - 21174: 0x9961, - 21175: 0x9962, - 21176: 0x9964, - 21177: 0x9966, - 21178: 0x9973, - 21179: 0x9978, - 21180: 0x9979, - 21181: 0x997B, - 21182: 0x997E, - 21183: 0x9982, - 21184: 0x9983, - 21185: 0x9989, - 21186: 0x7A39, - 21187: 0x7A37, - 21188: 0x7A51, - 21189: 0x9ECF, - 21190: 0x99A5, - 21191: 0x7A70, - 21192: 0x7688, - 21193: 0x768E, - 21194: 0x7693, - 21195: 0x7699, - 21196: 0x76A4, - 21197: 0x74DE, - 21198: 0x74E0, - 21199: 0x752C, - 21200: 0x9E20, - 21201: 0x9E22, - 21202: 0x9E28, - 21203: 0x9E29, - 21204: 0x9E2A, - 21205: 0x9E2B, - 21206: 0x9E2C, - 21207: 0x9E32, - 21208: 0x9E31, - 21209: 0x9E36, - 21210: 0x9E38, - 21211: 0x9E37, - 21212: 0x9E39, - 21213: 0x9E3A, - 21214: 0x9E3E, - 21215: 0x9E41, - 21216: 0x9E42, - 21217: 0x9E44, - 21218: 0x9E46, - 21219: 0x9E47, - 21220: 0x9E48, - 21221: 0x9E49, - 21222: 0x9E4B, - 21223: 0x9E4C, - 21224: 0x9E4E, - 21225: 0x9E51, - 21226: 0x9E55, - 21227: 0x9E57, - 21228: 0x9E5A, - 21229: 0x9E5B, - 21230: 0x9E5C, - 21231: 0x9E5E, - 21232: 0x9E63, - 21233: 0x9E66, - 21234: 0x9E67, - 21235: 0x9E68, - 21236: 0x9E69, - 21237: 0x9E6A, - 21238: 0x9E6B, - 21239: 0x9E6C, - 21240: 0x9E71, - 21241: 0x9E6D, - 21242: 0x9E73, - 21243: 0x7592, - 21244: 0x7594, - 21245: 0x7596, - 21246: 0x75A0, - 21247: 0x759D, - 21248: 0x75AC, - 21249: 0x75A3, - 21250: 0x75B3, - 21251: 0x75B4, - 21252: 0x75B8, - 21253: 0x75C4, - 21254: 0x75B1, - 21255: 0x75B0, - 21256: 0x75C3, - 21257: 0x75C2, - 21258: 0x75D6, - 21259: 0x75CD, - 21260: 0x75E3, - 21261: 0x75E8, - 21262: 0x75E6, - 21263: 0x75E4, - 21264: 0x75EB, - 21265: 0x75E7, - 21266: 0x7603, - 21267: 0x75F1, - 21268: 0x75FC, - 21269: 0x75FF, - 21270: 0x7610, - 21271: 0x7600, - 21272: 0x7605, - 21273: 0x760C, - 21274: 0x7617, - 21275: 0x760A, - 21276: 0x7625, - 21277: 0x7618, - 21278: 0x7615, - 21279: 0x7619, - 21280: 0x998C, - 21281: 0x998E, - 21282: 0x999A, - 21283: 0x999B, - 21284: 0x999C, - 21285: 0x999D, - 21286: 0x999E, - 21287: 0x999F, - 21288: 0x99A0, - 21289: 0x99A1, - 21290: 0x99A2, - 21291: 0x99A3, - 21292: 0x99A4, - 21293: 0x99A6, - 21294: 0x99A7, - 21295: 0x99A9, - 21296: 0x99AA, - 21297: 0x99AB, - 21298: 0x99AC, - 21299: 0x99AD, - 21300: 0x99AE, - 21301: 0x99AF, - 21302: 0x99B0, - 21303: 0x99B1, - 21304: 0x99B2, - 21305: 0x99B3, - 21306: 0x99B4, - 21307: 0x99B5, - 21308: 0x99B6, - 21309: 0x99B7, - 21310: 0x99B8, - 21311: 0x99B9, - 21312: 0x99BA, - 21313: 0x99BB, - 21314: 0x99BC, - 21315: 0x99BD, - 21316: 0x99BE, - 21317: 0x99BF, - 21318: 0x99C0, - 21319: 0x99C1, - 21320: 0x99C2, - 21321: 0x99C3, - 21322: 0x99C4, - 21323: 0x99C5, - 21324: 0x99C6, - 21325: 0x99C7, - 21326: 0x99C8, - 21327: 0x99C9, - 21328: 0x99CA, - 21329: 0x99CB, - 21330: 0x99CC, - 21331: 0x99CD, - 21332: 0x99CE, - 21333: 0x99CF, - 21334: 0x99D0, - 21335: 0x99D1, - 21336: 0x99D2, - 21337: 0x99D3, - 21338: 0x99D4, - 21339: 0x99D5, - 21340: 0x99D6, - 21341: 0x99D7, - 21342: 0x99D8, - 21343: 0x99D9, - 21344: 0x99DA, - 21345: 0x99DB, - 21346: 0x99DC, - 21347: 0x99DD, - 21348: 0x99DE, - 21349: 0x99DF, - 21350: 0x99E0, - 21351: 0x99E1, - 21352: 0x99E2, - 21353: 0x99E3, - 21354: 0x99E4, - 21355: 0x99E5, - 21356: 0x99E6, - 21357: 0x99E7, - 21358: 0x99E8, - 21359: 0x99E9, - 21360: 0x99EA, - 21361: 0x99EB, - 21362: 0x99EC, - 21363: 0x99ED, - 21364: 0x99EE, - 21365: 0x99EF, - 21366: 0x99F0, - 21367: 0x99F1, - 21368: 0x99F2, - 21369: 0x99F3, - 21370: 0x99F4, - 21371: 0x99F5, - 21372: 0x99F6, - 21373: 0x99F7, - 21374: 0x99F8, - 21375: 0x99F9, - 21376: 0x761B, - 21377: 0x763C, - 21378: 0x7622, - 21379: 0x7620, - 21380: 0x7640, - 21381: 0x762D, - 21382: 0x7630, - 21383: 0x763F, - 21384: 0x7635, - 21385: 0x7643, - 21386: 0x763E, - 21387: 0x7633, - 21388: 0x764D, - 21389: 0x765E, - 21390: 0x7654, - 21391: 0x765C, - 21392: 0x7656, - 21393: 0x766B, - 21394: 0x766F, - 21395: 0x7FCA, - 21396: 0x7AE6, - 21397: 0x7A78, - 21398: 0x7A79, - 21399: 0x7A80, - 21400: 0x7A86, - 21401: 0x7A88, - 21402: 0x7A95, - 21403: 0x7AA6, - 21404: 0x7AA0, - 21405: 0x7AAC, - 21406: 0x7AA8, - 21407: 0x7AAD, - 21408: 0x7AB3, - 21409: 0x8864, - 21410: 0x8869, - 21411: 0x8872, - 21412: 0x887D, - 21413: 0x887F, - 21414: 0x8882, - 21415: 0x88A2, - 21416: 0x88C6, - 21417: 0x88B7, - 21418: 0x88BC, - 21419: 0x88C9, - 21420: 0x88E2, - 21421: 0x88CE, - 21422: 0x88E3, - 21423: 0x88E5, - 21424: 0x88F1, - 21425: 0x891A, - 21426: 0x88FC, - 21427: 0x88E8, - 21428: 0x88FE, - 21429: 0x88F0, - 21430: 0x8921, - 21431: 0x8919, - 21432: 0x8913, - 21433: 0x891B, - 21434: 0x890A, - 21435: 0x8934, - 21436: 0x892B, - 21437: 0x8936, - 21438: 0x8941, - 21439: 0x8966, - 21440: 0x897B, - 21441: 0x758B, - 21442: 0x80E5, - 21443: 0x76B2, - 21444: 0x76B4, - 21445: 0x77DC, - 21446: 0x8012, - 21447: 0x8014, - 21448: 0x8016, - 21449: 0x801C, - 21450: 0x8020, - 21451: 0x8022, - 21452: 0x8025, - 21453: 0x8026, - 21454: 0x8027, - 21455: 0x8029, - 21456: 0x8028, - 21457: 0x8031, - 21458: 0x800B, - 21459: 0x8035, - 21460: 0x8043, - 21461: 0x8046, - 21462: 0x804D, - 21463: 0x8052, - 21464: 0x8069, - 21465: 0x8071, - 21466: 0x8983, - 21467: 0x9878, - 21468: 0x9880, - 21469: 0x9883, - 21470: 0x99FA, - 21471: 0x99FB, - 21472: 0x99FC, - 21473: 0x99FD, - 21474: 0x99FE, - 21475: 0x99FF, - 21476: 0x9A00, - 21477: 0x9A01, - 21478: 0x9A02, - 21479: 0x9A03, - 21480: 0x9A04, - 21481: 0x9A05, - 21482: 0x9A06, - 21483: 0x9A07, - 21484: 0x9A08, - 21485: 0x9A09, - 21486: 0x9A0A, - 21487: 0x9A0B, - 21488: 0x9A0C, - 21489: 0x9A0D, - 21490: 0x9A0E, - 21491: 0x9A0F, - 21492: 0x9A10, - 21493: 0x9A11, - 21494: 0x9A12, - 21495: 0x9A13, - 21496: 0x9A14, - 21497: 0x9A15, - 21498: 0x9A16, - 21499: 0x9A17, - 21500: 0x9A18, - 21501: 0x9A19, - 21502: 0x9A1A, - 21503: 0x9A1B, - 21504: 0x9A1C, - 21505: 0x9A1D, - 21506: 0x9A1E, - 21507: 0x9A1F, - 21508: 0x9A20, - 21509: 0x9A21, - 21510: 0x9A22, - 21511: 0x9A23, - 21512: 0x9A24, - 21513: 0x9A25, - 21514: 0x9A26, - 21515: 0x9A27, - 21516: 0x9A28, - 21517: 0x9A29, - 21518: 0x9A2A, - 21519: 0x9A2B, - 21520: 0x9A2C, - 21521: 0x9A2D, - 21522: 0x9A2E, - 21523: 0x9A2F, - 21524: 0x9A30, - 21525: 0x9A31, - 21526: 0x9A32, - 21527: 0x9A33, - 21528: 0x9A34, - 21529: 0x9A35, - 21530: 0x9A36, - 21531: 0x9A37, - 21532: 0x9A38, - 21533: 0x9A39, - 21534: 0x9A3A, - 21535: 0x9A3B, - 21536: 0x9A3C, - 21537: 0x9A3D, - 21538: 0x9A3E, - 21539: 0x9A3F, - 21540: 0x9A40, - 21541: 0x9A41, - 21542: 0x9A42, - 21543: 0x9A43, - 21544: 0x9A44, - 21545: 0x9A45, - 21546: 0x9A46, - 21547: 0x9A47, - 21548: 0x9A48, - 21549: 0x9A49, - 21550: 0x9A4A, - 21551: 0x9A4B, - 21552: 0x9A4C, - 21553: 0x9A4D, - 21554: 0x9A4E, - 21555: 0x9A4F, - 21556: 0x9A50, - 21557: 0x9A51, - 21558: 0x9A52, - 21559: 0x9A53, - 21560: 0x9A54, - 21561: 0x9A55, - 21562: 0x9A56, - 21563: 0x9A57, - 21564: 0x9A58, - 21565: 0x9A59, - 21566: 0x9889, - 21567: 0x988C, - 21568: 0x988D, - 21569: 0x988F, - 21570: 0x9894, - 21571: 0x989A, - 21572: 0x989B, - 21573: 0x989E, - 21574: 0x989F, - 21575: 0x98A1, - 21576: 0x98A2, - 21577: 0x98A5, - 21578: 0x98A6, - 21579: 0x864D, - 21580: 0x8654, - 21581: 0x866C, - 21582: 0x866E, - 21583: 0x867F, - 21584: 0x867A, - 21585: 0x867C, - 21586: 0x867B, - 21587: 0x86A8, - 21588: 0x868D, - 21589: 0x868B, - 21590: 0x86AC, - 21591: 0x869D, - 21592: 0x86A7, - 21593: 0x86A3, - 21594: 0x86AA, - 21595: 0x8693, - 21596: 0x86A9, - 21597: 0x86B6, - 21598: 0x86C4, - 21599: 0x86B5, - 21600: 0x86CE, - 21601: 0x86B0, - 21602: 0x86BA, - 21603: 0x86B1, - 21604: 0x86AF, - 21605: 0x86C9, - 21606: 0x86CF, - 21607: 0x86B4, - 21608: 0x86E9, - 21609: 0x86F1, - 21610: 0x86F2, - 21611: 0x86ED, - 21612: 0x86F3, - 21613: 0x86D0, - 21614: 0x8713, - 21615: 0x86DE, - 21616: 0x86F4, - 21617: 0x86DF, - 21618: 0x86D8, - 21619: 0x86D1, - 21620: 0x8703, - 21621: 0x8707, - 21622: 0x86F8, - 21623: 0x8708, - 21624: 0x870A, - 21625: 0x870D, - 21626: 0x8709, - 21627: 0x8723, - 21628: 0x873B, - 21629: 0x871E, - 21630: 0x8725, - 21631: 0x872E, - 21632: 0x871A, - 21633: 0x873E, - 21634: 0x8748, - 21635: 0x8734, - 21636: 0x8731, - 21637: 0x8729, - 21638: 0x8737, - 21639: 0x873F, - 21640: 0x8782, - 21641: 0x8722, - 21642: 0x877D, - 21643: 0x877E, - 21644: 0x877B, - 21645: 0x8760, - 21646: 0x8770, - 21647: 0x874C, - 21648: 0x876E, - 21649: 0x878B, - 21650: 0x8753, - 21651: 0x8763, - 21652: 0x877C, - 21653: 0x8764, - 21654: 0x8759, - 21655: 0x8765, - 21656: 0x8793, - 21657: 0x87AF, - 21658: 0x87A8, - 21659: 0x87D2, - 21660: 0x9A5A, - 21661: 0x9A5B, - 21662: 0x9A5C, - 21663: 0x9A5D, - 21664: 0x9A5E, - 21665: 0x9A5F, - 21666: 0x9A60, - 21667: 0x9A61, - 21668: 0x9A62, - 21669: 0x9A63, - 21670: 0x9A64, - 21671: 0x9A65, - 21672: 0x9A66, - 21673: 0x9A67, - 21674: 0x9A68, - 21675: 0x9A69, - 21676: 0x9A6A, - 21677: 0x9A6B, - 21678: 0x9A72, - 21679: 0x9A83, - 21680: 0x9A89, - 21681: 0x9A8D, - 21682: 0x9A8E, - 21683: 0x9A94, - 21684: 0x9A95, - 21685: 0x9A99, - 21686: 0x9AA6, - 21687: 0x9AA9, - 21688: 0x9AAA, - 21689: 0x9AAB, - 21690: 0x9AAC, - 21691: 0x9AAD, - 21692: 0x9AAE, - 21693: 0x9AAF, - 21694: 0x9AB2, - 21695: 0x9AB3, - 21696: 0x9AB4, - 21697: 0x9AB5, - 21698: 0x9AB9, - 21699: 0x9ABB, - 21700: 0x9ABD, - 21701: 0x9ABE, - 21702: 0x9ABF, - 21703: 0x9AC3, - 21704: 0x9AC4, - 21705: 0x9AC6, - 21706: 0x9AC7, - 21707: 0x9AC8, - 21708: 0x9AC9, - 21709: 0x9ACA, - 21710: 0x9ACD, - 21711: 0x9ACE, - 21712: 0x9ACF, - 21713: 0x9AD0, - 21714: 0x9AD2, - 21715: 0x9AD4, - 21716: 0x9AD5, - 21717: 0x9AD6, - 21718: 0x9AD7, - 21719: 0x9AD9, - 21720: 0x9ADA, - 21721: 0x9ADB, - 21722: 0x9ADC, - 21723: 0x9ADD, - 21724: 0x9ADE, - 21725: 0x9AE0, - 21726: 0x9AE2, - 21727: 0x9AE3, - 21728: 0x9AE4, - 21729: 0x9AE5, - 21730: 0x9AE7, - 21731: 0x9AE8, - 21732: 0x9AE9, - 21733: 0x9AEA, - 21734: 0x9AEC, - 21735: 0x9AEE, - 21736: 0x9AF0, - 21737: 0x9AF1, - 21738: 0x9AF2, - 21739: 0x9AF3, - 21740: 0x9AF4, - 21741: 0x9AF5, - 21742: 0x9AF6, - 21743: 0x9AF7, - 21744: 0x9AF8, - 21745: 0x9AFA, - 21746: 0x9AFC, - 21747: 0x9AFD, - 21748: 0x9AFE, - 21749: 0x9AFF, - 21750: 0x9B00, - 21751: 0x9B01, - 21752: 0x9B02, - 21753: 0x9B04, - 21754: 0x9B05, - 21755: 0x9B06, - 21756: 0x87C6, - 21757: 0x8788, - 21758: 0x8785, - 21759: 0x87AD, - 21760: 0x8797, - 21761: 0x8783, - 21762: 0x87AB, - 21763: 0x87E5, - 21764: 0x87AC, - 21765: 0x87B5, - 21766: 0x87B3, - 21767: 0x87CB, - 21768: 0x87D3, - 21769: 0x87BD, - 21770: 0x87D1, - 21771: 0x87C0, - 21772: 0x87CA, - 21773: 0x87DB, - 21774: 0x87EA, - 21775: 0x87E0, - 21776: 0x87EE, - 21777: 0x8816, - 21778: 0x8813, - 21779: 0x87FE, - 21780: 0x880A, - 21781: 0x881B, - 21782: 0x8821, - 21783: 0x8839, - 21784: 0x883C, - 21785: 0x7F36, - 21786: 0x7F42, - 21787: 0x7F44, - 21788: 0x7F45, - 21789: 0x8210, - 21790: 0x7AFA, - 21791: 0x7AFD, - 21792: 0x7B08, - 21793: 0x7B03, - 21794: 0x7B04, - 21795: 0x7B15, - 21796: 0x7B0A, - 21797: 0x7B2B, - 21798: 0x7B0F, - 21799: 0x7B47, - 21800: 0x7B38, - 21801: 0x7B2A, - 21802: 0x7B19, - 21803: 0x7B2E, - 21804: 0x7B31, - 21805: 0x7B20, - 21806: 0x7B25, - 21807: 0x7B24, - 21808: 0x7B33, - 21809: 0x7B3E, - 21810: 0x7B1E, - 21811: 0x7B58, - 21812: 0x7B5A, - 21813: 0x7B45, - 21814: 0x7B75, - 21815: 0x7B4C, - 21816: 0x7B5D, - 21817: 0x7B60, - 21818: 0x7B6E, - 21819: 0x7B7B, - 21820: 0x7B62, - 21821: 0x7B72, - 21822: 0x7B71, - 21823: 0x7B90, - 21824: 0x7BA6, - 21825: 0x7BA7, - 21826: 0x7BB8, - 21827: 0x7BAC, - 21828: 0x7B9D, - 21829: 0x7BA8, - 21830: 0x7B85, - 21831: 0x7BAA, - 21832: 0x7B9C, - 21833: 0x7BA2, - 21834: 0x7BAB, - 21835: 0x7BB4, - 21836: 0x7BD1, - 21837: 0x7BC1, - 21838: 0x7BCC, - 21839: 0x7BDD, - 21840: 0x7BDA, - 21841: 0x7BE5, - 21842: 0x7BE6, - 21843: 0x7BEA, - 21844: 0x7C0C, - 21845: 0x7BFE, - 21846: 0x7BFC, - 21847: 0x7C0F, - 21848: 0x7C16, - 21849: 0x7C0B, - 21850: 0x9B07, - 21851: 0x9B09, - 21852: 0x9B0A, - 21853: 0x9B0B, - 21854: 0x9B0C, - 21855: 0x9B0D, - 21856: 0x9B0E, - 21857: 0x9B10, - 21858: 0x9B11, - 21859: 0x9B12, - 21860: 0x9B14, - 21861: 0x9B15, - 21862: 0x9B16, - 21863: 0x9B17, - 21864: 0x9B18, - 21865: 0x9B19, - 21866: 0x9B1A, - 21867: 0x9B1B, - 21868: 0x9B1C, - 21869: 0x9B1D, - 21870: 0x9B1E, - 21871: 0x9B20, - 21872: 0x9B21, - 21873: 0x9B22, - 21874: 0x9B24, - 21875: 0x9B25, - 21876: 0x9B26, - 21877: 0x9B27, - 21878: 0x9B28, - 21879: 0x9B29, - 21880: 0x9B2A, - 21881: 0x9B2B, - 21882: 0x9B2C, - 21883: 0x9B2D, - 21884: 0x9B2E, - 21885: 0x9B30, - 21886: 0x9B31, - 21887: 0x9B33, - 21888: 0x9B34, - 21889: 0x9B35, - 21890: 0x9B36, - 21891: 0x9B37, - 21892: 0x9B38, - 21893: 0x9B39, - 21894: 0x9B3A, - 21895: 0x9B3D, - 21896: 0x9B3E, - 21897: 0x9B3F, - 21898: 0x9B40, - 21899: 0x9B46, - 21900: 0x9B4A, - 21901: 0x9B4B, - 21902: 0x9B4C, - 21903: 0x9B4E, - 21904: 0x9B50, - 21905: 0x9B52, - 21906: 0x9B53, - 21907: 0x9B55, - 21908: 0x9B56, - 21909: 0x9B57, - 21910: 0x9B58, - 21911: 0x9B59, - 21912: 0x9B5A, - 21913: 0x9B5B, - 21914: 0x9B5C, - 21915: 0x9B5D, - 21916: 0x9B5E, - 21917: 0x9B5F, - 21918: 0x9B60, - 21919: 0x9B61, - 21920: 0x9B62, - 21921: 0x9B63, - 21922: 0x9B64, - 21923: 0x9B65, - 21924: 0x9B66, - 21925: 0x9B67, - 21926: 0x9B68, - 21927: 0x9B69, - 21928: 0x9B6A, - 21929: 0x9B6B, - 21930: 0x9B6C, - 21931: 0x9B6D, - 21932: 0x9B6E, - 21933: 0x9B6F, - 21934: 0x9B70, - 21935: 0x9B71, - 21936: 0x9B72, - 21937: 0x9B73, - 21938: 0x9B74, - 21939: 0x9B75, - 21940: 0x9B76, - 21941: 0x9B77, - 21942: 0x9B78, - 21943: 0x9B79, - 21944: 0x9B7A, - 21945: 0x9B7B, - 21946: 0x7C1F, - 21947: 0x7C2A, - 21948: 0x7C26, - 21949: 0x7C38, - 21950: 0x7C41, - 21951: 0x7C40, - 21952: 0x81FE, - 21953: 0x8201, - 21954: 0x8202, - 21955: 0x8204, - 21956: 0x81EC, - 21957: 0x8844, - 21958: 0x8221, - 21959: 0x8222, - 21960: 0x8223, - 21961: 0x822D, - 21962: 0x822F, - 21963: 0x8228, - 21964: 0x822B, - 21965: 0x8238, - 21966: 0x823B, - 21967: 0x8233, - 21968: 0x8234, - 21969: 0x823E, - 21970: 0x8244, - 21971: 0x8249, - 21972: 0x824B, - 21973: 0x824F, - 21974: 0x825A, - 21975: 0x825F, - 21976: 0x8268, - 21977: 0x887E, - 21978: 0x8885, - 21979: 0x8888, - 21980: 0x88D8, - 21981: 0x88DF, - 21982: 0x895E, - 21983: 0x7F9D, - 21984: 0x7F9F, - 21985: 0x7FA7, - 21986: 0x7FAF, - 21987: 0x7FB0, - 21988: 0x7FB2, - 21989: 0x7C7C, - 21990: 0x6549, - 21991: 0x7C91, - 21992: 0x7C9D, - 21993: 0x7C9C, - 21994: 0x7C9E, - 21995: 0x7CA2, - 21996: 0x7CB2, - 21997: 0x7CBC, - 21998: 0x7CBD, - 21999: 0x7CC1, - 22000: 0x7CC7, - 22001: 0x7CCC, - 22002: 0x7CCD, - 22003: 0x7CC8, - 22004: 0x7CC5, - 22005: 0x7CD7, - 22006: 0x7CE8, - 22007: 0x826E, - 22008: 0x66A8, - 22009: 0x7FBF, - 22010: 0x7FCE, - 22011: 0x7FD5, - 22012: 0x7FE5, - 22013: 0x7FE1, - 22014: 0x7FE6, - 22015: 0x7FE9, - 22016: 0x7FEE, - 22017: 0x7FF3, - 22018: 0x7CF8, - 22019: 0x7D77, - 22020: 0x7DA6, - 22021: 0x7DAE, - 22022: 0x7E47, - 22023: 0x7E9B, - 22024: 0x9EB8, - 22025: 0x9EB4, - 22026: 0x8D73, - 22027: 0x8D84, - 22028: 0x8D94, - 22029: 0x8D91, - 22030: 0x8DB1, - 22031: 0x8D67, - 22032: 0x8D6D, - 22033: 0x8C47, - 22034: 0x8C49, - 22035: 0x914A, - 22036: 0x9150, - 22037: 0x914E, - 22038: 0x914F, - 22039: 0x9164, - 22040: 0x9B7C, - 22041: 0x9B7D, - 22042: 0x9B7E, - 22043: 0x9B7F, - 22044: 0x9B80, - 22045: 0x9B81, - 22046: 0x9B82, - 22047: 0x9B83, - 22048: 0x9B84, - 22049: 0x9B85, - 22050: 0x9B86, - 22051: 0x9B87, - 22052: 0x9B88, - 22053: 0x9B89, - 22054: 0x9B8A, - 22055: 0x9B8B, - 22056: 0x9B8C, - 22057: 0x9B8D, - 22058: 0x9B8E, - 22059: 0x9B8F, - 22060: 0x9B90, - 22061: 0x9B91, - 22062: 0x9B92, - 22063: 0x9B93, - 22064: 0x9B94, - 22065: 0x9B95, - 22066: 0x9B96, - 22067: 0x9B97, - 22068: 0x9B98, - 22069: 0x9B99, - 22070: 0x9B9A, - 22071: 0x9B9B, - 22072: 0x9B9C, - 22073: 0x9B9D, - 22074: 0x9B9E, - 22075: 0x9B9F, - 22076: 0x9BA0, - 22077: 0x9BA1, - 22078: 0x9BA2, - 22079: 0x9BA3, - 22080: 0x9BA4, - 22081: 0x9BA5, - 22082: 0x9BA6, - 22083: 0x9BA7, - 22084: 0x9BA8, - 22085: 0x9BA9, - 22086: 0x9BAA, - 22087: 0x9BAB, - 22088: 0x9BAC, - 22089: 0x9BAD, - 22090: 0x9BAE, - 22091: 0x9BAF, - 22092: 0x9BB0, - 22093: 0x9BB1, - 22094: 0x9BB2, - 22095: 0x9BB3, - 22096: 0x9BB4, - 22097: 0x9BB5, - 22098: 0x9BB6, - 22099: 0x9BB7, - 22100: 0x9BB8, - 22101: 0x9BB9, - 22102: 0x9BBA, - 22103: 0x9BBB, - 22104: 0x9BBC, - 22105: 0x9BBD, - 22106: 0x9BBE, - 22107: 0x9BBF, - 22108: 0x9BC0, - 22109: 0x9BC1, - 22110: 0x9BC2, - 22111: 0x9BC3, - 22112: 0x9BC4, - 22113: 0x9BC5, - 22114: 0x9BC6, - 22115: 0x9BC7, - 22116: 0x9BC8, - 22117: 0x9BC9, - 22118: 0x9BCA, - 22119: 0x9BCB, - 22120: 0x9BCC, - 22121: 0x9BCD, - 22122: 0x9BCE, - 22123: 0x9BCF, - 22124: 0x9BD0, - 22125: 0x9BD1, - 22126: 0x9BD2, - 22127: 0x9BD3, - 22128: 0x9BD4, - 22129: 0x9BD5, - 22130: 0x9BD6, - 22131: 0x9BD7, - 22132: 0x9BD8, - 22133: 0x9BD9, - 22134: 0x9BDA, - 22135: 0x9BDB, - 22136: 0x9162, - 22137: 0x9161, - 22138: 0x9170, - 22139: 0x9169, - 22140: 0x916F, - 22141: 0x917D, - 22142: 0x917E, - 22143: 0x9172, - 22144: 0x9174, - 22145: 0x9179, - 22146: 0x918C, - 22147: 0x9185, - 22148: 0x9190, - 22149: 0x918D, - 22150: 0x9191, - 22151: 0x91A2, - 22152: 0x91A3, - 22153: 0x91AA, - 22154: 0x91AD, - 22155: 0x91AE, - 22156: 0x91AF, - 22157: 0x91B5, - 22158: 0x91B4, - 22159: 0x91BA, - 22160: 0x8C55, - 22161: 0x9E7E, - 22162: 0x8DB8, - 22163: 0x8DEB, - 22164: 0x8E05, - 22165: 0x8E59, - 22166: 0x8E69, - 22167: 0x8DB5, - 22168: 0x8DBF, - 22169: 0x8DBC, - 22170: 0x8DBA, - 22171: 0x8DC4, - 22172: 0x8DD6, - 22173: 0x8DD7, - 22174: 0x8DDA, - 22175: 0x8DDE, - 22176: 0x8DCE, - 22177: 0x8DCF, - 22178: 0x8DDB, - 22179: 0x8DC6, - 22180: 0x8DEC, - 22181: 0x8DF7, - 22182: 0x8DF8, - 22183: 0x8DE3, - 22184: 0x8DF9, - 22185: 0x8DFB, - 22186: 0x8DE4, - 22187: 0x8E09, - 22188: 0x8DFD, - 22189: 0x8E14, - 22190: 0x8E1D, - 22191: 0x8E1F, - 22192: 0x8E2C, - 22193: 0x8E2E, - 22194: 0x8E23, - 22195: 0x8E2F, - 22196: 0x8E3A, - 22197: 0x8E40, - 22198: 0x8E39, - 22199: 0x8E35, - 22200: 0x8E3D, - 22201: 0x8E31, - 22202: 0x8E49, - 22203: 0x8E41, - 22204: 0x8E42, - 22205: 0x8E51, - 22206: 0x8E52, - 22207: 0x8E4A, - 22208: 0x8E70, - 22209: 0x8E76, - 22210: 0x8E7C, - 22211: 0x8E6F, - 22212: 0x8E74, - 22213: 0x8E85, - 22214: 0x8E8F, - 22215: 0x8E94, - 22216: 0x8E90, - 22217: 0x8E9C, - 22218: 0x8E9E, - 22219: 0x8C78, - 22220: 0x8C82, - 22221: 0x8C8A, - 22222: 0x8C85, - 22223: 0x8C98, - 22224: 0x8C94, - 22225: 0x659B, - 22226: 0x89D6, - 22227: 0x89DE, - 22228: 0x89DA, - 22229: 0x89DC, - 22230: 0x9BDC, - 22231: 0x9BDD, - 22232: 0x9BDE, - 22233: 0x9BDF, - 22234: 0x9BE0, - 22235: 0x9BE1, - 22236: 0x9BE2, - 22237: 0x9BE3, - 22238: 0x9BE4, - 22239: 0x9BE5, - 22240: 0x9BE6, - 22241: 0x9BE7, - 22242: 0x9BE8, - 22243: 0x9BE9, - 22244: 0x9BEA, - 22245: 0x9BEB, - 22246: 0x9BEC, - 22247: 0x9BED, - 22248: 0x9BEE, - 22249: 0x9BEF, - 22250: 0x9BF0, - 22251: 0x9BF1, - 22252: 0x9BF2, - 22253: 0x9BF3, - 22254: 0x9BF4, - 22255: 0x9BF5, - 22256: 0x9BF6, - 22257: 0x9BF7, - 22258: 0x9BF8, - 22259: 0x9BF9, - 22260: 0x9BFA, - 22261: 0x9BFB, - 22262: 0x9BFC, - 22263: 0x9BFD, - 22264: 0x9BFE, - 22265: 0x9BFF, - 22266: 0x9C00, - 22267: 0x9C01, - 22268: 0x9C02, - 22269: 0x9C03, - 22270: 0x9C04, - 22271: 0x9C05, - 22272: 0x9C06, - 22273: 0x9C07, - 22274: 0x9C08, - 22275: 0x9C09, - 22276: 0x9C0A, - 22277: 0x9C0B, - 22278: 0x9C0C, - 22279: 0x9C0D, - 22280: 0x9C0E, - 22281: 0x9C0F, - 22282: 0x9C10, - 22283: 0x9C11, - 22284: 0x9C12, - 22285: 0x9C13, - 22286: 0x9C14, - 22287: 0x9C15, - 22288: 0x9C16, - 22289: 0x9C17, - 22290: 0x9C18, - 22291: 0x9C19, - 22292: 0x9C1A, - 22293: 0x9C1B, - 22294: 0x9C1C, - 22295: 0x9C1D, - 22296: 0x9C1E, - 22297: 0x9C1F, - 22298: 0x9C20, - 22299: 0x9C21, - 22300: 0x9C22, - 22301: 0x9C23, - 22302: 0x9C24, - 22303: 0x9C25, - 22304: 0x9C26, - 22305: 0x9C27, - 22306: 0x9C28, - 22307: 0x9C29, - 22308: 0x9C2A, - 22309: 0x9C2B, - 22310: 0x9C2C, - 22311: 0x9C2D, - 22312: 0x9C2E, - 22313: 0x9C2F, - 22314: 0x9C30, - 22315: 0x9C31, - 22316: 0x9C32, - 22317: 0x9C33, - 22318: 0x9C34, - 22319: 0x9C35, - 22320: 0x9C36, - 22321: 0x9C37, - 22322: 0x9C38, - 22323: 0x9C39, - 22324: 0x9C3A, - 22325: 0x9C3B, - 22326: 0x89E5, - 22327: 0x89EB, - 22328: 0x89EF, - 22329: 0x8A3E, - 22330: 0x8B26, - 22331: 0x9753, - 22332: 0x96E9, - 22333: 0x96F3, - 22334: 0x96EF, - 22335: 0x9706, - 22336: 0x9701, - 22337: 0x9708, - 22338: 0x970F, - 22339: 0x970E, - 22340: 0x972A, - 22341: 0x972D, - 22342: 0x9730, - 22343: 0x973E, - 22344: 0x9F80, - 22345: 0x9F83, - 22346: 0x9F85, - 22347: 0x9F86, - 22348: 0x9F87, - 22349: 0x9F88, - 22350: 0x9F89, - 22351: 0x9F8A, - 22352: 0x9F8C, - 22353: 0x9EFE, - 22354: 0x9F0B, - 22355: 0x9F0D, - 22356: 0x96B9, - 22357: 0x96BC, - 22358: 0x96BD, - 22359: 0x96CE, - 22360: 0x96D2, - 22361: 0x77BF, - 22362: 0x96E0, - 22363: 0x928E, - 22364: 0x92AE, - 22365: 0x92C8, - 22366: 0x933E, - 22367: 0x936A, - 22368: 0x93CA, - 22369: 0x938F, - 22370: 0x943E, - 22371: 0x946B, - 22372: 0x9C7F, - 22373: 0x9C82, - 22374: 0x9C85, - 22375: 0x9C86, - 22376: 0x9C87, - 22377: 0x9C88, - 22378: 0x7A23, - 22379: 0x9C8B, - 22380: 0x9C8E, - 22381: 0x9C90, - 22382: 0x9C91, - 22383: 0x9C92, - 22384: 0x9C94, - 22385: 0x9C95, - 22386: 0x9C9A, - 22387: 0x9C9B, - 22388: 0x9C9E, - 22389: 0x9C9F, - 22390: 0x9CA0, - 22391: 0x9CA1, - 22392: 0x9CA2, - 22393: 0x9CA3, - 22394: 0x9CA5, - 22395: 0x9CA6, - 22396: 0x9CA7, - 22397: 0x9CA8, - 22398: 0x9CA9, - 22399: 0x9CAB, - 22400: 0x9CAD, - 22401: 0x9CAE, - 22402: 0x9CB0, - 22403: 0x9CB1, - 22404: 0x9CB2, - 22405: 0x9CB3, - 22406: 0x9CB4, - 22407: 0x9CB5, - 22408: 0x9CB6, - 22409: 0x9CB7, - 22410: 0x9CBA, - 22411: 0x9CBB, - 22412: 0x9CBC, - 22413: 0x9CBD, - 22414: 0x9CC4, - 22415: 0x9CC5, - 22416: 0x9CC6, - 22417: 0x9CC7, - 22418: 0x9CCA, - 22419: 0x9CCB, - 22420: 0x9C3C, - 22421: 0x9C3D, - 22422: 0x9C3E, - 22423: 0x9C3F, - 22424: 0x9C40, - 22425: 0x9C41, - 22426: 0x9C42, - 22427: 0x9C43, - 22428: 0x9C44, - 22429: 0x9C45, - 22430: 0x9C46, - 22431: 0x9C47, - 22432: 0x9C48, - 22433: 0x9C49, - 22434: 0x9C4A, - 22435: 0x9C4B, - 22436: 0x9C4C, - 22437: 0x9C4D, - 22438: 0x9C4E, - 22439: 0x9C4F, - 22440: 0x9C50, - 22441: 0x9C51, - 22442: 0x9C52, - 22443: 0x9C53, - 22444: 0x9C54, - 22445: 0x9C55, - 22446: 0x9C56, - 22447: 0x9C57, - 22448: 0x9C58, - 22449: 0x9C59, - 22450: 0x9C5A, - 22451: 0x9C5B, - 22452: 0x9C5C, - 22453: 0x9C5D, - 22454: 0x9C5E, - 22455: 0x9C5F, - 22456: 0x9C60, - 22457: 0x9C61, - 22458: 0x9C62, - 22459: 0x9C63, - 22460: 0x9C64, - 22461: 0x9C65, - 22462: 0x9C66, - 22463: 0x9C67, - 22464: 0x9C68, - 22465: 0x9C69, - 22466: 0x9C6A, - 22467: 0x9C6B, - 22468: 0x9C6C, - 22469: 0x9C6D, - 22470: 0x9C6E, - 22471: 0x9C6F, - 22472: 0x9C70, - 22473: 0x9C71, - 22474: 0x9C72, - 22475: 0x9C73, - 22476: 0x9C74, - 22477: 0x9C75, - 22478: 0x9C76, - 22479: 0x9C77, - 22480: 0x9C78, - 22481: 0x9C79, - 22482: 0x9C7A, - 22483: 0x9C7B, - 22484: 0x9C7D, - 22485: 0x9C7E, - 22486: 0x9C80, - 22487: 0x9C83, - 22488: 0x9C84, - 22489: 0x9C89, - 22490: 0x9C8A, - 22491: 0x9C8C, - 22492: 0x9C8F, - 22493: 0x9C93, - 22494: 0x9C96, - 22495: 0x9C97, - 22496: 0x9C98, - 22497: 0x9C99, - 22498: 0x9C9D, - 22499: 0x9CAA, - 22500: 0x9CAC, - 22501: 0x9CAF, - 22502: 0x9CB9, - 22503: 0x9CBE, - 22504: 0x9CBF, - 22505: 0x9CC0, - 22506: 0x9CC1, - 22507: 0x9CC2, - 22508: 0x9CC8, - 22509: 0x9CC9, - 22510: 0x9CD1, - 22511: 0x9CD2, - 22512: 0x9CDA, - 22513: 0x9CDB, - 22514: 0x9CE0, - 22515: 0x9CE1, - 22516: 0x9CCC, - 22517: 0x9CCD, - 22518: 0x9CCE, - 22519: 0x9CCF, - 22520: 0x9CD0, - 22521: 0x9CD3, - 22522: 0x9CD4, - 22523: 0x9CD5, - 22524: 0x9CD7, - 22525: 0x9CD8, - 22526: 0x9CD9, - 22527: 0x9CDC, - 22528: 0x9CDD, - 22529: 0x9CDF, - 22530: 0x9CE2, - 22531: 0x977C, - 22532: 0x9785, - 22533: 0x9791, - 22534: 0x9792, - 22535: 0x9794, - 22536: 0x97AF, - 22537: 0x97AB, - 22538: 0x97A3, - 22539: 0x97B2, - 22540: 0x97B4, - 22541: 0x9AB1, - 22542: 0x9AB0, - 22543: 0x9AB7, - 22544: 0x9E58, - 22545: 0x9AB6, - 22546: 0x9ABA, - 22547: 0x9ABC, - 22548: 0x9AC1, - 22549: 0x9AC0, - 22550: 0x9AC5, - 22551: 0x9AC2, - 22552: 0x9ACB, - 22553: 0x9ACC, - 22554: 0x9AD1, - 22555: 0x9B45, - 22556: 0x9B43, - 22557: 0x9B47, - 22558: 0x9B49, - 22559: 0x9B48, - 22560: 0x9B4D, - 22561: 0x9B51, - 22562: 0x98E8, - 22563: 0x990D, - 22564: 0x992E, - 22565: 0x9955, - 22566: 0x9954, - 22567: 0x9ADF, - 22568: 0x9AE1, - 22569: 0x9AE6, - 22570: 0x9AEF, - 22571: 0x9AEB, - 22572: 0x9AFB, - 22573: 0x9AED, - 22574: 0x9AF9, - 22575: 0x9B08, - 22576: 0x9B0F, - 22577: 0x9B13, - 22578: 0x9B1F, - 22579: 0x9B23, - 22580: 0x9EBD, - 22581: 0x9EBE, - 22582: 0x7E3B, - 22583: 0x9E82, - 22584: 0x9E87, - 22585: 0x9E88, - 22586: 0x9E8B, - 22587: 0x9E92, - 22588: 0x93D6, - 22589: 0x9E9D, - 22590: 0x9E9F, - 22591: 0x9EDB, - 22592: 0x9EDC, - 22593: 0x9EDD, - 22594: 0x9EE0, - 22595: 0x9EDF, - 22596: 0x9EE2, - 22597: 0x9EE9, - 22598: 0x9EE7, - 22599: 0x9EE5, - 22600: 0x9EEA, - 22601: 0x9EEF, - 22602: 0x9F22, - 22603: 0x9F2C, - 22604: 0x9F2F, - 22605: 0x9F39, - 22606: 0x9F37, - 22607: 0x9F3D, - 22608: 0x9F3E, - 22609: 0x9F44, - 22610: 0x9CE3, - 22611: 0x9CE4, - 22612: 0x9CE5, - 22613: 0x9CE6, - 22614: 0x9CE7, - 22615: 0x9CE8, - 22616: 0x9CE9, - 22617: 0x9CEA, - 22618: 0x9CEB, - 22619: 0x9CEC, - 22620: 0x9CED, - 22621: 0x9CEE, - 22622: 0x9CEF, - 22623: 0x9CF0, - 22624: 0x9CF1, - 22625: 0x9CF2, - 22626: 0x9CF3, - 22627: 0x9CF4, - 22628: 0x9CF5, - 22629: 0x9CF6, - 22630: 0x9CF7, - 22631: 0x9CF8, - 22632: 0x9CF9, - 22633: 0x9CFA, - 22634: 0x9CFB, - 22635: 0x9CFC, - 22636: 0x9CFD, - 22637: 0x9CFE, - 22638: 0x9CFF, - 22639: 0x9D00, - 22640: 0x9D01, - 22641: 0x9D02, - 22642: 0x9D03, - 22643: 0x9D04, - 22644: 0x9D05, - 22645: 0x9D06, - 22646: 0x9D07, - 22647: 0x9D08, - 22648: 0x9D09, - 22649: 0x9D0A, - 22650: 0x9D0B, - 22651: 0x9D0C, - 22652: 0x9D0D, - 22653: 0x9D0E, - 22654: 0x9D0F, - 22655: 0x9D10, - 22656: 0x9D11, - 22657: 0x9D12, - 22658: 0x9D13, - 22659: 0x9D14, - 22660: 0x9D15, - 22661: 0x9D16, - 22662: 0x9D17, - 22663: 0x9D18, - 22664: 0x9D19, - 22665: 0x9D1A, - 22666: 0x9D1B, - 22667: 0x9D1C, - 22668: 0x9D1D, - 22669: 0x9D1E, - 22670: 0x9D1F, - 22671: 0x9D20, - 22672: 0x9D21, - 22673: 0x9D22, - 22674: 0x9D23, - 22675: 0x9D24, - 22676: 0x9D25, - 22677: 0x9D26, - 22678: 0x9D27, - 22679: 0x9D28, - 22680: 0x9D29, - 22681: 0x9D2A, - 22682: 0x9D2B, - 22683: 0x9D2C, - 22684: 0x9D2D, - 22685: 0x9D2E, - 22686: 0x9D2F, - 22687: 0x9D30, - 22688: 0x9D31, - 22689: 0x9D32, - 22690: 0x9D33, - 22691: 0x9D34, - 22692: 0x9D35, - 22693: 0x9D36, - 22694: 0x9D37, - 22695: 0x9D38, - 22696: 0x9D39, - 22697: 0x9D3A, - 22698: 0x9D3B, - 22699: 0x9D3C, - 22700: 0x9D3D, - 22701: 0x9D3E, - 22702: 0x9D3F, - 22703: 0x9D40, - 22704: 0x9D41, - 22705: 0x9D42, - 22800: 0x9D43, - 22801: 0x9D44, - 22802: 0x9D45, - 22803: 0x9D46, - 22804: 0x9D47, - 22805: 0x9D48, - 22806: 0x9D49, - 22807: 0x9D4A, - 22808: 0x9D4B, - 22809: 0x9D4C, - 22810: 0x9D4D, - 22811: 0x9D4E, - 22812: 0x9D4F, - 22813: 0x9D50, - 22814: 0x9D51, - 22815: 0x9D52, - 22816: 0x9D53, - 22817: 0x9D54, - 22818: 0x9D55, - 22819: 0x9D56, - 22820: 0x9D57, - 22821: 0x9D58, - 22822: 0x9D59, - 22823: 0x9D5A, - 22824: 0x9D5B, - 22825: 0x9D5C, - 22826: 0x9D5D, - 22827: 0x9D5E, - 22828: 0x9D5F, - 22829: 0x9D60, - 22830: 0x9D61, - 22831: 0x9D62, - 22832: 0x9D63, - 22833: 0x9D64, - 22834: 0x9D65, - 22835: 0x9D66, - 22836: 0x9D67, - 22837: 0x9D68, - 22838: 0x9D69, - 22839: 0x9D6A, - 22840: 0x9D6B, - 22841: 0x9D6C, - 22842: 0x9D6D, - 22843: 0x9D6E, - 22844: 0x9D6F, - 22845: 0x9D70, - 22846: 0x9D71, - 22847: 0x9D72, - 22848: 0x9D73, - 22849: 0x9D74, - 22850: 0x9D75, - 22851: 0x9D76, - 22852: 0x9D77, - 22853: 0x9D78, - 22854: 0x9D79, - 22855: 0x9D7A, - 22856: 0x9D7B, - 22857: 0x9D7C, - 22858: 0x9D7D, - 22859: 0x9D7E, - 22860: 0x9D7F, - 22861: 0x9D80, - 22862: 0x9D81, - 22863: 0x9D82, - 22864: 0x9D83, - 22865: 0x9D84, - 22866: 0x9D85, - 22867: 0x9D86, - 22868: 0x9D87, - 22869: 0x9D88, - 22870: 0x9D89, - 22871: 0x9D8A, - 22872: 0x9D8B, - 22873: 0x9D8C, - 22874: 0x9D8D, - 22875: 0x9D8E, - 22876: 0x9D8F, - 22877: 0x9D90, - 22878: 0x9D91, - 22879: 0x9D92, - 22880: 0x9D93, - 22881: 0x9D94, - 22882: 0x9D95, - 22883: 0x9D96, - 22884: 0x9D97, - 22885: 0x9D98, - 22886: 0x9D99, - 22887: 0x9D9A, - 22888: 0x9D9B, - 22889: 0x9D9C, - 22890: 0x9D9D, - 22891: 0x9D9E, - 22892: 0x9D9F, - 22893: 0x9DA0, - 22894: 0x9DA1, - 22895: 0x9DA2, - 22990: 0x9DA3, - 22991: 0x9DA4, - 22992: 0x9DA5, - 22993: 0x9DA6, - 22994: 0x9DA7, - 22995: 0x9DA8, - 22996: 0x9DA9, - 22997: 0x9DAA, - 22998: 0x9DAB, - 22999: 0x9DAC, - 23000: 0x9DAD, - 23001: 0x9DAE, - 23002: 0x9DAF, - 23003: 0x9DB0, - 23004: 0x9DB1, - 23005: 0x9DB2, - 23006: 0x9DB3, - 23007: 0x9DB4, - 23008: 0x9DB5, - 23009: 0x9DB6, - 23010: 0x9DB7, - 23011: 0x9DB8, - 23012: 0x9DB9, - 23013: 0x9DBA, - 23014: 0x9DBB, - 23015: 0x9DBC, - 23016: 0x9DBD, - 23017: 0x9DBE, - 23018: 0x9DBF, - 23019: 0x9DC0, - 23020: 0x9DC1, - 23021: 0x9DC2, - 23022: 0x9DC3, - 23023: 0x9DC4, - 23024: 0x9DC5, - 23025: 0x9DC6, - 23026: 0x9DC7, - 23027: 0x9DC8, - 23028: 0x9DC9, - 23029: 0x9DCA, - 23030: 0x9DCB, - 23031: 0x9DCC, - 23032: 0x9DCD, - 23033: 0x9DCE, - 23034: 0x9DCF, - 23035: 0x9DD0, - 23036: 0x9DD1, - 23037: 0x9DD2, - 23038: 0x9DD3, - 23039: 0x9DD4, - 23040: 0x9DD5, - 23041: 0x9DD6, - 23042: 0x9DD7, - 23043: 0x9DD8, - 23044: 0x9DD9, - 23045: 0x9DDA, - 23046: 0x9DDB, - 23047: 0x9DDC, - 23048: 0x9DDD, - 23049: 0x9DDE, - 23050: 0x9DDF, - 23051: 0x9DE0, - 23052: 0x9DE1, - 23053: 0x9DE2, - 23054: 0x9DE3, - 23055: 0x9DE4, - 23056: 0x9DE5, - 23057: 0x9DE6, - 23058: 0x9DE7, - 23059: 0x9DE8, - 23060: 0x9DE9, - 23061: 0x9DEA, - 23062: 0x9DEB, - 23063: 0x9DEC, - 23064: 0x9DED, - 23065: 0x9DEE, - 23066: 0x9DEF, - 23067: 0x9DF0, - 23068: 0x9DF1, - 23069: 0x9DF2, - 23070: 0x9DF3, - 23071: 0x9DF4, - 23072: 0x9DF5, - 23073: 0x9DF6, - 23074: 0x9DF7, - 23075: 0x9DF8, - 23076: 0x9DF9, - 23077: 0x9DFA, - 23078: 0x9DFB, - 23079: 0x9DFC, - 23080: 0x9DFD, - 23081: 0x9DFE, - 23082: 0x9DFF, - 23083: 0x9E00, - 23084: 0x9E01, - 23085: 0x9E02, - 23180: 0x9E03, - 23181: 0x9E04, - 23182: 0x9E05, - 23183: 0x9E06, - 23184: 0x9E07, - 23185: 0x9E08, - 23186: 0x9E09, - 23187: 0x9E0A, - 23188: 0x9E0B, - 23189: 0x9E0C, - 23190: 0x9E0D, - 23191: 0x9E0E, - 23192: 0x9E0F, - 23193: 0x9E10, - 23194: 0x9E11, - 23195: 0x9E12, - 23196: 0x9E13, - 23197: 0x9E14, - 23198: 0x9E15, - 23199: 0x9E16, - 23200: 0x9E17, - 23201: 0x9E18, - 23202: 0x9E19, - 23203: 0x9E1A, - 23204: 0x9E1B, - 23205: 0x9E1C, - 23206: 0x9E1D, - 23207: 0x9E1E, - 23208: 0x9E24, - 23209: 0x9E27, - 23210: 0x9E2E, - 23211: 0x9E30, - 23212: 0x9E34, - 23213: 0x9E3B, - 23214: 0x9E3C, - 23215: 0x9E40, - 23216: 0x9E4D, - 23217: 0x9E50, - 23218: 0x9E52, - 23219: 0x9E53, - 23220: 0x9E54, - 23221: 0x9E56, - 23222: 0x9E59, - 23223: 0x9E5D, - 23224: 0x9E5F, - 23225: 0x9E60, - 23226: 0x9E61, - 23227: 0x9E62, - 23228: 0x9E65, - 23229: 0x9E6E, - 23230: 0x9E6F, - 23231: 0x9E72, - 23232: 0x9E74, - 23233: 0x9E75, - 23234: 0x9E76, - 23235: 0x9E77, - 23236: 0x9E78, - 23237: 0x9E79, - 23238: 0x9E7A, - 23239: 0x9E7B, - 23240: 0x9E7C, - 23241: 0x9E7D, - 23242: 0x9E80, - 23243: 0x9E81, - 23244: 0x9E83, - 23245: 0x9E84, - 23246: 0x9E85, - 23247: 0x9E86, - 23248: 0x9E89, - 23249: 0x9E8A, - 23250: 0x9E8C, - 23251: 0x9E8D, - 23252: 0x9E8E, - 23253: 0x9E8F, - 23254: 0x9E90, - 23255: 0x9E91, - 23256: 0x9E94, - 23257: 0x9E95, - 23258: 0x9E96, - 23259: 0x9E97, - 23260: 0x9E98, - 23261: 0x9E99, - 23262: 0x9E9A, - 23263: 0x9E9B, - 23264: 0x9E9C, - 23265: 0x9E9E, - 23266: 0x9EA0, - 23267: 0x9EA1, - 23268: 0x9EA2, - 23269: 0x9EA3, - 23270: 0x9EA4, - 23271: 0x9EA5, - 23272: 0x9EA7, - 23273: 0x9EA8, - 23274: 0x9EA9, - 23275: 0x9EAA, - 23370: 0x9EAB, - 23371: 0x9EAC, - 23372: 0x9EAD, - 23373: 0x9EAE, - 23374: 0x9EAF, - 23375: 0x9EB0, - 23376: 0x9EB1, - 23377: 0x9EB2, - 23378: 0x9EB3, - 23379: 0x9EB5, - 23380: 0x9EB6, - 23381: 0x9EB7, - 23382: 0x9EB9, - 23383: 0x9EBA, - 23384: 0x9EBC, - 23385: 0x9EBF, - 23386: 0x9EC0, - 23387: 0x9EC1, - 23388: 0x9EC2, - 23389: 0x9EC3, - 23390: 0x9EC5, - 23391: 0x9EC6, - 23392: 0x9EC7, - 23393: 0x9EC8, - 23394: 0x9ECA, - 23395: 0x9ECB, - 23396: 0x9ECC, - 23397: 0x9ED0, - 23398: 0x9ED2, - 23399: 0x9ED3, - 23400: 0x9ED5, - 23401: 0x9ED6, - 23402: 0x9ED7, - 23403: 0x9ED9, - 23404: 0x9EDA, - 23405: 0x9EDE, - 23406: 0x9EE1, - 23407: 0x9EE3, - 23408: 0x9EE4, - 23409: 0x9EE6, - 23410: 0x9EE8, - 23411: 0x9EEB, - 23412: 0x9EEC, - 23413: 0x9EED, - 23414: 0x9EEE, - 23415: 0x9EF0, - 23416: 0x9EF1, - 23417: 0x9EF2, - 23418: 0x9EF3, - 23419: 0x9EF4, - 23420: 0x9EF5, - 23421: 0x9EF6, - 23422: 0x9EF7, - 23423: 0x9EF8, - 23424: 0x9EFA, - 23425: 0x9EFD, - 23426: 0x9EFF, - 23427: 0x9F00, - 23428: 0x9F01, - 23429: 0x9F02, - 23430: 0x9F03, - 23431: 0x9F04, - 23432: 0x9F05, - 23433: 0x9F06, - 23434: 0x9F07, - 23435: 0x9F08, - 23436: 0x9F09, - 23437: 0x9F0A, - 23438: 0x9F0C, - 23439: 0x9F0F, - 23440: 0x9F11, - 23441: 0x9F12, - 23442: 0x9F14, - 23443: 0x9F15, - 23444: 0x9F16, - 23445: 0x9F18, - 23446: 0x9F1A, - 23447: 0x9F1B, - 23448: 0x9F1C, - 23449: 0x9F1D, - 23450: 0x9F1E, - 23451: 0x9F1F, - 23452: 0x9F21, - 23453: 0x9F23, - 23454: 0x9F24, - 23455: 0x9F25, - 23456: 0x9F26, - 23457: 0x9F27, - 23458: 0x9F28, - 23459: 0x9F29, - 23460: 0x9F2A, - 23461: 0x9F2B, - 23462: 0x9F2D, - 23463: 0x9F2E, - 23464: 0x9F30, - 23465: 0x9F31, - 23560: 0x9F32, - 23561: 0x9F33, - 23562: 0x9F34, - 23563: 0x9F35, - 23564: 0x9F36, - 23565: 0x9F38, - 23566: 0x9F3A, - 23567: 0x9F3C, - 23568: 0x9F3F, - 23569: 0x9F40, - 23570: 0x9F41, - 23571: 0x9F42, - 23572: 0x9F43, - 23573: 0x9F45, - 23574: 0x9F46, - 23575: 0x9F47, - 23576: 0x9F48, - 23577: 0x9F49, - 23578: 0x9F4A, - 23579: 0x9F4B, - 23580: 0x9F4C, - 23581: 0x9F4D, - 23582: 0x9F4E, - 23583: 0x9F4F, - 23584: 0x9F52, - 23585: 0x9F53, - 23586: 0x9F54, - 23587: 0x9F55, - 23588: 0x9F56, - 23589: 0x9F57, - 23590: 0x9F58, - 23591: 0x9F59, - 23592: 0x9F5A, - 23593: 0x9F5B, - 23594: 0x9F5C, - 23595: 0x9F5D, - 23596: 0x9F5E, - 23597: 0x9F5F, - 23598: 0x9F60, - 23599: 0x9F61, - 23600: 0x9F62, - 23601: 0x9F63, - 23602: 0x9F64, - 23603: 0x9F65, - 23604: 0x9F66, - 23605: 0x9F67, - 23606: 0x9F68, - 23607: 0x9F69, - 23608: 0x9F6A, - 23609: 0x9F6B, - 23610: 0x9F6C, - 23611: 0x9F6D, - 23612: 0x9F6E, - 23613: 0x9F6F, - 23614: 0x9F70, - 23615: 0x9F71, - 23616: 0x9F72, - 23617: 0x9F73, - 23618: 0x9F74, - 23619: 0x9F75, - 23620: 0x9F76, - 23621: 0x9F77, - 23622: 0x9F78, - 23623: 0x9F79, - 23624: 0x9F7A, - 23625: 0x9F7B, - 23626: 0x9F7C, - 23627: 0x9F7D, - 23628: 0x9F7E, - 23629: 0x9F81, - 23630: 0x9F82, - 23631: 0x9F8D, - 23632: 0x9F8E, - 23633: 0x9F8F, - 23634: 0x9F90, - 23635: 0x9F91, - 23636: 0x9F92, - 23637: 0x9F93, - 23638: 0x9F94, - 23639: 0x9F95, - 23640: 0x9F96, - 23641: 0x9F97, - 23642: 0x9F98, - 23643: 0x9F9C, - 23644: 0x9F9D, - 23645: 0x9F9E, - 23646: 0x9FA1, - 23647: 0x9FA2, - 23648: 0x9FA3, - 23649: 0x9FA4, - 23650: 0x9FA5, - 23651: 0xF92C, - 23652: 0xF979, - 23653: 0xF995, - 23654: 0xF9E7, - 23655: 0xF9F1, - 23750: 0xFA0C, - 23751: 0xFA0D, - 23752: 0xFA0E, - 23753: 0xFA0F, - 23754: 0xFA11, - 23755: 0xFA13, - 23756: 0xFA14, - 23757: 0xFA18, - 23758: 0xFA1F, - 23759: 0xFA20, - 23760: 0xFA21, - 23761: 0xFA23, - 23762: 0xFA24, - 23763: 0xFA27, - 23764: 0xFA28, - 23765: 0xFA29, - 23766: 0x2E81, - 23770: 0x2E84, - 23771: 0x3473, - 23772: 0x3447, - 23773: 0x2E88, - 23774: 0x2E8B, - 23776: 0x359E, - 23777: 0x361A, - 23778: 0x360E, - 23779: 0x2E8C, - 23780: 0x2E97, - 23781: 0x396E, - 23782: 0x3918, - 23784: 0x39CF, - 23785: 0x39DF, - 23786: 0x3A73, - 23787: 0x39D0, - 23790: 0x3B4E, - 23791: 0x3C6E, - 23792: 0x3CE0, - 23793: 0x2EA7, - 23796: 0x2EAA, - 23797: 0x4056, - 23798: 0x415F, - 23799: 0x2EAE, - 23800: 0x4337, - 23801: 0x2EB3, - 23802: 0x2EB6, - 23803: 0x2EB7, - 23805: 0x43B1, - 23806: 0x43AC, - 23807: 0x2EBB, - 23808: 0x43DD, - 23809: 0x44D6, - 23810: 0x4661, - 23811: 0x464C, - 23813: 0x4723, - 23814: 0x4729, - 23815: 0x477C, - 23816: 0x478D, - 23817: 0x2ECA, - 23818: 0x4947, - 23819: 0x497A, - 23820: 0x497D, - 23821: 0x4982, - 23822: 0x4983, - 23823: 0x4985, - 23824: 0x4986, - 23825: 0x499F, - 23826: 0x499B, - 23827: 0x49B7, - 23828: 0x49B6, - 23831: 0x4CA3, - 23832: 0x4C9F, - 23833: 0x4CA0, - 23834: 0x4CA1, - 23835: 0x4C77, - 23836: 0x4CA2, - 23837: 0x4D13, - 23838: 0x4D14, - 23839: 0x4D15, - 23840: 0x4D16, - 23841: 0x4D17, - 23842: 0x4D18, - 23843: 0x4D19, - 23844: 0x4DAE, -} - -const numEncodeTables = 5 - -// encodeX are the encoding tables from Unicode to GBK code, -// sorted by decreasing length. -// encode0: 28965 entries for runes in [11905, 40870). -// encode1: 1587 entries for runes in [ 8208, 9795). -// encode2: 942 entries for runes in [ 164, 1106). -// encode3: 438 entries for runes in [65072, 65510). -// encode4: 254 entries for runes in [63788, 64042). - -const encode0Low, encode0High = 11905, 40870 - -var encode0 = [...]uint16{ - 11905 - 11905: 0xFE50, - 11908 - 11905: 0xFE54, - 11912 - 11905: 0xFE57, - 11915 - 11905: 0xFE58, - 11916 - 11905: 0xFE5D, - 11927 - 11905: 0xFE5E, - 11943 - 11905: 0xFE6B, - 11946 - 11905: 0xFE6E, - 11950 - 11905: 0xFE71, - 11955 - 11905: 0xFE73, - 11958 - 11905: 0xFE74, - 11959 - 11905: 0xFE75, - 11963 - 11905: 0xFE79, - 11978 - 11905: 0xFE84, - 12272 - 11905: 0xA98A, - 12273 - 11905: 0xA98B, - 12274 - 11905: 0xA98C, - 12275 - 11905: 0xA98D, - 12276 - 11905: 0xA98E, - 12277 - 11905: 0xA98F, - 12278 - 11905: 0xA990, - 12279 - 11905: 0xA991, - 12280 - 11905: 0xA992, - 12281 - 11905: 0xA993, - 12282 - 11905: 0xA994, - 12283 - 11905: 0xA995, - 12288 - 11905: 0xA1A1, - 12289 - 11905: 0xA1A2, - 12290 - 11905: 0xA1A3, - 12291 - 11905: 0xA1A8, - 12293 - 11905: 0xA1A9, - 12294 - 11905: 0xA965, - 12295 - 11905: 0xA996, - 12296 - 11905: 0xA1B4, - 12297 - 11905: 0xA1B5, - 12298 - 11905: 0xA1B6, - 12299 - 11905: 0xA1B7, - 12300 - 11905: 0xA1B8, - 12301 - 11905: 0xA1B9, - 12302 - 11905: 0xA1BA, - 12303 - 11905: 0xA1BB, - 12304 - 11905: 0xA1BE, - 12305 - 11905: 0xA1BF, - 12306 - 11905: 0xA893, - 12307 - 11905: 0xA1FE, - 12308 - 11905: 0xA1B2, - 12309 - 11905: 0xA1B3, - 12310 - 11905: 0xA1BC, - 12311 - 11905: 0xA1BD, - 12317 - 11905: 0xA894, - 12318 - 11905: 0xA895, - 12321 - 11905: 0xA940, - 12322 - 11905: 0xA941, - 12323 - 11905: 0xA942, - 12324 - 11905: 0xA943, - 12325 - 11905: 0xA944, - 12326 - 11905: 0xA945, - 12327 - 11905: 0xA946, - 12328 - 11905: 0xA947, - 12329 - 11905: 0xA948, - 12350 - 11905: 0xA989, - 12353 - 11905: 0xA4A1, - 12354 - 11905: 0xA4A2, - 12355 - 11905: 0xA4A3, - 12356 - 11905: 0xA4A4, - 12357 - 11905: 0xA4A5, - 12358 - 11905: 0xA4A6, - 12359 - 11905: 0xA4A7, - 12360 - 11905: 0xA4A8, - 12361 - 11905: 0xA4A9, - 12362 - 11905: 0xA4AA, - 12363 - 11905: 0xA4AB, - 12364 - 11905: 0xA4AC, - 12365 - 11905: 0xA4AD, - 12366 - 11905: 0xA4AE, - 12367 - 11905: 0xA4AF, - 12368 - 11905: 0xA4B0, - 12369 - 11905: 0xA4B1, - 12370 - 11905: 0xA4B2, - 12371 - 11905: 0xA4B3, - 12372 - 11905: 0xA4B4, - 12373 - 11905: 0xA4B5, - 12374 - 11905: 0xA4B6, - 12375 - 11905: 0xA4B7, - 12376 - 11905: 0xA4B8, - 12377 - 11905: 0xA4B9, - 12378 - 11905: 0xA4BA, - 12379 - 11905: 0xA4BB, - 12380 - 11905: 0xA4BC, - 12381 - 11905: 0xA4BD, - 12382 - 11905: 0xA4BE, - 12383 - 11905: 0xA4BF, - 12384 - 11905: 0xA4C0, - 12385 - 11905: 0xA4C1, - 12386 - 11905: 0xA4C2, - 12387 - 11905: 0xA4C3, - 12388 - 11905: 0xA4C4, - 12389 - 11905: 0xA4C5, - 12390 - 11905: 0xA4C6, - 12391 - 11905: 0xA4C7, - 12392 - 11905: 0xA4C8, - 12393 - 11905: 0xA4C9, - 12394 - 11905: 0xA4CA, - 12395 - 11905: 0xA4CB, - 12396 - 11905: 0xA4CC, - 12397 - 11905: 0xA4CD, - 12398 - 11905: 0xA4CE, - 12399 - 11905: 0xA4CF, - 12400 - 11905: 0xA4D0, - 12401 - 11905: 0xA4D1, - 12402 - 11905: 0xA4D2, - 12403 - 11905: 0xA4D3, - 12404 - 11905: 0xA4D4, - 12405 - 11905: 0xA4D5, - 12406 - 11905: 0xA4D6, - 12407 - 11905: 0xA4D7, - 12408 - 11905: 0xA4D8, - 12409 - 11905: 0xA4D9, - 12410 - 11905: 0xA4DA, - 12411 - 11905: 0xA4DB, - 12412 - 11905: 0xA4DC, - 12413 - 11905: 0xA4DD, - 12414 - 11905: 0xA4DE, - 12415 - 11905: 0xA4DF, - 12416 - 11905: 0xA4E0, - 12417 - 11905: 0xA4E1, - 12418 - 11905: 0xA4E2, - 12419 - 11905: 0xA4E3, - 12420 - 11905: 0xA4E4, - 12421 - 11905: 0xA4E5, - 12422 - 11905: 0xA4E6, - 12423 - 11905: 0xA4E7, - 12424 - 11905: 0xA4E8, - 12425 - 11905: 0xA4E9, - 12426 - 11905: 0xA4EA, - 12427 - 11905: 0xA4EB, - 12428 - 11905: 0xA4EC, - 12429 - 11905: 0xA4ED, - 12430 - 11905: 0xA4EE, - 12431 - 11905: 0xA4EF, - 12432 - 11905: 0xA4F0, - 12433 - 11905: 0xA4F1, - 12434 - 11905: 0xA4F2, - 12435 - 11905: 0xA4F3, - 12443 - 11905: 0xA961, - 12444 - 11905: 0xA962, - 12445 - 11905: 0xA966, - 12446 - 11905: 0xA967, - 12449 - 11905: 0xA5A1, - 12450 - 11905: 0xA5A2, - 12451 - 11905: 0xA5A3, - 12452 - 11905: 0xA5A4, - 12453 - 11905: 0xA5A5, - 12454 - 11905: 0xA5A6, - 12455 - 11905: 0xA5A7, - 12456 - 11905: 0xA5A8, - 12457 - 11905: 0xA5A9, - 12458 - 11905: 0xA5AA, - 12459 - 11905: 0xA5AB, - 12460 - 11905: 0xA5AC, - 12461 - 11905: 0xA5AD, - 12462 - 11905: 0xA5AE, - 12463 - 11905: 0xA5AF, - 12464 - 11905: 0xA5B0, - 12465 - 11905: 0xA5B1, - 12466 - 11905: 0xA5B2, - 12467 - 11905: 0xA5B3, - 12468 - 11905: 0xA5B4, - 12469 - 11905: 0xA5B5, - 12470 - 11905: 0xA5B6, - 12471 - 11905: 0xA5B7, - 12472 - 11905: 0xA5B8, - 12473 - 11905: 0xA5B9, - 12474 - 11905: 0xA5BA, - 12475 - 11905: 0xA5BB, - 12476 - 11905: 0xA5BC, - 12477 - 11905: 0xA5BD, - 12478 - 11905: 0xA5BE, - 12479 - 11905: 0xA5BF, - 12480 - 11905: 0xA5C0, - 12481 - 11905: 0xA5C1, - 12482 - 11905: 0xA5C2, - 12483 - 11905: 0xA5C3, - 12484 - 11905: 0xA5C4, - 12485 - 11905: 0xA5C5, - 12486 - 11905: 0xA5C6, - 12487 - 11905: 0xA5C7, - 12488 - 11905: 0xA5C8, - 12489 - 11905: 0xA5C9, - 12490 - 11905: 0xA5CA, - 12491 - 11905: 0xA5CB, - 12492 - 11905: 0xA5CC, - 12493 - 11905: 0xA5CD, - 12494 - 11905: 0xA5CE, - 12495 - 11905: 0xA5CF, - 12496 - 11905: 0xA5D0, - 12497 - 11905: 0xA5D1, - 12498 - 11905: 0xA5D2, - 12499 - 11905: 0xA5D3, - 12500 - 11905: 0xA5D4, - 12501 - 11905: 0xA5D5, - 12502 - 11905: 0xA5D6, - 12503 - 11905: 0xA5D7, - 12504 - 11905: 0xA5D8, - 12505 - 11905: 0xA5D9, - 12506 - 11905: 0xA5DA, - 12507 - 11905: 0xA5DB, - 12508 - 11905: 0xA5DC, - 12509 - 11905: 0xA5DD, - 12510 - 11905: 0xA5DE, - 12511 - 11905: 0xA5DF, - 12512 - 11905: 0xA5E0, - 12513 - 11905: 0xA5E1, - 12514 - 11905: 0xA5E2, - 12515 - 11905: 0xA5E3, - 12516 - 11905: 0xA5E4, - 12517 - 11905: 0xA5E5, - 12518 - 11905: 0xA5E6, - 12519 - 11905: 0xA5E7, - 12520 - 11905: 0xA5E8, - 12521 - 11905: 0xA5E9, - 12522 - 11905: 0xA5EA, - 12523 - 11905: 0xA5EB, - 12524 - 11905: 0xA5EC, - 12525 - 11905: 0xA5ED, - 12526 - 11905: 0xA5EE, - 12527 - 11905: 0xA5EF, - 12528 - 11905: 0xA5F0, - 12529 - 11905: 0xA5F1, - 12530 - 11905: 0xA5F2, - 12531 - 11905: 0xA5F3, - 12532 - 11905: 0xA5F4, - 12533 - 11905: 0xA5F5, - 12534 - 11905: 0xA5F6, - 12540 - 11905: 0xA960, - 12541 - 11905: 0xA963, - 12542 - 11905: 0xA964, - 12549 - 11905: 0xA8C5, - 12550 - 11905: 0xA8C6, - 12551 - 11905: 0xA8C7, - 12552 - 11905: 0xA8C8, - 12553 - 11905: 0xA8C9, - 12554 - 11905: 0xA8CA, - 12555 - 11905: 0xA8CB, - 12556 - 11905: 0xA8CC, - 12557 - 11905: 0xA8CD, - 12558 - 11905: 0xA8CE, - 12559 - 11905: 0xA8CF, - 12560 - 11905: 0xA8D0, - 12561 - 11905: 0xA8D1, - 12562 - 11905: 0xA8D2, - 12563 - 11905: 0xA8D3, - 12564 - 11905: 0xA8D4, - 12565 - 11905: 0xA8D5, - 12566 - 11905: 0xA8D6, - 12567 - 11905: 0xA8D7, - 12568 - 11905: 0xA8D8, - 12569 - 11905: 0xA8D9, - 12570 - 11905: 0xA8DA, - 12571 - 11905: 0xA8DB, - 12572 - 11905: 0xA8DC, - 12573 - 11905: 0xA8DD, - 12574 - 11905: 0xA8DE, - 12575 - 11905: 0xA8DF, - 12576 - 11905: 0xA8E0, - 12577 - 11905: 0xA8E1, - 12578 - 11905: 0xA8E2, - 12579 - 11905: 0xA8E3, - 12580 - 11905: 0xA8E4, - 12581 - 11905: 0xA8E5, - 12582 - 11905: 0xA8E6, - 12583 - 11905: 0xA8E7, - 12584 - 11905: 0xA8E8, - 12585 - 11905: 0xA8E9, - 12832 - 11905: 0xA2E5, - 12833 - 11905: 0xA2E6, - 12834 - 11905: 0xA2E7, - 12835 - 11905: 0xA2E8, - 12836 - 11905: 0xA2E9, - 12837 - 11905: 0xA2EA, - 12838 - 11905: 0xA2EB, - 12839 - 11905: 0xA2EC, - 12840 - 11905: 0xA2ED, - 12841 - 11905: 0xA2EE, - 12849 - 11905: 0xA95A, - 12963 - 11905: 0xA949, - 13198 - 11905: 0xA94A, - 13199 - 11905: 0xA94B, - 13212 - 11905: 0xA94C, - 13213 - 11905: 0xA94D, - 13214 - 11905: 0xA94E, - 13217 - 11905: 0xA94F, - 13252 - 11905: 0xA950, - 13262 - 11905: 0xA951, - 13265 - 11905: 0xA952, - 13266 - 11905: 0xA953, - 13269 - 11905: 0xA954, - 13383 - 11905: 0xFE56, - 13427 - 11905: 0xFE55, - 13726 - 11905: 0xFE5A, - 13838 - 11905: 0xFE5C, - 13850 - 11905: 0xFE5B, - 14616 - 11905: 0xFE60, - 14702 - 11905: 0xFE5F, - 14799 - 11905: 0xFE62, - 14800 - 11905: 0xFE65, - 14815 - 11905: 0xFE63, - 14963 - 11905: 0xFE64, - 15182 - 11905: 0xFE68, - 15470 - 11905: 0xFE69, - 15584 - 11905: 0xFE6A, - 16470 - 11905: 0xFE6F, - 16735 - 11905: 0xFE70, - 17207 - 11905: 0xFE72, - 17324 - 11905: 0xFE78, - 17329 - 11905: 0xFE77, - 17373 - 11905: 0xFE7A, - 17622 - 11905: 0xFE7B, - 17996 - 11905: 0xFE7D, - 18017 - 11905: 0xFE7C, - 18211 - 11905: 0xFE80, - 18217 - 11905: 0xFE81, - 18300 - 11905: 0xFE82, - 18317 - 11905: 0xFE83, - 18759 - 11905: 0xFE85, - 18810 - 11905: 0xFE86, - 18813 - 11905: 0xFE87, - 18818 - 11905: 0xFE88, - 18819 - 11905: 0xFE89, - 18821 - 11905: 0xFE8A, - 18822 - 11905: 0xFE8B, - 18843 - 11905: 0xFE8D, - 18847 - 11905: 0xFE8C, - 18870 - 11905: 0xFE8F, - 18871 - 11905: 0xFE8E, - 19575 - 11905: 0xFE96, - 19615 - 11905: 0xFE93, - 19616 - 11905: 0xFE94, - 19617 - 11905: 0xFE95, - 19618 - 11905: 0xFE97, - 19619 - 11905: 0xFE92, - 19731 - 11905: 0xFE98, - 19732 - 11905: 0xFE99, - 19733 - 11905: 0xFE9A, - 19734 - 11905: 0xFE9B, - 19735 - 11905: 0xFE9C, - 19736 - 11905: 0xFE9D, - 19737 - 11905: 0xFE9E, - 19886 - 11905: 0xFE9F, - 19968 - 11905: 0xD2BB, - 19969 - 11905: 0xB6A1, - 19970 - 11905: 0x8140, - 19971 - 11905: 0xC6DF, - 19972 - 11905: 0x8141, - 19973 - 11905: 0x8142, - 19974 - 11905: 0x8143, - 19975 - 11905: 0xCDF2, - 19976 - 11905: 0xD5C9, - 19977 - 11905: 0xC8FD, - 19978 - 11905: 0xC9CF, - 19979 - 11905: 0xCFC2, - 19980 - 11905: 0xD8A2, - 19981 - 11905: 0xB2BB, - 19982 - 11905: 0xD3EB, - 19983 - 11905: 0x8144, - 19984 - 11905: 0xD8A4, - 19985 - 11905: 0xB3F3, - 19986 - 11905: 0x8145, - 19987 - 11905: 0xD7A8, - 19988 - 11905: 0xC7D2, - 19989 - 11905: 0xD8A7, - 19990 - 11905: 0xCAC0, - 19991 - 11905: 0x8146, - 19992 - 11905: 0xC7F0, - 19993 - 11905: 0xB1FB, - 19994 - 11905: 0xD2B5, - 19995 - 11905: 0xB4D4, - 19996 - 11905: 0xB6AB, - 19997 - 11905: 0xCBBF, - 19998 - 11905: 0xD8A9, - 19999 - 11905: 0x8147, - 20000 - 11905: 0x8148, - 20001 - 11905: 0x8149, - 20002 - 11905: 0xB6AA, - 20003 - 11905: 0x814A, - 20004 - 11905: 0xC1BD, - 20005 - 11905: 0xD1CF, - 20006 - 11905: 0x814B, - 20007 - 11905: 0xC9A5, - 20008 - 11905: 0xD8AD, - 20009 - 11905: 0x814C, - 20010 - 11905: 0xB8F6, - 20011 - 11905: 0xD1BE, - 20012 - 11905: 0xE3DC, - 20013 - 11905: 0xD6D0, - 20014 - 11905: 0x814D, - 20015 - 11905: 0x814E, - 20016 - 11905: 0xB7E1, - 20017 - 11905: 0x814F, - 20018 - 11905: 0xB4AE, - 20019 - 11905: 0x8150, - 20020 - 11905: 0xC1D9, - 20021 - 11905: 0x8151, - 20022 - 11905: 0xD8BC, - 20023 - 11905: 0x8152, - 20024 - 11905: 0xCDE8, - 20025 - 11905: 0xB5A4, - 20026 - 11905: 0xCEAA, - 20027 - 11905: 0xD6F7, - 20028 - 11905: 0x8153, - 20029 - 11905: 0xC0F6, - 20030 - 11905: 0xBED9, - 20031 - 11905: 0xD8AF, - 20032 - 11905: 0x8154, - 20033 - 11905: 0x8155, - 20034 - 11905: 0x8156, - 20035 - 11905: 0xC4CB, - 20036 - 11905: 0x8157, - 20037 - 11905: 0xBEC3, - 20038 - 11905: 0x8158, - 20039 - 11905: 0xD8B1, - 20040 - 11905: 0xC3B4, - 20041 - 11905: 0xD2E5, - 20042 - 11905: 0x8159, - 20043 - 11905: 0xD6AE, - 20044 - 11905: 0xCEDA, - 20045 - 11905: 0xD5A7, - 20046 - 11905: 0xBAF5, - 20047 - 11905: 0xB7A6, - 20048 - 11905: 0xC0D6, - 20049 - 11905: 0x815A, - 20050 - 11905: 0xC6B9, - 20051 - 11905: 0xC5D2, - 20052 - 11905: 0xC7C7, - 20053 - 11905: 0x815B, - 20054 - 11905: 0xB9D4, - 20055 - 11905: 0x815C, - 20056 - 11905: 0xB3CB, - 20057 - 11905: 0xD2D2, - 20058 - 11905: 0x815D, - 20059 - 11905: 0x815E, - 20060 - 11905: 0xD8BF, - 20061 - 11905: 0xBEC5, - 20062 - 11905: 0xC6F2, - 20063 - 11905: 0xD2B2, - 20064 - 11905: 0xCFB0, - 20065 - 11905: 0xCFE7, - 20066 - 11905: 0x815F, - 20067 - 11905: 0x8160, - 20068 - 11905: 0x8161, - 20069 - 11905: 0x8162, - 20070 - 11905: 0xCAE9, - 20071 - 11905: 0x8163, - 20072 - 11905: 0x8164, - 20073 - 11905: 0xD8C0, - 20074 - 11905: 0x8165, - 20075 - 11905: 0x8166, - 20076 - 11905: 0x8167, - 20077 - 11905: 0x8168, - 20078 - 11905: 0x8169, - 20079 - 11905: 0x816A, - 20080 - 11905: 0xC2F2, - 20081 - 11905: 0xC2D2, - 20082 - 11905: 0x816B, - 20083 - 11905: 0xC8E9, - 20084 - 11905: 0x816C, - 20085 - 11905: 0x816D, - 20086 - 11905: 0x816E, - 20087 - 11905: 0x816F, - 20088 - 11905: 0x8170, - 20089 - 11905: 0x8171, - 20090 - 11905: 0x8172, - 20091 - 11905: 0x8173, - 20092 - 11905: 0x8174, - 20093 - 11905: 0x8175, - 20094 - 11905: 0xC7AC, - 20095 - 11905: 0x8176, - 20096 - 11905: 0x8177, - 20097 - 11905: 0x8178, - 20098 - 11905: 0x8179, - 20099 - 11905: 0x817A, - 20100 - 11905: 0x817B, - 20101 - 11905: 0x817C, - 20102 - 11905: 0xC1CB, - 20103 - 11905: 0x817D, - 20104 - 11905: 0xD3E8, - 20105 - 11905: 0xD5F9, - 20106 - 11905: 0x817E, - 20107 - 11905: 0xCAC2, - 20108 - 11905: 0xB6FE, - 20109 - 11905: 0xD8A1, - 20110 - 11905: 0xD3DA, - 20111 - 11905: 0xBFF7, - 20112 - 11905: 0x8180, - 20113 - 11905: 0xD4C6, - 20114 - 11905: 0xBBA5, - 20115 - 11905: 0xD8C1, - 20116 - 11905: 0xCEE5, - 20117 - 11905: 0xBEAE, - 20118 - 11905: 0x8181, - 20119 - 11905: 0x8182, - 20120 - 11905: 0xD8A8, - 20121 - 11905: 0x8183, - 20122 - 11905: 0xD1C7, - 20123 - 11905: 0xD0A9, - 20124 - 11905: 0x8184, - 20125 - 11905: 0x8185, - 20126 - 11905: 0x8186, - 20127 - 11905: 0xD8BD, - 20128 - 11905: 0xD9EF, - 20129 - 11905: 0xCDF6, - 20130 - 11905: 0xBFBA, - 20131 - 11905: 0x8187, - 20132 - 11905: 0xBDBB, - 20133 - 11905: 0xBAA5, - 20134 - 11905: 0xD2E0, - 20135 - 11905: 0xB2FA, - 20136 - 11905: 0xBAE0, - 20137 - 11905: 0xC4B6, - 20138 - 11905: 0x8188, - 20139 - 11905: 0xCFED, - 20140 - 11905: 0xBEA9, - 20141 - 11905: 0xCDA4, - 20142 - 11905: 0xC1C1, - 20143 - 11905: 0x8189, - 20144 - 11905: 0x818A, - 20145 - 11905: 0x818B, - 20146 - 11905: 0xC7D7, - 20147 - 11905: 0xD9F1, - 20148 - 11905: 0x818C, - 20149 - 11905: 0xD9F4, - 20150 - 11905: 0x818D, - 20151 - 11905: 0x818E, - 20152 - 11905: 0x818F, - 20153 - 11905: 0x8190, - 20154 - 11905: 0xC8CB, - 20155 - 11905: 0xD8E9, - 20156 - 11905: 0x8191, - 20157 - 11905: 0x8192, - 20158 - 11905: 0x8193, - 20159 - 11905: 0xD2DA, - 20160 - 11905: 0xCAB2, - 20161 - 11905: 0xC8CA, - 20162 - 11905: 0xD8EC, - 20163 - 11905: 0xD8EA, - 20164 - 11905: 0xD8C6, - 20165 - 11905: 0xBDF6, - 20166 - 11905: 0xC6CD, - 20167 - 11905: 0xB3F0, - 20168 - 11905: 0x8194, - 20169 - 11905: 0xD8EB, - 20170 - 11905: 0xBDF1, - 20171 - 11905: 0xBDE9, - 20172 - 11905: 0x8195, - 20173 - 11905: 0xC8D4, - 20174 - 11905: 0xB4D3, - 20175 - 11905: 0x8196, - 20176 - 11905: 0x8197, - 20177 - 11905: 0xC2D8, - 20178 - 11905: 0x8198, - 20179 - 11905: 0xB2D6, - 20180 - 11905: 0xD7D0, - 20181 - 11905: 0xCACB, - 20182 - 11905: 0xCBFB, - 20183 - 11905: 0xD5CC, - 20184 - 11905: 0xB8B6, - 20185 - 11905: 0xCFC9, - 20186 - 11905: 0x8199, - 20187 - 11905: 0x819A, - 20188 - 11905: 0x819B, - 20189 - 11905: 0xD9DA, - 20190 - 11905: 0xD8F0, - 20191 - 11905: 0xC7AA, - 20192 - 11905: 0x819C, - 20193 - 11905: 0xD8EE, - 20194 - 11905: 0x819D, - 20195 - 11905: 0xB4FA, - 20196 - 11905: 0xC1EE, - 20197 - 11905: 0xD2D4, - 20198 - 11905: 0x819E, - 20199 - 11905: 0x819F, - 20200 - 11905: 0xD8ED, - 20201 - 11905: 0x81A0, - 20202 - 11905: 0xD2C7, - 20203 - 11905: 0xD8EF, - 20204 - 11905: 0xC3C7, - 20205 - 11905: 0x81A1, - 20206 - 11905: 0x81A2, - 20207 - 11905: 0x81A3, - 20208 - 11905: 0xD1F6, - 20209 - 11905: 0x81A4, - 20210 - 11905: 0xD6D9, - 20211 - 11905: 0xD8F2, - 20212 - 11905: 0x81A5, - 20213 - 11905: 0xD8F5, - 20214 - 11905: 0xBCFE, - 20215 - 11905: 0xBCDB, - 20216 - 11905: 0x81A6, - 20217 - 11905: 0x81A7, - 20218 - 11905: 0x81A8, - 20219 - 11905: 0xC8CE, - 20220 - 11905: 0x81A9, - 20221 - 11905: 0xB7DD, - 20222 - 11905: 0x81AA, - 20223 - 11905: 0xB7C2, - 20224 - 11905: 0x81AB, - 20225 - 11905: 0xC6F3, - 20226 - 11905: 0x81AC, - 20227 - 11905: 0x81AD, - 20228 - 11905: 0x81AE, - 20229 - 11905: 0x81AF, - 20230 - 11905: 0x81B0, - 20231 - 11905: 0x81B1, - 20232 - 11905: 0x81B2, - 20233 - 11905: 0xD8F8, - 20234 - 11905: 0xD2C1, - 20235 - 11905: 0x81B3, - 20236 - 11905: 0x81B4, - 20237 - 11905: 0xCEE9, - 20238 - 11905: 0xBCBF, - 20239 - 11905: 0xB7FC, - 20240 - 11905: 0xB7A5, - 20241 - 11905: 0xD0DD, - 20242 - 11905: 0x81B5, - 20243 - 11905: 0x81B6, - 20244 - 11905: 0x81B7, - 20245 - 11905: 0x81B8, - 20246 - 11905: 0x81B9, - 20247 - 11905: 0xD6DA, - 20248 - 11905: 0xD3C5, - 20249 - 11905: 0xBBEF, - 20250 - 11905: 0xBBE1, - 20251 - 11905: 0xD8F1, - 20252 - 11905: 0x81BA, - 20253 - 11905: 0x81BB, - 20254 - 11905: 0xC9A1, - 20255 - 11905: 0xCEB0, - 20256 - 11905: 0xB4AB, - 20257 - 11905: 0x81BC, - 20258 - 11905: 0xD8F3, - 20259 - 11905: 0x81BD, - 20260 - 11905: 0xC9CB, - 20261 - 11905: 0xD8F6, - 20262 - 11905: 0xC2D7, - 20263 - 11905: 0xD8F7, - 20264 - 11905: 0x81BE, - 20265 - 11905: 0x81BF, - 20266 - 11905: 0xCEB1, - 20267 - 11905: 0xD8F9, - 20268 - 11905: 0x81C0, - 20269 - 11905: 0x81C1, - 20270 - 11905: 0x81C2, - 20271 - 11905: 0xB2AE, - 20272 - 11905: 0xB9C0, - 20273 - 11905: 0x81C3, - 20274 - 11905: 0xD9A3, - 20275 - 11905: 0x81C4, - 20276 - 11905: 0xB0E9, - 20277 - 11905: 0x81C5, - 20278 - 11905: 0xC1E6, - 20279 - 11905: 0x81C6, - 20280 - 11905: 0xC9EC, - 20281 - 11905: 0x81C7, - 20282 - 11905: 0xCBC5, - 20283 - 11905: 0x81C8, - 20284 - 11905: 0xCBC6, - 20285 - 11905: 0xD9A4, - 20286 - 11905: 0x81C9, - 20287 - 11905: 0x81CA, - 20288 - 11905: 0x81CB, - 20289 - 11905: 0x81CC, - 20290 - 11905: 0x81CD, - 20291 - 11905: 0xB5E8, - 20292 - 11905: 0x81CE, - 20293 - 11905: 0x81CF, - 20294 - 11905: 0xB5AB, - 20295 - 11905: 0x81D0, - 20296 - 11905: 0x81D1, - 20297 - 11905: 0x81D2, - 20298 - 11905: 0x81D3, - 20299 - 11905: 0x81D4, - 20300 - 11905: 0x81D5, - 20301 - 11905: 0xCEBB, - 20302 - 11905: 0xB5CD, - 20303 - 11905: 0xD7A1, - 20304 - 11905: 0xD7F4, - 20305 - 11905: 0xD3D3, - 20306 - 11905: 0x81D6, - 20307 - 11905: 0xCCE5, - 20308 - 11905: 0x81D7, - 20309 - 11905: 0xBACE, - 20310 - 11905: 0x81D8, - 20311 - 11905: 0xD9A2, - 20312 - 11905: 0xD9DC, - 20313 - 11905: 0xD3E0, - 20314 - 11905: 0xD8FD, - 20315 - 11905: 0xB7F0, - 20316 - 11905: 0xD7F7, - 20317 - 11905: 0xD8FE, - 20318 - 11905: 0xD8FA, - 20319 - 11905: 0xD9A1, - 20320 - 11905: 0xC4E3, - 20321 - 11905: 0x81D9, - 20322 - 11905: 0x81DA, - 20323 - 11905: 0xD3B6, - 20324 - 11905: 0xD8F4, - 20325 - 11905: 0xD9DD, - 20326 - 11905: 0x81DB, - 20327 - 11905: 0xD8FB, - 20328 - 11905: 0x81DC, - 20329 - 11905: 0xC5E5, - 20330 - 11905: 0x81DD, - 20331 - 11905: 0x81DE, - 20332 - 11905: 0xC0D0, - 20333 - 11905: 0x81DF, - 20334 - 11905: 0x81E0, - 20335 - 11905: 0xD1F0, - 20336 - 11905: 0xB0DB, - 20337 - 11905: 0x81E1, - 20338 - 11905: 0x81E2, - 20339 - 11905: 0xBCD1, - 20340 - 11905: 0xD9A6, - 20341 - 11905: 0x81E3, - 20342 - 11905: 0xD9A5, - 20343 - 11905: 0x81E4, - 20344 - 11905: 0x81E5, - 20345 - 11905: 0x81E6, - 20346 - 11905: 0x81E7, - 20347 - 11905: 0xD9AC, - 20348 - 11905: 0xD9AE, - 20349 - 11905: 0x81E8, - 20350 - 11905: 0xD9AB, - 20351 - 11905: 0xCAB9, - 20352 - 11905: 0x81E9, - 20353 - 11905: 0x81EA, - 20354 - 11905: 0x81EB, - 20355 - 11905: 0xD9A9, - 20356 - 11905: 0xD6B6, - 20357 - 11905: 0x81EC, - 20358 - 11905: 0x81ED, - 20359 - 11905: 0x81EE, - 20360 - 11905: 0xB3DE, - 20361 - 11905: 0xD9A8, - 20362 - 11905: 0x81EF, - 20363 - 11905: 0xC0FD, - 20364 - 11905: 0x81F0, - 20365 - 11905: 0xCACC, - 20366 - 11905: 0x81F1, - 20367 - 11905: 0xD9AA, - 20368 - 11905: 0x81F2, - 20369 - 11905: 0xD9A7, - 20370 - 11905: 0x81F3, - 20371 - 11905: 0x81F4, - 20372 - 11905: 0xD9B0, - 20373 - 11905: 0x81F5, - 20374 - 11905: 0x81F6, - 20375 - 11905: 0xB6B1, - 20376 - 11905: 0x81F7, - 20377 - 11905: 0x81F8, - 20378 - 11905: 0x81F9, - 20379 - 11905: 0xB9A9, - 20380 - 11905: 0x81FA, - 20381 - 11905: 0xD2C0, - 20382 - 11905: 0x81FB, - 20383 - 11905: 0x81FC, - 20384 - 11905: 0xCFC0, - 20385 - 11905: 0x81FD, - 20386 - 11905: 0x81FE, - 20387 - 11905: 0xC2C2, - 20388 - 11905: 0x8240, - 20389 - 11905: 0xBDC4, - 20390 - 11905: 0xD5EC, - 20391 - 11905: 0xB2E0, - 20392 - 11905: 0xC7C8, - 20393 - 11905: 0xBFEB, - 20394 - 11905: 0xD9AD, - 20395 - 11905: 0x8241, - 20396 - 11905: 0xD9AF, - 20397 - 11905: 0x8242, - 20398 - 11905: 0xCEEA, - 20399 - 11905: 0xBAEE, - 20400 - 11905: 0x8243, - 20401 - 11905: 0x8244, - 20402 - 11905: 0x8245, - 20403 - 11905: 0x8246, - 20404 - 11905: 0x8247, - 20405 - 11905: 0xC7D6, - 20406 - 11905: 0x8248, - 20407 - 11905: 0x8249, - 20408 - 11905: 0x824A, - 20409 - 11905: 0x824B, - 20410 - 11905: 0x824C, - 20411 - 11905: 0x824D, - 20412 - 11905: 0x824E, - 20413 - 11905: 0x824F, - 20414 - 11905: 0x8250, - 20415 - 11905: 0xB1E3, - 20416 - 11905: 0x8251, - 20417 - 11905: 0x8252, - 20418 - 11905: 0x8253, - 20419 - 11905: 0xB4D9, - 20420 - 11905: 0xB6ED, - 20421 - 11905: 0xD9B4, - 20422 - 11905: 0x8254, - 20423 - 11905: 0x8255, - 20424 - 11905: 0x8256, - 20425 - 11905: 0x8257, - 20426 - 11905: 0xBFA1, - 20427 - 11905: 0x8258, - 20428 - 11905: 0x8259, - 20429 - 11905: 0x825A, - 20430 - 11905: 0xD9DE, - 20431 - 11905: 0xC7CE, - 20432 - 11905: 0xC0FE, - 20433 - 11905: 0xD9B8, - 20434 - 11905: 0x825B, - 20435 - 11905: 0x825C, - 20436 - 11905: 0x825D, - 20437 - 11905: 0x825E, - 20438 - 11905: 0x825F, - 20439 - 11905: 0xCBD7, - 20440 - 11905: 0xB7FD, - 20441 - 11905: 0x8260, - 20442 - 11905: 0xD9B5, - 20443 - 11905: 0x8261, - 20444 - 11905: 0xD9B7, - 20445 - 11905: 0xB1A3, - 20446 - 11905: 0xD3E1, - 20447 - 11905: 0xD9B9, - 20448 - 11905: 0x8262, - 20449 - 11905: 0xD0C5, - 20450 - 11905: 0x8263, - 20451 - 11905: 0xD9B6, - 20452 - 11905: 0x8264, - 20453 - 11905: 0x8265, - 20454 - 11905: 0xD9B1, - 20455 - 11905: 0x8266, - 20456 - 11905: 0xD9B2, - 20457 - 11905: 0xC1A9, - 20458 - 11905: 0xD9B3, - 20459 - 11905: 0x8267, - 20460 - 11905: 0x8268, - 20461 - 11905: 0xBCF3, - 20462 - 11905: 0xD0DE, - 20463 - 11905: 0xB8A9, - 20464 - 11905: 0x8269, - 20465 - 11905: 0xBEE3, - 20466 - 11905: 0x826A, - 20467 - 11905: 0xD9BD, - 20468 - 11905: 0x826B, - 20469 - 11905: 0x826C, - 20470 - 11905: 0x826D, - 20471 - 11905: 0x826E, - 20472 - 11905: 0xD9BA, - 20473 - 11905: 0x826F, - 20474 - 11905: 0xB0B3, - 20475 - 11905: 0x8270, - 20476 - 11905: 0x8271, - 20477 - 11905: 0x8272, - 20478 - 11905: 0xD9C2, - 20479 - 11905: 0x8273, - 20480 - 11905: 0x8274, - 20481 - 11905: 0x8275, - 20482 - 11905: 0x8276, - 20483 - 11905: 0x8277, - 20484 - 11905: 0x8278, - 20485 - 11905: 0x8279, - 20486 - 11905: 0x827A, - 20487 - 11905: 0x827B, - 20488 - 11905: 0x827C, - 20489 - 11905: 0x827D, - 20490 - 11905: 0x827E, - 20491 - 11905: 0x8280, - 20492 - 11905: 0xD9C4, - 20493 - 11905: 0xB1B6, - 20494 - 11905: 0x8281, - 20495 - 11905: 0xD9BF, - 20496 - 11905: 0x8282, - 20497 - 11905: 0x8283, - 20498 - 11905: 0xB5B9, - 20499 - 11905: 0x8284, - 20500 - 11905: 0xBEF3, - 20501 - 11905: 0x8285, - 20502 - 11905: 0x8286, - 20503 - 11905: 0x8287, - 20504 - 11905: 0xCCC8, - 20505 - 11905: 0xBAF2, - 20506 - 11905: 0xD2D0, - 20507 - 11905: 0x8288, - 20508 - 11905: 0xD9C3, - 20509 - 11905: 0x8289, - 20510 - 11905: 0x828A, - 20511 - 11905: 0xBDE8, - 20512 - 11905: 0x828B, - 20513 - 11905: 0xB3AB, - 20514 - 11905: 0x828C, - 20515 - 11905: 0x828D, - 20516 - 11905: 0x828E, - 20517 - 11905: 0xD9C5, - 20518 - 11905: 0xBEEB, - 20519 - 11905: 0x828F, - 20520 - 11905: 0xD9C6, - 20521 - 11905: 0xD9BB, - 20522 - 11905: 0xC4DF, - 20523 - 11905: 0x8290, - 20524 - 11905: 0xD9BE, - 20525 - 11905: 0xD9C1, - 20526 - 11905: 0xD9C0, - 20527 - 11905: 0x8291, - 20528 - 11905: 0x8292, - 20529 - 11905: 0x8293, - 20530 - 11905: 0x8294, - 20531 - 11905: 0x8295, - 20532 - 11905: 0x8296, - 20533 - 11905: 0x8297, - 20534 - 11905: 0x8298, - 20535 - 11905: 0x8299, - 20536 - 11905: 0x829A, - 20537 - 11905: 0x829B, - 20538 - 11905: 0xD5AE, - 20539 - 11905: 0x829C, - 20540 - 11905: 0xD6B5, - 20541 - 11905: 0x829D, - 20542 - 11905: 0xC7E3, - 20543 - 11905: 0x829E, - 20544 - 11905: 0x829F, - 20545 - 11905: 0x82A0, - 20546 - 11905: 0x82A1, - 20547 - 11905: 0xD9C8, - 20548 - 11905: 0x82A2, - 20549 - 11905: 0x82A3, - 20550 - 11905: 0x82A4, - 20551 - 11905: 0xBCD9, - 20552 - 11905: 0xD9CA, - 20553 - 11905: 0x82A5, - 20554 - 11905: 0x82A6, - 20555 - 11905: 0x82A7, - 20556 - 11905: 0xD9BC, - 20557 - 11905: 0x82A8, - 20558 - 11905: 0xD9CB, - 20559 - 11905: 0xC6AB, - 20560 - 11905: 0x82A9, - 20561 - 11905: 0x82AA, - 20562 - 11905: 0x82AB, - 20563 - 11905: 0x82AC, - 20564 - 11905: 0x82AD, - 20565 - 11905: 0xD9C9, - 20566 - 11905: 0x82AE, - 20567 - 11905: 0x82AF, - 20568 - 11905: 0x82B0, - 20569 - 11905: 0x82B1, - 20570 - 11905: 0xD7F6, - 20571 - 11905: 0x82B2, - 20572 - 11905: 0xCDA3, - 20573 - 11905: 0x82B3, - 20574 - 11905: 0x82B4, - 20575 - 11905: 0x82B5, - 20576 - 11905: 0x82B6, - 20577 - 11905: 0x82B7, - 20578 - 11905: 0x82B8, - 20579 - 11905: 0x82B9, - 20580 - 11905: 0x82BA, - 20581 - 11905: 0xBDA1, - 20582 - 11905: 0x82BB, - 20583 - 11905: 0x82BC, - 20584 - 11905: 0x82BD, - 20585 - 11905: 0x82BE, - 20586 - 11905: 0x82BF, - 20587 - 11905: 0x82C0, - 20588 - 11905: 0xD9CC, - 20589 - 11905: 0x82C1, - 20590 - 11905: 0x82C2, - 20591 - 11905: 0x82C3, - 20592 - 11905: 0x82C4, - 20593 - 11905: 0x82C5, - 20594 - 11905: 0x82C6, - 20595 - 11905: 0x82C7, - 20596 - 11905: 0x82C8, - 20597 - 11905: 0x82C9, - 20598 - 11905: 0xC5BC, - 20599 - 11905: 0xCDB5, - 20600 - 11905: 0x82CA, - 20601 - 11905: 0x82CB, - 20602 - 11905: 0x82CC, - 20603 - 11905: 0xD9CD, - 20604 - 11905: 0x82CD, - 20605 - 11905: 0x82CE, - 20606 - 11905: 0xD9C7, - 20607 - 11905: 0xB3A5, - 20608 - 11905: 0xBFFE, - 20609 - 11905: 0x82CF, - 20610 - 11905: 0x82D0, - 20611 - 11905: 0x82D1, - 20612 - 11905: 0x82D2, - 20613 - 11905: 0xB8B5, - 20614 - 11905: 0x82D3, - 20615 - 11905: 0x82D4, - 20616 - 11905: 0xC0FC, - 20617 - 11905: 0x82D5, - 20618 - 11905: 0x82D6, - 20619 - 11905: 0x82D7, - 20620 - 11905: 0x82D8, - 20621 - 11905: 0xB0F8, - 20622 - 11905: 0x82D9, - 20623 - 11905: 0x82DA, - 20624 - 11905: 0x82DB, - 20625 - 11905: 0x82DC, - 20626 - 11905: 0x82DD, - 20627 - 11905: 0x82DE, - 20628 - 11905: 0x82DF, - 20629 - 11905: 0x82E0, - 20630 - 11905: 0x82E1, - 20631 - 11905: 0x82E2, - 20632 - 11905: 0x82E3, - 20633 - 11905: 0x82E4, - 20634 - 11905: 0x82E5, - 20635 - 11905: 0x82E6, - 20636 - 11905: 0x82E7, - 20637 - 11905: 0x82E8, - 20638 - 11905: 0x82E9, - 20639 - 11905: 0x82EA, - 20640 - 11905: 0x82EB, - 20641 - 11905: 0x82EC, - 20642 - 11905: 0x82ED, - 20643 - 11905: 0xB4F6, - 20644 - 11905: 0x82EE, - 20645 - 11905: 0xD9CE, - 20646 - 11905: 0x82EF, - 20647 - 11905: 0xD9CF, - 20648 - 11905: 0xB4A2, - 20649 - 11905: 0xD9D0, - 20650 - 11905: 0x82F0, - 20651 - 11905: 0x82F1, - 20652 - 11905: 0xB4DF, - 20653 - 11905: 0x82F2, - 20654 - 11905: 0x82F3, - 20655 - 11905: 0x82F4, - 20656 - 11905: 0x82F5, - 20657 - 11905: 0x82F6, - 20658 - 11905: 0xB0C1, - 20659 - 11905: 0x82F7, - 20660 - 11905: 0x82F8, - 20661 - 11905: 0x82F9, - 20662 - 11905: 0x82FA, - 20663 - 11905: 0x82FB, - 20664 - 11905: 0x82FC, - 20665 - 11905: 0x82FD, - 20666 - 11905: 0xD9D1, - 20667 - 11905: 0xC9B5, - 20668 - 11905: 0x82FE, - 20669 - 11905: 0x8340, - 20670 - 11905: 0x8341, - 20671 - 11905: 0x8342, - 20672 - 11905: 0x8343, - 20673 - 11905: 0x8344, - 20674 - 11905: 0x8345, - 20675 - 11905: 0x8346, - 20676 - 11905: 0x8347, - 20677 - 11905: 0x8348, - 20678 - 11905: 0x8349, - 20679 - 11905: 0x834A, - 20680 - 11905: 0x834B, - 20681 - 11905: 0x834C, - 20682 - 11905: 0x834D, - 20683 - 11905: 0x834E, - 20684 - 11905: 0x834F, - 20685 - 11905: 0x8350, - 20686 - 11905: 0x8351, - 20687 - 11905: 0xCFF1, - 20688 - 11905: 0x8352, - 20689 - 11905: 0x8353, - 20690 - 11905: 0x8354, - 20691 - 11905: 0x8355, - 20692 - 11905: 0x8356, - 20693 - 11905: 0x8357, - 20694 - 11905: 0xD9D2, - 20695 - 11905: 0x8358, - 20696 - 11905: 0x8359, - 20697 - 11905: 0x835A, - 20698 - 11905: 0xC1C5, - 20699 - 11905: 0x835B, - 20700 - 11905: 0x835C, - 20701 - 11905: 0x835D, - 20702 - 11905: 0x835E, - 20703 - 11905: 0x835F, - 20704 - 11905: 0x8360, - 20705 - 11905: 0x8361, - 20706 - 11905: 0x8362, - 20707 - 11905: 0x8363, - 20708 - 11905: 0x8364, - 20709 - 11905: 0x8365, - 20710 - 11905: 0xD9D6, - 20711 - 11905: 0xC9AE, - 20712 - 11905: 0x8366, - 20713 - 11905: 0x8367, - 20714 - 11905: 0x8368, - 20715 - 11905: 0x8369, - 20716 - 11905: 0xD9D5, - 20717 - 11905: 0xD9D4, - 20718 - 11905: 0xD9D7, - 20719 - 11905: 0x836A, - 20720 - 11905: 0x836B, - 20721 - 11905: 0x836C, - 20722 - 11905: 0x836D, - 20723 - 11905: 0xCBDB, - 20724 - 11905: 0x836E, - 20725 - 11905: 0xBDA9, - 20726 - 11905: 0x836F, - 20727 - 11905: 0x8370, - 20728 - 11905: 0x8371, - 20729 - 11905: 0x8372, - 20730 - 11905: 0x8373, - 20731 - 11905: 0xC6A7, - 20732 - 11905: 0x8374, - 20733 - 11905: 0x8375, - 20734 - 11905: 0x8376, - 20735 - 11905: 0x8377, - 20736 - 11905: 0x8378, - 20737 - 11905: 0x8379, - 20738 - 11905: 0x837A, - 20739 - 11905: 0x837B, - 20740 - 11905: 0x837C, - 20741 - 11905: 0x837D, - 20742 - 11905: 0xD9D3, - 20743 - 11905: 0xD9D8, - 20744 - 11905: 0x837E, - 20745 - 11905: 0x8380, - 20746 - 11905: 0x8381, - 20747 - 11905: 0xD9D9, - 20748 - 11905: 0x8382, - 20749 - 11905: 0x8383, - 20750 - 11905: 0x8384, - 20751 - 11905: 0x8385, - 20752 - 11905: 0x8386, - 20753 - 11905: 0x8387, - 20754 - 11905: 0xC8E5, - 20755 - 11905: 0x8388, - 20756 - 11905: 0x8389, - 20757 - 11905: 0x838A, - 20758 - 11905: 0x838B, - 20759 - 11905: 0x838C, - 20760 - 11905: 0x838D, - 20761 - 11905: 0x838E, - 20762 - 11905: 0x838F, - 20763 - 11905: 0x8390, - 20764 - 11905: 0x8391, - 20765 - 11905: 0x8392, - 20766 - 11905: 0x8393, - 20767 - 11905: 0x8394, - 20768 - 11905: 0x8395, - 20769 - 11905: 0xC0DC, - 20770 - 11905: 0x8396, - 20771 - 11905: 0x8397, - 20772 - 11905: 0x8398, - 20773 - 11905: 0x8399, - 20774 - 11905: 0x839A, - 20775 - 11905: 0x839B, - 20776 - 11905: 0x839C, - 20777 - 11905: 0x839D, - 20778 - 11905: 0x839E, - 20779 - 11905: 0x839F, - 20780 - 11905: 0x83A0, - 20781 - 11905: 0x83A1, - 20782 - 11905: 0x83A2, - 20783 - 11905: 0x83A3, - 20784 - 11905: 0x83A4, - 20785 - 11905: 0x83A5, - 20786 - 11905: 0x83A6, - 20787 - 11905: 0x83A7, - 20788 - 11905: 0x83A8, - 20789 - 11905: 0x83A9, - 20790 - 11905: 0x83AA, - 20791 - 11905: 0x83AB, - 20792 - 11905: 0x83AC, - 20793 - 11905: 0x83AD, - 20794 - 11905: 0x83AE, - 20795 - 11905: 0x83AF, - 20796 - 11905: 0x83B0, - 20797 - 11905: 0x83B1, - 20798 - 11905: 0x83B2, - 20799 - 11905: 0xB6F9, - 20800 - 11905: 0xD8A3, - 20801 - 11905: 0xD4CA, - 20802 - 11905: 0x83B3, - 20803 - 11905: 0xD4AA, - 20804 - 11905: 0xD0D6, - 20805 - 11905: 0xB3E4, - 20806 - 11905: 0xD5D7, - 20807 - 11905: 0x83B4, - 20808 - 11905: 0xCFC8, - 20809 - 11905: 0xB9E2, - 20810 - 11905: 0x83B5, - 20811 - 11905: 0xBFCB, - 20812 - 11905: 0x83B6, - 20813 - 11905: 0xC3E2, - 20814 - 11905: 0x83B7, - 20815 - 11905: 0x83B8, - 20816 - 11905: 0x83B9, - 20817 - 11905: 0xB6D2, - 20818 - 11905: 0x83BA, - 20819 - 11905: 0x83BB, - 20820 - 11905: 0xCDC3, - 20821 - 11905: 0xD9EE, - 20822 - 11905: 0xD9F0, - 20823 - 11905: 0x83BC, - 20824 - 11905: 0x83BD, - 20825 - 11905: 0x83BE, - 20826 - 11905: 0xB5B3, - 20827 - 11905: 0x83BF, - 20828 - 11905: 0xB6B5, - 20829 - 11905: 0x83C0, - 20830 - 11905: 0x83C1, - 20831 - 11905: 0x83C2, - 20832 - 11905: 0x83C3, - 20833 - 11905: 0x83C4, - 20834 - 11905: 0xBEA4, - 20835 - 11905: 0x83C5, - 20836 - 11905: 0x83C6, - 20837 - 11905: 0xC8EB, - 20838 - 11905: 0x83C7, - 20839 - 11905: 0x83C8, - 20840 - 11905: 0xC8AB, - 20841 - 11905: 0x83C9, - 20842 - 11905: 0x83CA, - 20843 - 11905: 0xB0CB, - 20844 - 11905: 0xB9AB, - 20845 - 11905: 0xC1F9, - 20846 - 11905: 0xD9E2, - 20847 - 11905: 0x83CB, - 20848 - 11905: 0xC0BC, - 20849 - 11905: 0xB9B2, - 20850 - 11905: 0x83CC, - 20851 - 11905: 0xB9D8, - 20852 - 11905: 0xD0CB, - 20853 - 11905: 0xB1F8, - 20854 - 11905: 0xC6E4, - 20855 - 11905: 0xBEDF, - 20856 - 11905: 0xB5E4, - 20857 - 11905: 0xD7C8, - 20858 - 11905: 0x83CD, - 20859 - 11905: 0xD1F8, - 20860 - 11905: 0xBCE6, - 20861 - 11905: 0xCADE, - 20862 - 11905: 0x83CE, - 20863 - 11905: 0x83CF, - 20864 - 11905: 0xBCBD, - 20865 - 11905: 0xD9E6, - 20866 - 11905: 0xD8E7, - 20867 - 11905: 0x83D0, - 20868 - 11905: 0x83D1, - 20869 - 11905: 0xC4DA, - 20870 - 11905: 0x83D2, - 20871 - 11905: 0x83D3, - 20872 - 11905: 0xB8D4, - 20873 - 11905: 0xC8BD, - 20874 - 11905: 0x83D4, - 20875 - 11905: 0x83D5, - 20876 - 11905: 0xB2E1, - 20877 - 11905: 0xD4D9, - 20878 - 11905: 0x83D6, - 20879 - 11905: 0x83D7, - 20880 - 11905: 0x83D8, - 20881 - 11905: 0x83D9, - 20882 - 11905: 0xC3B0, - 20883 - 11905: 0x83DA, - 20884 - 11905: 0x83DB, - 20885 - 11905: 0xC3E1, - 20886 - 11905: 0xDAA2, - 20887 - 11905: 0xC8DF, - 20888 - 11905: 0x83DC, - 20889 - 11905: 0xD0B4, - 20890 - 11905: 0x83DD, - 20891 - 11905: 0xBEFC, - 20892 - 11905: 0xC5A9, - 20893 - 11905: 0x83DE, - 20894 - 11905: 0x83DF, - 20895 - 11905: 0x83E0, - 20896 - 11905: 0xB9DA, - 20897 - 11905: 0x83E1, - 20898 - 11905: 0xDAA3, - 20899 - 11905: 0x83E2, - 20900 - 11905: 0xD4A9, - 20901 - 11905: 0xDAA4, - 20902 - 11905: 0x83E3, - 20903 - 11905: 0x83E4, - 20904 - 11905: 0x83E5, - 20905 - 11905: 0x83E6, - 20906 - 11905: 0x83E7, - 20907 - 11905: 0xD9FB, - 20908 - 11905: 0xB6AC, - 20909 - 11905: 0x83E8, - 20910 - 11905: 0x83E9, - 20911 - 11905: 0xB7EB, - 20912 - 11905: 0xB1F9, - 20913 - 11905: 0xD9FC, - 20914 - 11905: 0xB3E5, - 20915 - 11905: 0xBEF6, - 20916 - 11905: 0x83EA, - 20917 - 11905: 0xBFF6, - 20918 - 11905: 0xD2B1, - 20919 - 11905: 0xC0E4, - 20920 - 11905: 0x83EB, - 20921 - 11905: 0x83EC, - 20922 - 11905: 0x83ED, - 20923 - 11905: 0xB6B3, - 20924 - 11905: 0xD9FE, - 20925 - 11905: 0xD9FD, - 20926 - 11905: 0x83EE, - 20927 - 11905: 0x83EF, - 20928 - 11905: 0xBEBB, - 20929 - 11905: 0x83F0, - 20930 - 11905: 0x83F1, - 20931 - 11905: 0x83F2, - 20932 - 11905: 0xC6E0, - 20933 - 11905: 0x83F3, - 20934 - 11905: 0xD7BC, - 20935 - 11905: 0xDAA1, - 20936 - 11905: 0x83F4, - 20937 - 11905: 0xC1B9, - 20938 - 11905: 0x83F5, - 20939 - 11905: 0xB5F2, - 20940 - 11905: 0xC1E8, - 20941 - 11905: 0x83F6, - 20942 - 11905: 0x83F7, - 20943 - 11905: 0xBCF5, - 20944 - 11905: 0x83F8, - 20945 - 11905: 0xB4D5, - 20946 - 11905: 0x83F9, - 20947 - 11905: 0x83FA, - 20948 - 11905: 0x83FB, - 20949 - 11905: 0x83FC, - 20950 - 11905: 0x83FD, - 20951 - 11905: 0x83FE, - 20952 - 11905: 0x8440, - 20953 - 11905: 0x8441, - 20954 - 11905: 0x8442, - 20955 - 11905: 0xC1DD, - 20956 - 11905: 0x8443, - 20957 - 11905: 0xC4FD, - 20958 - 11905: 0x8444, - 20959 - 11905: 0x8445, - 20960 - 11905: 0xBCB8, - 20961 - 11905: 0xB7B2, - 20962 - 11905: 0x8446, - 20963 - 11905: 0x8447, - 20964 - 11905: 0xB7EF, - 20965 - 11905: 0x8448, - 20966 - 11905: 0x8449, - 20967 - 11905: 0x844A, - 20968 - 11905: 0x844B, - 20969 - 11905: 0x844C, - 20970 - 11905: 0x844D, - 20971 - 11905: 0xD9EC, - 20972 - 11905: 0x844E, - 20973 - 11905: 0xC6BE, - 20974 - 11905: 0x844F, - 20975 - 11905: 0xBFAD, - 20976 - 11905: 0xBBCB, - 20977 - 11905: 0x8450, - 20978 - 11905: 0x8451, - 20979 - 11905: 0xB5CA, - 20980 - 11905: 0x8452, - 20981 - 11905: 0xDBC9, - 20982 - 11905: 0xD0D7, - 20983 - 11905: 0x8453, - 20984 - 11905: 0xCDB9, - 20985 - 11905: 0xB0BC, - 20986 - 11905: 0xB3F6, - 20987 - 11905: 0xBBF7, - 20988 - 11905: 0xDBCA, - 20989 - 11905: 0xBAAF, - 20990 - 11905: 0x8454, - 20991 - 11905: 0xD4E4, - 20992 - 11905: 0xB5B6, - 20993 - 11905: 0xB5F3, - 20994 - 11905: 0xD8D6, - 20995 - 11905: 0xC8D0, - 20996 - 11905: 0x8455, - 20997 - 11905: 0x8456, - 20998 - 11905: 0xB7D6, - 20999 - 11905: 0xC7D0, - 21000 - 11905: 0xD8D7, - 21001 - 11905: 0x8457, - 21002 - 11905: 0xBFAF, - 21003 - 11905: 0x8458, - 21004 - 11905: 0x8459, - 21005 - 11905: 0xDBBB, - 21006 - 11905: 0xD8D8, - 21007 - 11905: 0x845A, - 21008 - 11905: 0x845B, - 21009 - 11905: 0xD0CC, - 21010 - 11905: 0xBBAE, - 21011 - 11905: 0x845C, - 21012 - 11905: 0x845D, - 21013 - 11905: 0x845E, - 21014 - 11905: 0xEBBE, - 21015 - 11905: 0xC1D0, - 21016 - 11905: 0xC1F5, - 21017 - 11905: 0xD4F2, - 21018 - 11905: 0xB8D5, - 21019 - 11905: 0xB4B4, - 21020 - 11905: 0x845F, - 21021 - 11905: 0xB3F5, - 21022 - 11905: 0x8460, - 21023 - 11905: 0x8461, - 21024 - 11905: 0xC9BE, - 21025 - 11905: 0x8462, - 21026 - 11905: 0x8463, - 21027 - 11905: 0x8464, - 21028 - 11905: 0xC5D0, - 21029 - 11905: 0x8465, - 21030 - 11905: 0x8466, - 21031 - 11905: 0x8467, - 21032 - 11905: 0xC5D9, - 21033 - 11905: 0xC0FB, - 21034 - 11905: 0x8468, - 21035 - 11905: 0xB1F0, - 21036 - 11905: 0x8469, - 21037 - 11905: 0xD8D9, - 21038 - 11905: 0xB9CE, - 21039 - 11905: 0x846A, - 21040 - 11905: 0xB5BD, - 21041 - 11905: 0x846B, - 21042 - 11905: 0x846C, - 21043 - 11905: 0xD8DA, - 21044 - 11905: 0x846D, - 21045 - 11905: 0x846E, - 21046 - 11905: 0xD6C6, - 21047 - 11905: 0xCBA2, - 21048 - 11905: 0xC8AF, - 21049 - 11905: 0xC9B2, - 21050 - 11905: 0xB4CC, - 21051 - 11905: 0xBFCC, - 21052 - 11905: 0x846F, - 21053 - 11905: 0xB9F4, - 21054 - 11905: 0x8470, - 21055 - 11905: 0xD8DB, - 21056 - 11905: 0xD8DC, - 21057 - 11905: 0xB6E7, - 21058 - 11905: 0xBCC1, - 21059 - 11905: 0xCCEA, - 21060 - 11905: 0x8471, - 21061 - 11905: 0x8472, - 21062 - 11905: 0x8473, - 21063 - 11905: 0x8474, - 21064 - 11905: 0x8475, - 21065 - 11905: 0x8476, - 21066 - 11905: 0xCFF7, - 21067 - 11905: 0x8477, - 21068 - 11905: 0xD8DD, - 21069 - 11905: 0xC7B0, - 21070 - 11905: 0x8478, - 21071 - 11905: 0x8479, - 21072 - 11905: 0xB9D0, - 21073 - 11905: 0xBDA3, - 21074 - 11905: 0x847A, - 21075 - 11905: 0x847B, - 21076 - 11905: 0xCCDE, - 21077 - 11905: 0x847C, - 21078 - 11905: 0xC6CA, - 21079 - 11905: 0x847D, - 21080 - 11905: 0x847E, - 21081 - 11905: 0x8480, - 21082 - 11905: 0x8481, - 21083 - 11905: 0x8482, - 21084 - 11905: 0xD8E0, - 21085 - 11905: 0x8483, - 21086 - 11905: 0xD8DE, - 21087 - 11905: 0x8484, - 21088 - 11905: 0x8485, - 21089 - 11905: 0xD8DF, - 21090 - 11905: 0x8486, - 21091 - 11905: 0x8487, - 21092 - 11905: 0x8488, - 21093 - 11905: 0xB0FE, - 21094 - 11905: 0x8489, - 21095 - 11905: 0xBEE7, - 21096 - 11905: 0x848A, - 21097 - 11905: 0xCAA3, - 21098 - 11905: 0xBCF4, - 21099 - 11905: 0x848B, - 21100 - 11905: 0x848C, - 21101 - 11905: 0x848D, - 21102 - 11905: 0x848E, - 21103 - 11905: 0xB8B1, - 21104 - 11905: 0x848F, - 21105 - 11905: 0x8490, - 21106 - 11905: 0xB8EE, - 21107 - 11905: 0x8491, - 21108 - 11905: 0x8492, - 21109 - 11905: 0x8493, - 21110 - 11905: 0x8494, - 21111 - 11905: 0x8495, - 21112 - 11905: 0x8496, - 21113 - 11905: 0x8497, - 21114 - 11905: 0x8498, - 21115 - 11905: 0x8499, - 21116 - 11905: 0x849A, - 21117 - 11905: 0xD8E2, - 21118 - 11905: 0x849B, - 21119 - 11905: 0xBDCB, - 21120 - 11905: 0x849C, - 21121 - 11905: 0xD8E4, - 21122 - 11905: 0xD8E3, - 21123 - 11905: 0x849D, - 21124 - 11905: 0x849E, - 21125 - 11905: 0x849F, - 21126 - 11905: 0x84A0, - 21127 - 11905: 0x84A1, - 21128 - 11905: 0xC5FC, - 21129 - 11905: 0x84A2, - 21130 - 11905: 0x84A3, - 21131 - 11905: 0x84A4, - 21132 - 11905: 0x84A5, - 21133 - 11905: 0x84A6, - 21134 - 11905: 0x84A7, - 21135 - 11905: 0x84A8, - 21136 - 11905: 0xD8E5, - 21137 - 11905: 0x84A9, - 21138 - 11905: 0x84AA, - 21139 - 11905: 0xD8E6, - 21140 - 11905: 0x84AB, - 21141 - 11905: 0x84AC, - 21142 - 11905: 0x84AD, - 21143 - 11905: 0x84AE, - 21144 - 11905: 0x84AF, - 21145 - 11905: 0x84B0, - 21146 - 11905: 0x84B1, - 21147 - 11905: 0xC1A6, - 21148 - 11905: 0x84B2, - 21149 - 11905: 0xC8B0, - 21150 - 11905: 0xB0EC, - 21151 - 11905: 0xB9A6, - 21152 - 11905: 0xBCD3, - 21153 - 11905: 0xCEF1, - 21154 - 11905: 0xDBBD, - 21155 - 11905: 0xC1D3, - 21156 - 11905: 0x84B3, - 21157 - 11905: 0x84B4, - 21158 - 11905: 0x84B5, - 21159 - 11905: 0x84B6, - 21160 - 11905: 0xB6AF, - 21161 - 11905: 0xD6FA, - 21162 - 11905: 0xC5AC, - 21163 - 11905: 0xBDD9, - 21164 - 11905: 0xDBBE, - 21165 - 11905: 0xDBBF, - 21166 - 11905: 0x84B7, - 21167 - 11905: 0x84B8, - 21168 - 11905: 0x84B9, - 21169 - 11905: 0xC0F8, - 21170 - 11905: 0xBEA2, - 21171 - 11905: 0xC0CD, - 21172 - 11905: 0x84BA, - 21173 - 11905: 0x84BB, - 21174 - 11905: 0x84BC, - 21175 - 11905: 0x84BD, - 21176 - 11905: 0x84BE, - 21177 - 11905: 0x84BF, - 21178 - 11905: 0x84C0, - 21179 - 11905: 0x84C1, - 21180 - 11905: 0x84C2, - 21181 - 11905: 0x84C3, - 21182 - 11905: 0xDBC0, - 21183 - 11905: 0xCAC6, - 21184 - 11905: 0x84C4, - 21185 - 11905: 0x84C5, - 21186 - 11905: 0x84C6, - 21187 - 11905: 0xB2AA, - 21188 - 11905: 0x84C7, - 21189 - 11905: 0x84C8, - 21190 - 11905: 0x84C9, - 21191 - 11905: 0xD3C2, - 21192 - 11905: 0x84CA, - 21193 - 11905: 0xC3E3, - 21194 - 11905: 0x84CB, - 21195 - 11905: 0xD1AB, - 21196 - 11905: 0x84CC, - 21197 - 11905: 0x84CD, - 21198 - 11905: 0x84CE, - 21199 - 11905: 0x84CF, - 21200 - 11905: 0xDBC2, - 21201 - 11905: 0x84D0, - 21202 - 11905: 0xC0D5, - 21203 - 11905: 0x84D1, - 21204 - 11905: 0x84D2, - 21205 - 11905: 0x84D3, - 21206 - 11905: 0xDBC3, - 21207 - 11905: 0x84D4, - 21208 - 11905: 0xBFB1, - 21209 - 11905: 0x84D5, - 21210 - 11905: 0x84D6, - 21211 - 11905: 0x84D7, - 21212 - 11905: 0x84D8, - 21213 - 11905: 0x84D9, - 21214 - 11905: 0x84DA, - 21215 - 11905: 0xC4BC, - 21216 - 11905: 0x84DB, - 21217 - 11905: 0x84DC, - 21218 - 11905: 0x84DD, - 21219 - 11905: 0x84DE, - 21220 - 11905: 0xC7DA, - 21221 - 11905: 0x84DF, - 21222 - 11905: 0x84E0, - 21223 - 11905: 0x84E1, - 21224 - 11905: 0x84E2, - 21225 - 11905: 0x84E3, - 21226 - 11905: 0x84E4, - 21227 - 11905: 0x84E5, - 21228 - 11905: 0x84E6, - 21229 - 11905: 0x84E7, - 21230 - 11905: 0x84E8, - 21231 - 11905: 0x84E9, - 21232 - 11905: 0xDBC4, - 21233 - 11905: 0x84EA, - 21234 - 11905: 0x84EB, - 21235 - 11905: 0x84EC, - 21236 - 11905: 0x84ED, - 21237 - 11905: 0x84EE, - 21238 - 11905: 0x84EF, - 21239 - 11905: 0x84F0, - 21240 - 11905: 0x84F1, - 21241 - 11905: 0xD9E8, - 21242 - 11905: 0xC9D7, - 21243 - 11905: 0x84F2, - 21244 - 11905: 0x84F3, - 21245 - 11905: 0x84F4, - 21246 - 11905: 0xB9B4, - 21247 - 11905: 0xCEF0, - 21248 - 11905: 0xD4C8, - 21249 - 11905: 0x84F5, - 21250 - 11905: 0x84F6, - 21251 - 11905: 0x84F7, - 21252 - 11905: 0x84F8, - 21253 - 11905: 0xB0FC, - 21254 - 11905: 0xB4D2, - 21255 - 11905: 0x84F9, - 21256 - 11905: 0xD0D9, - 21257 - 11905: 0x84FA, - 21258 - 11905: 0x84FB, - 21259 - 11905: 0x84FC, - 21260 - 11905: 0x84FD, - 21261 - 11905: 0xD9E9, - 21262 - 11905: 0x84FE, - 21263 - 11905: 0xDECB, - 21264 - 11905: 0xD9EB, - 21265 - 11905: 0x8540, - 21266 - 11905: 0x8541, - 21267 - 11905: 0x8542, - 21268 - 11905: 0x8543, - 21269 - 11905: 0xD8B0, - 21270 - 11905: 0xBBAF, - 21271 - 11905: 0xB1B1, - 21272 - 11905: 0x8544, - 21273 - 11905: 0xB3D7, - 21274 - 11905: 0xD8CE, - 21275 - 11905: 0x8545, - 21276 - 11905: 0x8546, - 21277 - 11905: 0xD4D1, - 21278 - 11905: 0x8547, - 21279 - 11905: 0x8548, - 21280 - 11905: 0xBDB3, - 21281 - 11905: 0xBFEF, - 21282 - 11905: 0x8549, - 21283 - 11905: 0xCFBB, - 21284 - 11905: 0x854A, - 21285 - 11905: 0x854B, - 21286 - 11905: 0xD8D0, - 21287 - 11905: 0x854C, - 21288 - 11905: 0x854D, - 21289 - 11905: 0x854E, - 21290 - 11905: 0xB7CB, - 21291 - 11905: 0x854F, - 21292 - 11905: 0x8550, - 21293 - 11905: 0x8551, - 21294 - 11905: 0xD8D1, - 21295 - 11905: 0x8552, - 21296 - 11905: 0x8553, - 21297 - 11905: 0x8554, - 21298 - 11905: 0x8555, - 21299 - 11905: 0x8556, - 21300 - 11905: 0x8557, - 21301 - 11905: 0x8558, - 21302 - 11905: 0x8559, - 21303 - 11905: 0x855A, - 21304 - 11905: 0x855B, - 21305 - 11905: 0xC6A5, - 21306 - 11905: 0xC7F8, - 21307 - 11905: 0xD2BD, - 21308 - 11905: 0x855C, - 21309 - 11905: 0x855D, - 21310 - 11905: 0xD8D2, - 21311 - 11905: 0xC4E4, - 21312 - 11905: 0x855E, - 21313 - 11905: 0xCAAE, - 21314 - 11905: 0x855F, - 21315 - 11905: 0xC7A7, - 21316 - 11905: 0x8560, - 21317 - 11905: 0xD8A6, - 21318 - 11905: 0x8561, - 21319 - 11905: 0xC9FD, - 21320 - 11905: 0xCEE7, - 21321 - 11905: 0xBBDC, - 21322 - 11905: 0xB0EB, - 21323 - 11905: 0x8562, - 21324 - 11905: 0x8563, - 21325 - 11905: 0x8564, - 21326 - 11905: 0xBBAA, - 21327 - 11905: 0xD0AD, - 21328 - 11905: 0x8565, - 21329 - 11905: 0xB1B0, - 21330 - 11905: 0xD7E4, - 21331 - 11905: 0xD7BF, - 21332 - 11905: 0x8566, - 21333 - 11905: 0xB5A5, - 21334 - 11905: 0xC2F4, - 21335 - 11905: 0xC4CF, - 21336 - 11905: 0x8567, - 21337 - 11905: 0x8568, - 21338 - 11905: 0xB2A9, - 21339 - 11905: 0x8569, - 21340 - 11905: 0xB2B7, - 21341 - 11905: 0x856A, - 21342 - 11905: 0xB1E5, - 21343 - 11905: 0xDFB2, - 21344 - 11905: 0xD5BC, - 21345 - 11905: 0xBFA8, - 21346 - 11905: 0xC2AC, - 21347 - 11905: 0xD8D5, - 21348 - 11905: 0xC2B1, - 21349 - 11905: 0x856B, - 21350 - 11905: 0xD8D4, - 21351 - 11905: 0xCED4, - 21352 - 11905: 0x856C, - 21353 - 11905: 0xDAE0, - 21354 - 11905: 0x856D, - 21355 - 11905: 0xCEC0, - 21356 - 11905: 0x856E, - 21357 - 11905: 0x856F, - 21358 - 11905: 0xD8B4, - 21359 - 11905: 0xC3AE, - 21360 - 11905: 0xD3A1, - 21361 - 11905: 0xCEA3, - 21362 - 11905: 0x8570, - 21363 - 11905: 0xBCB4, - 21364 - 11905: 0xC8B4, - 21365 - 11905: 0xC2D1, - 21366 - 11905: 0x8571, - 21367 - 11905: 0xBEED, - 21368 - 11905: 0xD0B6, - 21369 - 11905: 0x8572, - 21370 - 11905: 0xDAE1, - 21371 - 11905: 0x8573, - 21372 - 11905: 0x8574, - 21373 - 11905: 0x8575, - 21374 - 11905: 0x8576, - 21375 - 11905: 0xC7E4, - 21376 - 11905: 0x8577, - 21377 - 11905: 0x8578, - 21378 - 11905: 0xB3A7, - 21379 - 11905: 0x8579, - 21380 - 11905: 0xB6F2, - 21381 - 11905: 0xCCFC, - 21382 - 11905: 0xC0FA, - 21383 - 11905: 0x857A, - 21384 - 11905: 0x857B, - 21385 - 11905: 0xC0F7, - 21386 - 11905: 0x857C, - 21387 - 11905: 0xD1B9, - 21388 - 11905: 0xD1E1, - 21389 - 11905: 0xD8C7, - 21390 - 11905: 0x857D, - 21391 - 11905: 0x857E, - 21392 - 11905: 0x8580, - 21393 - 11905: 0x8581, - 21394 - 11905: 0x8582, - 21395 - 11905: 0x8583, - 21396 - 11905: 0x8584, - 21397 - 11905: 0xB2DE, - 21398 - 11905: 0x8585, - 21399 - 11905: 0x8586, - 21400 - 11905: 0xC0E5, - 21401 - 11905: 0x8587, - 21402 - 11905: 0xBAF1, - 21403 - 11905: 0x8588, - 21404 - 11905: 0x8589, - 21405 - 11905: 0xD8C8, - 21406 - 11905: 0x858A, - 21407 - 11905: 0xD4AD, - 21408 - 11905: 0x858B, - 21409 - 11905: 0x858C, - 21410 - 11905: 0xCFE1, - 21411 - 11905: 0xD8C9, - 21412 - 11905: 0x858D, - 21413 - 11905: 0xD8CA, - 21414 - 11905: 0xCFC3, - 21415 - 11905: 0x858E, - 21416 - 11905: 0xB3F8, - 21417 - 11905: 0xBEC7, - 21418 - 11905: 0x858F, - 21419 - 11905: 0x8590, - 21420 - 11905: 0x8591, - 21421 - 11905: 0x8592, - 21422 - 11905: 0xD8CB, - 21423 - 11905: 0x8593, - 21424 - 11905: 0x8594, - 21425 - 11905: 0x8595, - 21426 - 11905: 0x8596, - 21427 - 11905: 0x8597, - 21428 - 11905: 0x8598, - 21429 - 11905: 0x8599, - 21430 - 11905: 0xDBCC, - 21431 - 11905: 0x859A, - 21432 - 11905: 0x859B, - 21433 - 11905: 0x859C, - 21434 - 11905: 0x859D, - 21435 - 11905: 0xC8A5, - 21436 - 11905: 0x859E, - 21437 - 11905: 0x859F, - 21438 - 11905: 0x85A0, - 21439 - 11905: 0xCFD8, - 21440 - 11905: 0x85A1, - 21441 - 11905: 0xC8FE, - 21442 - 11905: 0xB2CE, - 21443 - 11905: 0x85A2, - 21444 - 11905: 0x85A3, - 21445 - 11905: 0x85A4, - 21446 - 11905: 0x85A5, - 21447 - 11905: 0x85A6, - 21448 - 11905: 0xD3D6, - 21449 - 11905: 0xB2E6, - 21450 - 11905: 0xBCB0, - 21451 - 11905: 0xD3D1, - 21452 - 11905: 0xCBAB, - 21453 - 11905: 0xB7B4, - 21454 - 11905: 0x85A7, - 21455 - 11905: 0x85A8, - 21456 - 11905: 0x85A9, - 21457 - 11905: 0xB7A2, - 21458 - 11905: 0x85AA, - 21459 - 11905: 0x85AB, - 21460 - 11905: 0xCAE5, - 21461 - 11905: 0x85AC, - 21462 - 11905: 0xC8A1, - 21463 - 11905: 0xCADC, - 21464 - 11905: 0xB1E4, - 21465 - 11905: 0xD0F0, - 21466 - 11905: 0x85AD, - 21467 - 11905: 0xC5D1, - 21468 - 11905: 0x85AE, - 21469 - 11905: 0x85AF, - 21470 - 11905: 0x85B0, - 21471 - 11905: 0xDBC5, - 21472 - 11905: 0xB5FE, - 21473 - 11905: 0x85B1, - 21474 - 11905: 0x85B2, - 21475 - 11905: 0xBFDA, - 21476 - 11905: 0xB9C5, - 21477 - 11905: 0xBEE4, - 21478 - 11905: 0xC1ED, - 21479 - 11905: 0x85B3, - 21480 - 11905: 0xDFB6, - 21481 - 11905: 0xDFB5, - 21482 - 11905: 0xD6BB, - 21483 - 11905: 0xBDD0, - 21484 - 11905: 0xD5D9, - 21485 - 11905: 0xB0C8, - 21486 - 11905: 0xB6A3, - 21487 - 11905: 0xBFC9, - 21488 - 11905: 0xCCA8, - 21489 - 11905: 0xDFB3, - 21490 - 11905: 0xCAB7, - 21491 - 11905: 0xD3D2, - 21492 - 11905: 0x85B4, - 21493 - 11905: 0xD8CF, - 21494 - 11905: 0xD2B6, - 21495 - 11905: 0xBAC5, - 21496 - 11905: 0xCBBE, - 21497 - 11905: 0xCCBE, - 21498 - 11905: 0x85B5, - 21499 - 11905: 0xDFB7, - 21500 - 11905: 0xB5F0, - 21501 - 11905: 0xDFB4, - 21502 - 11905: 0x85B6, - 21503 - 11905: 0x85B7, - 21504 - 11905: 0x85B8, - 21505 - 11905: 0xD3F5, - 21506 - 11905: 0x85B9, - 21507 - 11905: 0xB3D4, - 21508 - 11905: 0xB8F7, - 21509 - 11905: 0x85BA, - 21510 - 11905: 0xDFBA, - 21511 - 11905: 0x85BB, - 21512 - 11905: 0xBACF, - 21513 - 11905: 0xBCAA, - 21514 - 11905: 0xB5F5, - 21515 - 11905: 0x85BC, - 21516 - 11905: 0xCDAC, - 21517 - 11905: 0xC3FB, - 21518 - 11905: 0xBAF3, - 21519 - 11905: 0xC0F4, - 21520 - 11905: 0xCDC2, - 21521 - 11905: 0xCFF2, - 21522 - 11905: 0xDFB8, - 21523 - 11905: 0xCFC5, - 21524 - 11905: 0x85BD, - 21525 - 11905: 0xC2C0, - 21526 - 11905: 0xDFB9, - 21527 - 11905: 0xC2F0, - 21528 - 11905: 0x85BE, - 21529 - 11905: 0x85BF, - 21530 - 11905: 0x85C0, - 21531 - 11905: 0xBEFD, - 21532 - 11905: 0x85C1, - 21533 - 11905: 0xC1DF, - 21534 - 11905: 0xCDCC, - 21535 - 11905: 0xD2F7, - 21536 - 11905: 0xB7CD, - 21537 - 11905: 0xDFC1, - 21538 - 11905: 0x85C2, - 21539 - 11905: 0xDFC4, - 21540 - 11905: 0x85C3, - 21541 - 11905: 0x85C4, - 21542 - 11905: 0xB7F1, - 21543 - 11905: 0xB0C9, - 21544 - 11905: 0xB6D6, - 21545 - 11905: 0xB7D4, - 21546 - 11905: 0x85C5, - 21547 - 11905: 0xBAAC, - 21548 - 11905: 0xCCFD, - 21549 - 11905: 0xBFD4, - 21550 - 11905: 0xCBB1, - 21551 - 11905: 0xC6F4, - 21552 - 11905: 0x85C6, - 21553 - 11905: 0xD6A8, - 21554 - 11905: 0xDFC5, - 21555 - 11905: 0x85C7, - 21556 - 11905: 0xCEE2, - 21557 - 11905: 0xB3B3, - 21558 - 11905: 0x85C8, - 21559 - 11905: 0x85C9, - 21560 - 11905: 0xCEFC, - 21561 - 11905: 0xB4B5, - 21562 - 11905: 0x85CA, - 21563 - 11905: 0xCEC7, - 21564 - 11905: 0xBAF0, - 21565 - 11905: 0x85CB, - 21566 - 11905: 0xCEE1, - 21567 - 11905: 0x85CC, - 21568 - 11905: 0xD1BD, - 21569 - 11905: 0x85CD, - 21570 - 11905: 0x85CE, - 21571 - 11905: 0xDFC0, - 21572 - 11905: 0x85CF, - 21573 - 11905: 0x85D0, - 21574 - 11905: 0xB4F4, - 21575 - 11905: 0x85D1, - 21576 - 11905: 0xB3CA, - 21577 - 11905: 0x85D2, - 21578 - 11905: 0xB8E6, - 21579 - 11905: 0xDFBB, - 21580 - 11905: 0x85D3, - 21581 - 11905: 0x85D4, - 21582 - 11905: 0x85D5, - 21583 - 11905: 0x85D6, - 21584 - 11905: 0xC4C5, - 21585 - 11905: 0x85D7, - 21586 - 11905: 0xDFBC, - 21587 - 11905: 0xDFBD, - 21588 - 11905: 0xDFBE, - 21589 - 11905: 0xC5BB, - 21590 - 11905: 0xDFBF, - 21591 - 11905: 0xDFC2, - 21592 - 11905: 0xD4B1, - 21593 - 11905: 0xDFC3, - 21594 - 11905: 0x85D8, - 21595 - 11905: 0xC7BA, - 21596 - 11905: 0xCED8, - 21597 - 11905: 0x85D9, - 21598 - 11905: 0x85DA, - 21599 - 11905: 0x85DB, - 21600 - 11905: 0x85DC, - 21601 - 11905: 0x85DD, - 21602 - 11905: 0xC4D8, - 21603 - 11905: 0x85DE, - 21604 - 11905: 0xDFCA, - 21605 - 11905: 0x85DF, - 21606 - 11905: 0xDFCF, - 21607 - 11905: 0x85E0, - 21608 - 11905: 0xD6DC, - 21609 - 11905: 0x85E1, - 21610 - 11905: 0x85E2, - 21611 - 11905: 0x85E3, - 21612 - 11905: 0x85E4, - 21613 - 11905: 0x85E5, - 21614 - 11905: 0x85E6, - 21615 - 11905: 0x85E7, - 21616 - 11905: 0x85E8, - 21617 - 11905: 0xDFC9, - 21618 - 11905: 0xDFDA, - 21619 - 11905: 0xCEB6, - 21620 - 11905: 0x85E9, - 21621 - 11905: 0xBAC7, - 21622 - 11905: 0xDFCE, - 21623 - 11905: 0xDFC8, - 21624 - 11905: 0xC5DE, - 21625 - 11905: 0x85EA, - 21626 - 11905: 0x85EB, - 21627 - 11905: 0xC9EB, - 21628 - 11905: 0xBAF4, - 21629 - 11905: 0xC3FC, - 21630 - 11905: 0x85EC, - 21631 - 11905: 0x85ED, - 21632 - 11905: 0xBED7, - 21633 - 11905: 0x85EE, - 21634 - 11905: 0xDFC6, - 21635 - 11905: 0x85EF, - 21636 - 11905: 0xDFCD, - 21637 - 11905: 0x85F0, - 21638 - 11905: 0xC5D8, - 21639 - 11905: 0x85F1, - 21640 - 11905: 0x85F2, - 21641 - 11905: 0x85F3, - 21642 - 11905: 0x85F4, - 21643 - 11905: 0xD5A6, - 21644 - 11905: 0xBACD, - 21645 - 11905: 0x85F5, - 21646 - 11905: 0xBECC, - 21647 - 11905: 0xD3BD, - 21648 - 11905: 0xB8C0, - 21649 - 11905: 0x85F6, - 21650 - 11905: 0xD6E4, - 21651 - 11905: 0x85F7, - 21652 - 11905: 0xDFC7, - 21653 - 11905: 0xB9BE, - 21654 - 11905: 0xBFA7, - 21655 - 11905: 0x85F8, - 21656 - 11905: 0x85F9, - 21657 - 11905: 0xC1FC, - 21658 - 11905: 0xDFCB, - 21659 - 11905: 0xDFCC, - 21660 - 11905: 0x85FA, - 21661 - 11905: 0xDFD0, - 21662 - 11905: 0x85FB, - 21663 - 11905: 0x85FC, - 21664 - 11905: 0x85FD, - 21665 - 11905: 0x85FE, - 21666 - 11905: 0x8640, - 21667 - 11905: 0xDFDB, - 21668 - 11905: 0xDFE5, - 21669 - 11905: 0x8641, - 21670 - 11905: 0xDFD7, - 21671 - 11905: 0xDFD6, - 21672 - 11905: 0xD7C9, - 21673 - 11905: 0xDFE3, - 21674 - 11905: 0xDFE4, - 21675 - 11905: 0xE5EB, - 21676 - 11905: 0xD2A7, - 21677 - 11905: 0xDFD2, - 21678 - 11905: 0x8642, - 21679 - 11905: 0xBFA9, - 21680 - 11905: 0x8643, - 21681 - 11905: 0xD4DB, - 21682 - 11905: 0x8644, - 21683 - 11905: 0xBFC8, - 21684 - 11905: 0xDFD4, - 21685 - 11905: 0x8645, - 21686 - 11905: 0x8646, - 21687 - 11905: 0x8647, - 21688 - 11905: 0xCFCC, - 21689 - 11905: 0x8648, - 21690 - 11905: 0x8649, - 21691 - 11905: 0xDFDD, - 21692 - 11905: 0x864A, - 21693 - 11905: 0xD1CA, - 21694 - 11905: 0x864B, - 21695 - 11905: 0xDFDE, - 21696 - 11905: 0xB0A7, - 21697 - 11905: 0xC6B7, - 21698 - 11905: 0xDFD3, - 21699 - 11905: 0x864C, - 21700 - 11905: 0xBAE5, - 21701 - 11905: 0x864D, - 21702 - 11905: 0xB6DF, - 21703 - 11905: 0xCDDB, - 21704 - 11905: 0xB9FE, - 21705 - 11905: 0xD4D5, - 21706 - 11905: 0x864E, - 21707 - 11905: 0x864F, - 21708 - 11905: 0xDFDF, - 21709 - 11905: 0xCFEC, - 21710 - 11905: 0xB0A5, - 21711 - 11905: 0xDFE7, - 21712 - 11905: 0xDFD1, - 21713 - 11905: 0xD1C6, - 21714 - 11905: 0xDFD5, - 21715 - 11905: 0xDFD8, - 21716 - 11905: 0xDFD9, - 21717 - 11905: 0xDFDC, - 21718 - 11905: 0x8650, - 21719 - 11905: 0xBBA9, - 21720 - 11905: 0x8651, - 21721 - 11905: 0xDFE0, - 21722 - 11905: 0xDFE1, - 21723 - 11905: 0x8652, - 21724 - 11905: 0xDFE2, - 21725 - 11905: 0xDFE6, - 21726 - 11905: 0xDFE8, - 21727 - 11905: 0xD3B4, - 21728 - 11905: 0x8653, - 21729 - 11905: 0x8654, - 21730 - 11905: 0x8655, - 21731 - 11905: 0x8656, - 21732 - 11905: 0x8657, - 21733 - 11905: 0xB8E7, - 21734 - 11905: 0xC5B6, - 21735 - 11905: 0xDFEA, - 21736 - 11905: 0xC9DA, - 21737 - 11905: 0xC1A8, - 21738 - 11905: 0xC4C4, - 21739 - 11905: 0x8658, - 21740 - 11905: 0x8659, - 21741 - 11905: 0xBFDE, - 21742 - 11905: 0xCFF8, - 21743 - 11905: 0x865A, - 21744 - 11905: 0x865B, - 21745 - 11905: 0x865C, - 21746 - 11905: 0xD5DC, - 21747 - 11905: 0xDFEE, - 21748 - 11905: 0x865D, - 21749 - 11905: 0x865E, - 21750 - 11905: 0x865F, - 21751 - 11905: 0x8660, - 21752 - 11905: 0x8661, - 21753 - 11905: 0x8662, - 21754 - 11905: 0xB2B8, - 21755 - 11905: 0x8663, - 21756 - 11905: 0xBADF, - 21757 - 11905: 0xDFEC, - 21758 - 11905: 0x8664, - 21759 - 11905: 0xDBC1, - 21760 - 11905: 0x8665, - 21761 - 11905: 0xD1E4, - 21762 - 11905: 0x8666, - 21763 - 11905: 0x8667, - 21764 - 11905: 0x8668, - 21765 - 11905: 0x8669, - 21766 - 11905: 0xCBF4, - 21767 - 11905: 0xB4BD, - 21768 - 11905: 0x866A, - 21769 - 11905: 0xB0A6, - 21770 - 11905: 0x866B, - 21771 - 11905: 0x866C, - 21772 - 11905: 0x866D, - 21773 - 11905: 0x866E, - 21774 - 11905: 0x866F, - 21775 - 11905: 0xDFF1, - 21776 - 11905: 0xCCC6, - 21777 - 11905: 0xDFF2, - 21778 - 11905: 0x8670, - 21779 - 11905: 0x8671, - 21780 - 11905: 0xDFED, - 21781 - 11905: 0x8672, - 21782 - 11905: 0x8673, - 21783 - 11905: 0x8674, - 21784 - 11905: 0x8675, - 21785 - 11905: 0x8676, - 21786 - 11905: 0x8677, - 21787 - 11905: 0xDFE9, - 21788 - 11905: 0x8678, - 21789 - 11905: 0x8679, - 21790 - 11905: 0x867A, - 21791 - 11905: 0x867B, - 21792 - 11905: 0xDFEB, - 21793 - 11905: 0x867C, - 21794 - 11905: 0xDFEF, - 21795 - 11905: 0xDFF0, - 21796 - 11905: 0xBBBD, - 21797 - 11905: 0x867D, - 21798 - 11905: 0x867E, - 21799 - 11905: 0xDFF3, - 21800 - 11905: 0x8680, - 21801 - 11905: 0x8681, - 21802 - 11905: 0xDFF4, - 21803 - 11905: 0x8682, - 21804 - 11905: 0xBBA3, - 21805 - 11905: 0x8683, - 21806 - 11905: 0xCADB, - 21807 - 11905: 0xCEA8, - 21808 - 11905: 0xE0A7, - 21809 - 11905: 0xB3AA, - 21810 - 11905: 0x8684, - 21811 - 11905: 0xE0A6, - 21812 - 11905: 0x8685, - 21813 - 11905: 0x8686, - 21814 - 11905: 0x8687, - 21815 - 11905: 0xE0A1, - 21816 - 11905: 0x8688, - 21817 - 11905: 0x8689, - 21818 - 11905: 0x868A, - 21819 - 11905: 0x868B, - 21820 - 11905: 0xDFFE, - 21821 - 11905: 0x868C, - 21822 - 11905: 0xCDD9, - 21823 - 11905: 0xDFFC, - 21824 - 11905: 0x868D, - 21825 - 11905: 0xDFFA, - 21826 - 11905: 0x868E, - 21827 - 11905: 0xBFD0, - 21828 - 11905: 0xD7C4, - 21829 - 11905: 0x868F, - 21830 - 11905: 0xC9CC, - 21831 - 11905: 0x8690, - 21832 - 11905: 0x8691, - 21833 - 11905: 0xDFF8, - 21834 - 11905: 0xB0A1, - 21835 - 11905: 0x8692, - 21836 - 11905: 0x8693, - 21837 - 11905: 0x8694, - 21838 - 11905: 0x8695, - 21839 - 11905: 0x8696, - 21840 - 11905: 0xDFFD, - 21841 - 11905: 0x8697, - 21842 - 11905: 0x8698, - 21843 - 11905: 0x8699, - 21844 - 11905: 0x869A, - 21845 - 11905: 0xDFFB, - 21846 - 11905: 0xE0A2, - 21847 - 11905: 0x869B, - 21848 - 11905: 0x869C, - 21849 - 11905: 0x869D, - 21850 - 11905: 0x869E, - 21851 - 11905: 0x869F, - 21852 - 11905: 0xE0A8, - 21853 - 11905: 0x86A0, - 21854 - 11905: 0x86A1, - 21855 - 11905: 0x86A2, - 21856 - 11905: 0x86A3, - 21857 - 11905: 0xB7C8, - 21858 - 11905: 0x86A4, - 21859 - 11905: 0x86A5, - 21860 - 11905: 0xC6A1, - 21861 - 11905: 0xC9B6, - 21862 - 11905: 0xC0B2, - 21863 - 11905: 0xDFF5, - 21864 - 11905: 0x86A6, - 21865 - 11905: 0x86A7, - 21866 - 11905: 0xC5BE, - 21867 - 11905: 0x86A8, - 21868 - 11905: 0xD8C4, - 21869 - 11905: 0xDFF9, - 21870 - 11905: 0xC4F6, - 21871 - 11905: 0x86A9, - 21872 - 11905: 0x86AA, - 21873 - 11905: 0x86AB, - 21874 - 11905: 0x86AC, - 21875 - 11905: 0x86AD, - 21876 - 11905: 0x86AE, - 21877 - 11905: 0xE0A3, - 21878 - 11905: 0xE0A4, - 21879 - 11905: 0xE0A5, - 21880 - 11905: 0xD0A5, - 21881 - 11905: 0x86AF, - 21882 - 11905: 0x86B0, - 21883 - 11905: 0xE0B4, - 21884 - 11905: 0xCCE4, - 21885 - 11905: 0x86B1, - 21886 - 11905: 0xE0B1, - 21887 - 11905: 0x86B2, - 21888 - 11905: 0xBFA6, - 21889 - 11905: 0xE0AF, - 21890 - 11905: 0xCEB9, - 21891 - 11905: 0xE0AB, - 21892 - 11905: 0xC9C6, - 21893 - 11905: 0x86B3, - 21894 - 11905: 0x86B4, - 21895 - 11905: 0xC0AE, - 21896 - 11905: 0xE0AE, - 21897 - 11905: 0xBAED, - 21898 - 11905: 0xBAB0, - 21899 - 11905: 0xE0A9, - 21900 - 11905: 0x86B5, - 21901 - 11905: 0x86B6, - 21902 - 11905: 0x86B7, - 21903 - 11905: 0xDFF6, - 21904 - 11905: 0x86B8, - 21905 - 11905: 0xE0B3, - 21906 - 11905: 0x86B9, - 21907 - 11905: 0x86BA, - 21908 - 11905: 0xE0B8, - 21909 - 11905: 0x86BB, - 21910 - 11905: 0x86BC, - 21911 - 11905: 0x86BD, - 21912 - 11905: 0xB4AD, - 21913 - 11905: 0xE0B9, - 21914 - 11905: 0x86BE, - 21915 - 11905: 0x86BF, - 21916 - 11905: 0xCFB2, - 21917 - 11905: 0xBAC8, - 21918 - 11905: 0x86C0, - 21919 - 11905: 0xE0B0, - 21920 - 11905: 0x86C1, - 21921 - 11905: 0x86C2, - 21922 - 11905: 0x86C3, - 21923 - 11905: 0x86C4, - 21924 - 11905: 0x86C5, - 21925 - 11905: 0x86C6, - 21926 - 11905: 0x86C7, - 21927 - 11905: 0xD0FA, - 21928 - 11905: 0x86C8, - 21929 - 11905: 0x86C9, - 21930 - 11905: 0x86CA, - 21931 - 11905: 0x86CB, - 21932 - 11905: 0x86CC, - 21933 - 11905: 0x86CD, - 21934 - 11905: 0x86CE, - 21935 - 11905: 0x86CF, - 21936 - 11905: 0x86D0, - 21937 - 11905: 0xE0AC, - 21938 - 11905: 0x86D1, - 21939 - 11905: 0xD4FB, - 21940 - 11905: 0x86D2, - 21941 - 11905: 0xDFF7, - 21942 - 11905: 0x86D3, - 21943 - 11905: 0xC5E7, - 21944 - 11905: 0x86D4, - 21945 - 11905: 0xE0AD, - 21946 - 11905: 0x86D5, - 21947 - 11905: 0xD3F7, - 21948 - 11905: 0x86D6, - 21949 - 11905: 0xE0B6, - 21950 - 11905: 0xE0B7, - 21951 - 11905: 0x86D7, - 21952 - 11905: 0x86D8, - 21953 - 11905: 0x86D9, - 21954 - 11905: 0x86DA, - 21955 - 11905: 0x86DB, - 21956 - 11905: 0xE0C4, - 21957 - 11905: 0xD0E1, - 21958 - 11905: 0x86DC, - 21959 - 11905: 0x86DD, - 21960 - 11905: 0x86DE, - 21961 - 11905: 0xE0BC, - 21962 - 11905: 0x86DF, - 21963 - 11905: 0x86E0, - 21964 - 11905: 0xE0C9, - 21965 - 11905: 0xE0CA, - 21966 - 11905: 0x86E1, - 21967 - 11905: 0x86E2, - 21968 - 11905: 0x86E3, - 21969 - 11905: 0xE0BE, - 21970 - 11905: 0xE0AA, - 21971 - 11905: 0xC9A4, - 21972 - 11905: 0xE0C1, - 21973 - 11905: 0x86E4, - 21974 - 11905: 0xE0B2, - 21975 - 11905: 0x86E5, - 21976 - 11905: 0x86E6, - 21977 - 11905: 0x86E7, - 21978 - 11905: 0x86E8, - 21979 - 11905: 0x86E9, - 21980 - 11905: 0xCAC8, - 21981 - 11905: 0xE0C3, - 21982 - 11905: 0x86EA, - 21983 - 11905: 0xE0B5, - 21984 - 11905: 0x86EB, - 21985 - 11905: 0xCECB, - 21986 - 11905: 0x86EC, - 21987 - 11905: 0xCBC3, - 21988 - 11905: 0xE0CD, - 21989 - 11905: 0xE0C6, - 21990 - 11905: 0xE0C2, - 21991 - 11905: 0x86ED, - 21992 - 11905: 0xE0CB, - 21993 - 11905: 0x86EE, - 21994 - 11905: 0xE0BA, - 21995 - 11905: 0xE0BF, - 21996 - 11905: 0xE0C0, - 21997 - 11905: 0x86EF, - 21998 - 11905: 0x86F0, - 21999 - 11905: 0xE0C5, - 22000 - 11905: 0x86F1, - 22001 - 11905: 0x86F2, - 22002 - 11905: 0xE0C7, - 22003 - 11905: 0xE0C8, - 22004 - 11905: 0x86F3, - 22005 - 11905: 0xE0CC, - 22006 - 11905: 0x86F4, - 22007 - 11905: 0xE0BB, - 22008 - 11905: 0x86F5, - 22009 - 11905: 0x86F6, - 22010 - 11905: 0x86F7, - 22011 - 11905: 0x86F8, - 22012 - 11905: 0x86F9, - 22013 - 11905: 0xCBD4, - 22014 - 11905: 0xE0D5, - 22015 - 11905: 0x86FA, - 22016 - 11905: 0xE0D6, - 22017 - 11905: 0xE0D2, - 22018 - 11905: 0x86FB, - 22019 - 11905: 0x86FC, - 22020 - 11905: 0x86FD, - 22021 - 11905: 0x86FE, - 22022 - 11905: 0x8740, - 22023 - 11905: 0x8741, - 22024 - 11905: 0xE0D0, - 22025 - 11905: 0xBCCE, - 22026 - 11905: 0x8742, - 22027 - 11905: 0x8743, - 22028 - 11905: 0xE0D1, - 22029 - 11905: 0x8744, - 22030 - 11905: 0xB8C2, - 22031 - 11905: 0xD8C5, - 22032 - 11905: 0x8745, - 22033 - 11905: 0x8746, - 22034 - 11905: 0x8747, - 22035 - 11905: 0x8748, - 22036 - 11905: 0x8749, - 22037 - 11905: 0x874A, - 22038 - 11905: 0x874B, - 22039 - 11905: 0x874C, - 22040 - 11905: 0xD0EA, - 22041 - 11905: 0x874D, - 22042 - 11905: 0x874E, - 22043 - 11905: 0xC2EF, - 22044 - 11905: 0x874F, - 22045 - 11905: 0x8750, - 22046 - 11905: 0xE0CF, - 22047 - 11905: 0xE0BD, - 22048 - 11905: 0x8751, - 22049 - 11905: 0x8752, - 22050 - 11905: 0x8753, - 22051 - 11905: 0xE0D4, - 22052 - 11905: 0xE0D3, - 22053 - 11905: 0x8754, - 22054 - 11905: 0x8755, - 22055 - 11905: 0xE0D7, - 22056 - 11905: 0x8756, - 22057 - 11905: 0x8757, - 22058 - 11905: 0x8758, - 22059 - 11905: 0x8759, - 22060 - 11905: 0xE0DC, - 22061 - 11905: 0xE0D8, - 22062 - 11905: 0x875A, - 22063 - 11905: 0x875B, - 22064 - 11905: 0x875C, - 22065 - 11905: 0xD6F6, - 22066 - 11905: 0xB3B0, - 22067 - 11905: 0x875D, - 22068 - 11905: 0xD7EC, - 22069 - 11905: 0x875E, - 22070 - 11905: 0xCBBB, - 22071 - 11905: 0x875F, - 22072 - 11905: 0x8760, - 22073 - 11905: 0xE0DA, - 22074 - 11905: 0x8761, - 22075 - 11905: 0xCEFB, - 22076 - 11905: 0x8762, - 22077 - 11905: 0x8763, - 22078 - 11905: 0x8764, - 22079 - 11905: 0xBAD9, - 22080 - 11905: 0x8765, - 22081 - 11905: 0x8766, - 22082 - 11905: 0x8767, - 22083 - 11905: 0x8768, - 22084 - 11905: 0x8769, - 22085 - 11905: 0x876A, - 22086 - 11905: 0x876B, - 22087 - 11905: 0x876C, - 22088 - 11905: 0x876D, - 22089 - 11905: 0x876E, - 22090 - 11905: 0x876F, - 22091 - 11905: 0x8770, - 22092 - 11905: 0xE0E1, - 22093 - 11905: 0xE0DD, - 22094 - 11905: 0xD2AD, - 22095 - 11905: 0x8771, - 22096 - 11905: 0x8772, - 22097 - 11905: 0x8773, - 22098 - 11905: 0x8774, - 22099 - 11905: 0x8775, - 22100 - 11905: 0xE0E2, - 22101 - 11905: 0x8776, - 22102 - 11905: 0x8777, - 22103 - 11905: 0xE0DB, - 22104 - 11905: 0xE0D9, - 22105 - 11905: 0xE0DF, - 22106 - 11905: 0x8778, - 22107 - 11905: 0x8779, - 22108 - 11905: 0xE0E0, - 22109 - 11905: 0x877A, - 22110 - 11905: 0x877B, - 22111 - 11905: 0x877C, - 22112 - 11905: 0x877D, - 22113 - 11905: 0x877E, - 22114 - 11905: 0xE0DE, - 22115 - 11905: 0x8780, - 22116 - 11905: 0xE0E4, - 22117 - 11905: 0x8781, - 22118 - 11905: 0x8782, - 22119 - 11905: 0x8783, - 22120 - 11905: 0xC6F7, - 22121 - 11905: 0xD8AC, - 22122 - 11905: 0xD4EB, - 22123 - 11905: 0xE0E6, - 22124 - 11905: 0xCAC9, - 22125 - 11905: 0x8784, - 22126 - 11905: 0x8785, - 22127 - 11905: 0x8786, - 22128 - 11905: 0x8787, - 22129 - 11905: 0xE0E5, - 22130 - 11905: 0x8788, - 22131 - 11905: 0x8789, - 22132 - 11905: 0x878A, - 22133 - 11905: 0x878B, - 22134 - 11905: 0xB8C1, - 22135 - 11905: 0x878C, - 22136 - 11905: 0x878D, - 22137 - 11905: 0x878E, - 22138 - 11905: 0x878F, - 22139 - 11905: 0xE0E7, - 22140 - 11905: 0xE0E8, - 22141 - 11905: 0x8790, - 22142 - 11905: 0x8791, - 22143 - 11905: 0x8792, - 22144 - 11905: 0x8793, - 22145 - 11905: 0x8794, - 22146 - 11905: 0x8795, - 22147 - 11905: 0x8796, - 22148 - 11905: 0x8797, - 22149 - 11905: 0xE0E9, - 22150 - 11905: 0xE0E3, - 22151 - 11905: 0x8798, - 22152 - 11905: 0x8799, - 22153 - 11905: 0x879A, - 22154 - 11905: 0x879B, - 22155 - 11905: 0x879C, - 22156 - 11905: 0x879D, - 22157 - 11905: 0x879E, - 22158 - 11905: 0xBABF, - 22159 - 11905: 0xCCE7, - 22160 - 11905: 0x879F, - 22161 - 11905: 0x87A0, - 22162 - 11905: 0x87A1, - 22163 - 11905: 0xE0EA, - 22164 - 11905: 0x87A2, - 22165 - 11905: 0x87A3, - 22166 - 11905: 0x87A4, - 22167 - 11905: 0x87A5, - 22168 - 11905: 0x87A6, - 22169 - 11905: 0x87A7, - 22170 - 11905: 0x87A8, - 22171 - 11905: 0x87A9, - 22172 - 11905: 0x87AA, - 22173 - 11905: 0x87AB, - 22174 - 11905: 0x87AC, - 22175 - 11905: 0x87AD, - 22176 - 11905: 0x87AE, - 22177 - 11905: 0x87AF, - 22178 - 11905: 0x87B0, - 22179 - 11905: 0xCFF9, - 22180 - 11905: 0x87B1, - 22181 - 11905: 0x87B2, - 22182 - 11905: 0x87B3, - 22183 - 11905: 0x87B4, - 22184 - 11905: 0x87B5, - 22185 - 11905: 0x87B6, - 22186 - 11905: 0x87B7, - 22187 - 11905: 0x87B8, - 22188 - 11905: 0x87B9, - 22189 - 11905: 0x87BA, - 22190 - 11905: 0x87BB, - 22191 - 11905: 0xE0EB, - 22192 - 11905: 0x87BC, - 22193 - 11905: 0x87BD, - 22194 - 11905: 0x87BE, - 22195 - 11905: 0x87BF, - 22196 - 11905: 0x87C0, - 22197 - 11905: 0x87C1, - 22198 - 11905: 0x87C2, - 22199 - 11905: 0xC8C2, - 22200 - 11905: 0x87C3, - 22201 - 11905: 0x87C4, - 22202 - 11905: 0x87C5, - 22203 - 11905: 0x87C6, - 22204 - 11905: 0xBDC0, - 22205 - 11905: 0x87C7, - 22206 - 11905: 0x87C8, - 22207 - 11905: 0x87C9, - 22208 - 11905: 0x87CA, - 22209 - 11905: 0x87CB, - 22210 - 11905: 0x87CC, - 22211 - 11905: 0x87CD, - 22212 - 11905: 0x87CE, - 22213 - 11905: 0x87CF, - 22214 - 11905: 0x87D0, - 22215 - 11905: 0x87D1, - 22216 - 11905: 0x87D2, - 22217 - 11905: 0x87D3, - 22218 - 11905: 0xC4D2, - 22219 - 11905: 0x87D4, - 22220 - 11905: 0x87D5, - 22221 - 11905: 0x87D6, - 22222 - 11905: 0x87D7, - 22223 - 11905: 0x87D8, - 22224 - 11905: 0x87D9, - 22225 - 11905: 0x87DA, - 22226 - 11905: 0x87DB, - 22227 - 11905: 0x87DC, - 22228 - 11905: 0xE0EC, - 22229 - 11905: 0x87DD, - 22230 - 11905: 0x87DE, - 22231 - 11905: 0xE0ED, - 22232 - 11905: 0x87DF, - 22233 - 11905: 0x87E0, - 22234 - 11905: 0xC7F4, - 22235 - 11905: 0xCBC4, - 22236 - 11905: 0x87E1, - 22237 - 11905: 0xE0EE, - 22238 - 11905: 0xBBD8, - 22239 - 11905: 0xD8B6, - 22240 - 11905: 0xD2F2, - 22241 - 11905: 0xE0EF, - 22242 - 11905: 0xCDC5, - 22243 - 11905: 0x87E2, - 22244 - 11905: 0xB6DA, - 22245 - 11905: 0x87E3, - 22246 - 11905: 0x87E4, - 22247 - 11905: 0x87E5, - 22248 - 11905: 0x87E6, - 22249 - 11905: 0x87E7, - 22250 - 11905: 0x87E8, - 22251 - 11905: 0xE0F1, - 22252 - 11905: 0x87E9, - 22253 - 11905: 0xD4B0, - 22254 - 11905: 0x87EA, - 22255 - 11905: 0x87EB, - 22256 - 11905: 0xC0A7, - 22257 - 11905: 0xB4D1, - 22258 - 11905: 0x87EC, - 22259 - 11905: 0x87ED, - 22260 - 11905: 0xCEA7, - 22261 - 11905: 0xE0F0, - 22262 - 11905: 0x87EE, - 22263 - 11905: 0x87EF, - 22264 - 11905: 0x87F0, - 22265 - 11905: 0xE0F2, - 22266 - 11905: 0xB9CC, - 22267 - 11905: 0x87F1, - 22268 - 11905: 0x87F2, - 22269 - 11905: 0xB9FA, - 22270 - 11905: 0xCDBC, - 22271 - 11905: 0xE0F3, - 22272 - 11905: 0x87F3, - 22273 - 11905: 0x87F4, - 22274 - 11905: 0x87F5, - 22275 - 11905: 0xC6D4, - 22276 - 11905: 0xE0F4, - 22277 - 11905: 0x87F6, - 22278 - 11905: 0xD4B2, - 22279 - 11905: 0x87F7, - 22280 - 11905: 0xC8A6, - 22281 - 11905: 0xE0F6, - 22282 - 11905: 0xE0F5, - 22283 - 11905: 0x87F8, - 22284 - 11905: 0x87F9, - 22285 - 11905: 0x87FA, - 22286 - 11905: 0x87FB, - 22287 - 11905: 0x87FC, - 22288 - 11905: 0x87FD, - 22289 - 11905: 0x87FE, - 22290 - 11905: 0x8840, - 22291 - 11905: 0x8841, - 22292 - 11905: 0x8842, - 22293 - 11905: 0x8843, - 22294 - 11905: 0x8844, - 22295 - 11905: 0x8845, - 22296 - 11905: 0x8846, - 22297 - 11905: 0x8847, - 22298 - 11905: 0x8848, - 22299 - 11905: 0x8849, - 22300 - 11905: 0xE0F7, - 22301 - 11905: 0x884A, - 22302 - 11905: 0x884B, - 22303 - 11905: 0xCDC1, - 22304 - 11905: 0x884C, - 22305 - 11905: 0x884D, - 22306 - 11905: 0x884E, - 22307 - 11905: 0xCAA5, - 22308 - 11905: 0x884F, - 22309 - 11905: 0x8850, - 22310 - 11905: 0x8851, - 22311 - 11905: 0x8852, - 22312 - 11905: 0xD4DA, - 22313 - 11905: 0xDBD7, - 22314 - 11905: 0xDBD9, - 22315 - 11905: 0x8853, - 22316 - 11905: 0xDBD8, - 22317 - 11905: 0xB9E7, - 22318 - 11905: 0xDBDC, - 22319 - 11905: 0xDBDD, - 22320 - 11905: 0xB5D8, - 22321 - 11905: 0x8854, - 22322 - 11905: 0x8855, - 22323 - 11905: 0xDBDA, - 22324 - 11905: 0x8856, - 22325 - 11905: 0x8857, - 22326 - 11905: 0x8858, - 22327 - 11905: 0x8859, - 22328 - 11905: 0x885A, - 22329 - 11905: 0xDBDB, - 22330 - 11905: 0xB3A1, - 22331 - 11905: 0xDBDF, - 22332 - 11905: 0x885B, - 22333 - 11905: 0x885C, - 22334 - 11905: 0xBBF8, - 22335 - 11905: 0x885D, - 22336 - 11905: 0xD6B7, - 22337 - 11905: 0x885E, - 22338 - 11905: 0xDBE0, - 22339 - 11905: 0x885F, - 22340 - 11905: 0x8860, - 22341 - 11905: 0x8861, - 22342 - 11905: 0x8862, - 22343 - 11905: 0xBEF9, - 22344 - 11905: 0x8863, - 22345 - 11905: 0x8864, - 22346 - 11905: 0xB7BB, - 22347 - 11905: 0x8865, - 22348 - 11905: 0xDBD0, - 22349 - 11905: 0xCCAE, - 22350 - 11905: 0xBFB2, - 22351 - 11905: 0xBBB5, - 22352 - 11905: 0xD7F8, - 22353 - 11905: 0xBFD3, - 22354 - 11905: 0x8866, - 22355 - 11905: 0x8867, - 22356 - 11905: 0x8868, - 22357 - 11905: 0x8869, - 22358 - 11905: 0x886A, - 22359 - 11905: 0xBFE9, - 22360 - 11905: 0x886B, - 22361 - 11905: 0x886C, - 22362 - 11905: 0xBCE1, - 22363 - 11905: 0xCCB3, - 22364 - 11905: 0xDBDE, - 22365 - 11905: 0xB0D3, - 22366 - 11905: 0xCEEB, - 22367 - 11905: 0xB7D8, - 22368 - 11905: 0xD7B9, - 22369 - 11905: 0xC6C2, - 22370 - 11905: 0x886D, - 22371 - 11905: 0x886E, - 22372 - 11905: 0xC0A4, - 22373 - 11905: 0x886F, - 22374 - 11905: 0xCCB9, - 22375 - 11905: 0x8870, - 22376 - 11905: 0xDBE7, - 22377 - 11905: 0xDBE1, - 22378 - 11905: 0xC6BA, - 22379 - 11905: 0xDBE3, - 22380 - 11905: 0x8871, - 22381 - 11905: 0xDBE8, - 22382 - 11905: 0x8872, - 22383 - 11905: 0xC5F7, - 22384 - 11905: 0x8873, - 22385 - 11905: 0x8874, - 22386 - 11905: 0x8875, - 22387 - 11905: 0xDBEA, - 22388 - 11905: 0x8876, - 22389 - 11905: 0x8877, - 22390 - 11905: 0xDBE9, - 22391 - 11905: 0xBFC0, - 22392 - 11905: 0x8878, - 22393 - 11905: 0x8879, - 22394 - 11905: 0x887A, - 22395 - 11905: 0xDBE6, - 22396 - 11905: 0xDBE5, - 22397 - 11905: 0x887B, - 22398 - 11905: 0x887C, - 22399 - 11905: 0x887D, - 22400 - 11905: 0x887E, - 22401 - 11905: 0x8880, - 22402 - 11905: 0xB4B9, - 22403 - 11905: 0xC0AC, - 22404 - 11905: 0xC2A2, - 22405 - 11905: 0xDBE2, - 22406 - 11905: 0xDBE4, - 22407 - 11905: 0x8881, - 22408 - 11905: 0x8882, - 22409 - 11905: 0x8883, - 22410 - 11905: 0x8884, - 22411 - 11905: 0xD0CD, - 22412 - 11905: 0xDBED, - 22413 - 11905: 0x8885, - 22414 - 11905: 0x8886, - 22415 - 11905: 0x8887, - 22416 - 11905: 0x8888, - 22417 - 11905: 0x8889, - 22418 - 11905: 0xC0DD, - 22419 - 11905: 0xDBF2, - 22420 - 11905: 0x888A, - 22421 - 11905: 0x888B, - 22422 - 11905: 0x888C, - 22423 - 11905: 0x888D, - 22424 - 11905: 0x888E, - 22425 - 11905: 0x888F, - 22426 - 11905: 0x8890, - 22427 - 11905: 0xB6E2, - 22428 - 11905: 0x8891, - 22429 - 11905: 0x8892, - 22430 - 11905: 0x8893, - 22431 - 11905: 0x8894, - 22432 - 11905: 0xDBF3, - 22433 - 11905: 0xDBD2, - 22434 - 11905: 0xB9B8, - 22435 - 11905: 0xD4AB, - 22436 - 11905: 0xDBEC, - 22437 - 11905: 0x8895, - 22438 - 11905: 0xBFD1, - 22439 - 11905: 0xDBF0, - 22440 - 11905: 0x8896, - 22441 - 11905: 0xDBD1, - 22442 - 11905: 0x8897, - 22443 - 11905: 0xB5E6, - 22444 - 11905: 0x8898, - 22445 - 11905: 0xDBEB, - 22446 - 11905: 0xBFE5, - 22447 - 11905: 0x8899, - 22448 - 11905: 0x889A, - 22449 - 11905: 0x889B, - 22450 - 11905: 0xDBEE, - 22451 - 11905: 0x889C, - 22452 - 11905: 0xDBF1, - 22453 - 11905: 0x889D, - 22454 - 11905: 0x889E, - 22455 - 11905: 0x889F, - 22456 - 11905: 0xDBF9, - 22457 - 11905: 0x88A0, - 22458 - 11905: 0x88A1, - 22459 - 11905: 0x88A2, - 22460 - 11905: 0x88A3, - 22461 - 11905: 0x88A4, - 22462 - 11905: 0x88A5, - 22463 - 11905: 0x88A6, - 22464 - 11905: 0x88A7, - 22465 - 11905: 0x88A8, - 22466 - 11905: 0xB9A1, - 22467 - 11905: 0xB0A3, - 22468 - 11905: 0x88A9, - 22469 - 11905: 0x88AA, - 22470 - 11905: 0x88AB, - 22471 - 11905: 0x88AC, - 22472 - 11905: 0x88AD, - 22473 - 11905: 0x88AE, - 22474 - 11905: 0x88AF, - 22475 - 11905: 0xC2F1, - 22476 - 11905: 0x88B0, - 22477 - 11905: 0x88B1, - 22478 - 11905: 0xB3C7, - 22479 - 11905: 0xDBEF, - 22480 - 11905: 0x88B2, - 22481 - 11905: 0x88B3, - 22482 - 11905: 0xDBF8, - 22483 - 11905: 0x88B4, - 22484 - 11905: 0xC6D2, - 22485 - 11905: 0xDBF4, - 22486 - 11905: 0x88B5, - 22487 - 11905: 0x88B6, - 22488 - 11905: 0xDBF5, - 22489 - 11905: 0xDBF7, - 22490 - 11905: 0xDBF6, - 22491 - 11905: 0x88B7, - 22492 - 11905: 0x88B8, - 22493 - 11905: 0xDBFE, - 22494 - 11905: 0x88B9, - 22495 - 11905: 0xD3F2, - 22496 - 11905: 0xB2BA, - 22497 - 11905: 0x88BA, - 22498 - 11905: 0x88BB, - 22499 - 11905: 0x88BC, - 22500 - 11905: 0xDBFD, - 22501 - 11905: 0x88BD, - 22502 - 11905: 0x88BE, - 22503 - 11905: 0x88BF, - 22504 - 11905: 0x88C0, - 22505 - 11905: 0x88C1, - 22506 - 11905: 0x88C2, - 22507 - 11905: 0x88C3, - 22508 - 11905: 0x88C4, - 22509 - 11905: 0xDCA4, - 22510 - 11905: 0x88C5, - 22511 - 11905: 0xDBFB, - 22512 - 11905: 0x88C6, - 22513 - 11905: 0x88C7, - 22514 - 11905: 0x88C8, - 22515 - 11905: 0x88C9, - 22516 - 11905: 0xDBFA, - 22517 - 11905: 0x88CA, - 22518 - 11905: 0x88CB, - 22519 - 11905: 0x88CC, - 22520 - 11905: 0xDBFC, - 22521 - 11905: 0xC5E0, - 22522 - 11905: 0xBBF9, - 22523 - 11905: 0x88CD, - 22524 - 11905: 0x88CE, - 22525 - 11905: 0xDCA3, - 22526 - 11905: 0x88CF, - 22527 - 11905: 0x88D0, - 22528 - 11905: 0xDCA5, - 22529 - 11905: 0x88D1, - 22530 - 11905: 0xCCC3, - 22531 - 11905: 0x88D2, - 22532 - 11905: 0x88D3, - 22533 - 11905: 0x88D4, - 22534 - 11905: 0xB6D1, - 22535 - 11905: 0xDDC0, - 22536 - 11905: 0x88D5, - 22537 - 11905: 0x88D6, - 22538 - 11905: 0x88D7, - 22539 - 11905: 0xDCA1, - 22540 - 11905: 0x88D8, - 22541 - 11905: 0xDCA2, - 22542 - 11905: 0x88D9, - 22543 - 11905: 0x88DA, - 22544 - 11905: 0x88DB, - 22545 - 11905: 0xC7B5, - 22546 - 11905: 0x88DC, - 22547 - 11905: 0x88DD, - 22548 - 11905: 0x88DE, - 22549 - 11905: 0xB6E9, - 22550 - 11905: 0x88DF, - 22551 - 11905: 0x88E0, - 22552 - 11905: 0x88E1, - 22553 - 11905: 0xDCA7, - 22554 - 11905: 0x88E2, - 22555 - 11905: 0x88E3, - 22556 - 11905: 0x88E4, - 22557 - 11905: 0x88E5, - 22558 - 11905: 0xDCA6, - 22559 - 11905: 0x88E6, - 22560 - 11905: 0xDCA9, - 22561 - 11905: 0xB1A4, - 22562 - 11905: 0x88E7, - 22563 - 11905: 0x88E8, - 22564 - 11905: 0xB5CC, - 22565 - 11905: 0x88E9, - 22566 - 11905: 0x88EA, - 22567 - 11905: 0x88EB, - 22568 - 11905: 0x88EC, - 22569 - 11905: 0x88ED, - 22570 - 11905: 0xBFB0, - 22571 - 11905: 0x88EE, - 22572 - 11905: 0x88EF, - 22573 - 11905: 0x88F0, - 22574 - 11905: 0x88F1, - 22575 - 11905: 0x88F2, - 22576 - 11905: 0xD1DF, - 22577 - 11905: 0x88F3, - 22578 - 11905: 0x88F4, - 22579 - 11905: 0x88F5, - 22580 - 11905: 0x88F6, - 22581 - 11905: 0xB6C2, - 22582 - 11905: 0x88F7, - 22583 - 11905: 0x88F8, - 22584 - 11905: 0x88F9, - 22585 - 11905: 0x88FA, - 22586 - 11905: 0x88FB, - 22587 - 11905: 0x88FC, - 22588 - 11905: 0x88FD, - 22589 - 11905: 0x88FE, - 22590 - 11905: 0x8940, - 22591 - 11905: 0x8941, - 22592 - 11905: 0x8942, - 22593 - 11905: 0x8943, - 22594 - 11905: 0x8944, - 22595 - 11905: 0x8945, - 22596 - 11905: 0xDCA8, - 22597 - 11905: 0x8946, - 22598 - 11905: 0x8947, - 22599 - 11905: 0x8948, - 22600 - 11905: 0x8949, - 22601 - 11905: 0x894A, - 22602 - 11905: 0x894B, - 22603 - 11905: 0x894C, - 22604 - 11905: 0xCBFA, - 22605 - 11905: 0xEBF3, - 22606 - 11905: 0x894D, - 22607 - 11905: 0x894E, - 22608 - 11905: 0x894F, - 22609 - 11905: 0xCBDC, - 22610 - 11905: 0x8950, - 22611 - 11905: 0x8951, - 22612 - 11905: 0xCBFE, - 22613 - 11905: 0x8952, - 22614 - 11905: 0x8953, - 22615 - 11905: 0x8954, - 22616 - 11905: 0xCCC1, - 22617 - 11905: 0x8955, - 22618 - 11905: 0x8956, - 22619 - 11905: 0x8957, - 22620 - 11905: 0x8958, - 22621 - 11905: 0x8959, - 22622 - 11905: 0xC8FB, - 22623 - 11905: 0x895A, - 22624 - 11905: 0x895B, - 22625 - 11905: 0x895C, - 22626 - 11905: 0x895D, - 22627 - 11905: 0x895E, - 22628 - 11905: 0x895F, - 22629 - 11905: 0xDCAA, - 22630 - 11905: 0x8960, - 22631 - 11905: 0x8961, - 22632 - 11905: 0x8962, - 22633 - 11905: 0x8963, - 22634 - 11905: 0x8964, - 22635 - 11905: 0xCCEE, - 22636 - 11905: 0xDCAB, - 22637 - 11905: 0x8965, - 22638 - 11905: 0x8966, - 22639 - 11905: 0x8967, - 22640 - 11905: 0x8968, - 22641 - 11905: 0x8969, - 22642 - 11905: 0x896A, - 22643 - 11905: 0x896B, - 22644 - 11905: 0x896C, - 22645 - 11905: 0x896D, - 22646 - 11905: 0x896E, - 22647 - 11905: 0x896F, - 22648 - 11905: 0x8970, - 22649 - 11905: 0x8971, - 22650 - 11905: 0x8972, - 22651 - 11905: 0x8973, - 22652 - 11905: 0x8974, - 22653 - 11905: 0x8975, - 22654 - 11905: 0xDBD3, - 22655 - 11905: 0x8976, - 22656 - 11905: 0xDCAF, - 22657 - 11905: 0xDCAC, - 22658 - 11905: 0x8977, - 22659 - 11905: 0xBEB3, - 22660 - 11905: 0x8978, - 22661 - 11905: 0xCAFB, - 22662 - 11905: 0x8979, - 22663 - 11905: 0x897A, - 22664 - 11905: 0x897B, - 22665 - 11905: 0xDCAD, - 22666 - 11905: 0x897C, - 22667 - 11905: 0x897D, - 22668 - 11905: 0x897E, - 22669 - 11905: 0x8980, - 22670 - 11905: 0x8981, - 22671 - 11905: 0x8982, - 22672 - 11905: 0x8983, - 22673 - 11905: 0x8984, - 22674 - 11905: 0xC9CA, - 22675 - 11905: 0xC4B9, - 22676 - 11905: 0x8985, - 22677 - 11905: 0x8986, - 22678 - 11905: 0x8987, - 22679 - 11905: 0x8988, - 22680 - 11905: 0x8989, - 22681 - 11905: 0xC7BD, - 22682 - 11905: 0xDCAE, - 22683 - 11905: 0x898A, - 22684 - 11905: 0x898B, - 22685 - 11905: 0x898C, - 22686 - 11905: 0xD4F6, - 22687 - 11905: 0xD0E6, - 22688 - 11905: 0x898D, - 22689 - 11905: 0x898E, - 22690 - 11905: 0x898F, - 22691 - 11905: 0x8990, - 22692 - 11905: 0x8991, - 22693 - 11905: 0x8992, - 22694 - 11905: 0x8993, - 22695 - 11905: 0x8994, - 22696 - 11905: 0xC4AB, - 22697 - 11905: 0xB6D5, - 22698 - 11905: 0x8995, - 22699 - 11905: 0x8996, - 22700 - 11905: 0x8997, - 22701 - 11905: 0x8998, - 22702 - 11905: 0x8999, - 22703 - 11905: 0x899A, - 22704 - 11905: 0x899B, - 22705 - 11905: 0x899C, - 22706 - 11905: 0x899D, - 22707 - 11905: 0x899E, - 22708 - 11905: 0x899F, - 22709 - 11905: 0x89A0, - 22710 - 11905: 0x89A1, - 22711 - 11905: 0x89A2, - 22712 - 11905: 0x89A3, - 22713 - 11905: 0x89A4, - 22714 - 11905: 0x89A5, - 22715 - 11905: 0x89A6, - 22716 - 11905: 0xDBD4, - 22717 - 11905: 0x89A7, - 22718 - 11905: 0x89A8, - 22719 - 11905: 0x89A9, - 22720 - 11905: 0x89AA, - 22721 - 11905: 0xB1DA, - 22722 - 11905: 0x89AB, - 22723 - 11905: 0x89AC, - 22724 - 11905: 0x89AD, - 22725 - 11905: 0xDBD5, - 22726 - 11905: 0x89AE, - 22727 - 11905: 0x89AF, - 22728 - 11905: 0x89B0, - 22729 - 11905: 0x89B1, - 22730 - 11905: 0x89B2, - 22731 - 11905: 0x89B3, - 22732 - 11905: 0x89B4, - 22733 - 11905: 0x89B5, - 22734 - 11905: 0x89B6, - 22735 - 11905: 0x89B7, - 22736 - 11905: 0x89B8, - 22737 - 11905: 0xDBD6, - 22738 - 11905: 0x89B9, - 22739 - 11905: 0x89BA, - 22740 - 11905: 0x89BB, - 22741 - 11905: 0xBABE, - 22742 - 11905: 0x89BC, - 22743 - 11905: 0x89BD, - 22744 - 11905: 0x89BE, - 22745 - 11905: 0x89BF, - 22746 - 11905: 0x89C0, - 22747 - 11905: 0x89C1, - 22748 - 11905: 0x89C2, - 22749 - 11905: 0x89C3, - 22750 - 11905: 0x89C4, - 22751 - 11905: 0x89C5, - 22752 - 11905: 0x89C6, - 22753 - 11905: 0x89C7, - 22754 - 11905: 0x89C8, - 22755 - 11905: 0x89C9, - 22756 - 11905: 0xC8C0, - 22757 - 11905: 0x89CA, - 22758 - 11905: 0x89CB, - 22759 - 11905: 0x89CC, - 22760 - 11905: 0x89CD, - 22761 - 11905: 0x89CE, - 22762 - 11905: 0x89CF, - 22763 - 11905: 0xCABF, - 22764 - 11905: 0xC8C9, - 22765 - 11905: 0x89D0, - 22766 - 11905: 0xD7B3, - 22767 - 11905: 0x89D1, - 22768 - 11905: 0xC9F9, - 22769 - 11905: 0x89D2, - 22770 - 11905: 0x89D3, - 22771 - 11905: 0xBFC7, - 22772 - 11905: 0x89D4, - 22773 - 11905: 0x89D5, - 22774 - 11905: 0xBAF8, - 22775 - 11905: 0x89D6, - 22776 - 11905: 0x89D7, - 22777 - 11905: 0xD2BC, - 22778 - 11905: 0x89D8, - 22779 - 11905: 0x89D9, - 22780 - 11905: 0x89DA, - 22781 - 11905: 0x89DB, - 22782 - 11905: 0x89DC, - 22783 - 11905: 0x89DD, - 22784 - 11905: 0x89DE, - 22785 - 11905: 0x89DF, - 22786 - 11905: 0xE2BA, - 22787 - 11905: 0x89E0, - 22788 - 11905: 0xB4A6, - 22789 - 11905: 0x89E1, - 22790 - 11905: 0x89E2, - 22791 - 11905: 0xB1B8, - 22792 - 11905: 0x89E3, - 22793 - 11905: 0x89E4, - 22794 - 11905: 0x89E5, - 22795 - 11905: 0x89E6, - 22796 - 11905: 0x89E7, - 22797 - 11905: 0xB8B4, - 22798 - 11905: 0x89E8, - 22799 - 11905: 0xCFC4, - 22800 - 11905: 0x89E9, - 22801 - 11905: 0x89EA, - 22802 - 11905: 0x89EB, - 22803 - 11905: 0x89EC, - 22804 - 11905: 0xD9E7, - 22805 - 11905: 0xCFA6, - 22806 - 11905: 0xCDE2, - 22807 - 11905: 0x89ED, - 22808 - 11905: 0x89EE, - 22809 - 11905: 0xD9ED, - 22810 - 11905: 0xB6E0, - 22811 - 11905: 0x89EF, - 22812 - 11905: 0xD2B9, - 22813 - 11905: 0x89F0, - 22814 - 11905: 0x89F1, - 22815 - 11905: 0xB9BB, - 22816 - 11905: 0x89F2, - 22817 - 11905: 0x89F3, - 22818 - 11905: 0x89F4, - 22819 - 11905: 0x89F5, - 22820 - 11905: 0xE2B9, - 22821 - 11905: 0xE2B7, - 22822 - 11905: 0x89F6, - 22823 - 11905: 0xB4F3, - 22824 - 11905: 0x89F7, - 22825 - 11905: 0xCCEC, - 22826 - 11905: 0xCCAB, - 22827 - 11905: 0xB7F2, - 22828 - 11905: 0x89F8, - 22829 - 11905: 0xD8B2, - 22830 - 11905: 0xD1EB, - 22831 - 11905: 0xBABB, - 22832 - 11905: 0x89F9, - 22833 - 11905: 0xCAA7, - 22834 - 11905: 0x89FA, - 22835 - 11905: 0x89FB, - 22836 - 11905: 0xCDB7, - 22837 - 11905: 0x89FC, - 22838 - 11905: 0x89FD, - 22839 - 11905: 0xD2C4, - 22840 - 11905: 0xBFE4, - 22841 - 11905: 0xBCD0, - 22842 - 11905: 0xB6E1, - 22843 - 11905: 0x89FE, - 22844 - 11905: 0xDEC5, - 22845 - 11905: 0x8A40, - 22846 - 11905: 0x8A41, - 22847 - 11905: 0x8A42, - 22848 - 11905: 0x8A43, - 22849 - 11905: 0xDEC6, - 22850 - 11905: 0xDBBC, - 22851 - 11905: 0x8A44, - 22852 - 11905: 0xD1D9, - 22853 - 11905: 0x8A45, - 22854 - 11905: 0x8A46, - 22855 - 11905: 0xC6E6, - 22856 - 11905: 0xC4CE, - 22857 - 11905: 0xB7EE, - 22858 - 11905: 0x8A47, - 22859 - 11905: 0xB7DC, - 22860 - 11905: 0x8A48, - 22861 - 11905: 0x8A49, - 22862 - 11905: 0xBFFC, - 22863 - 11905: 0xD7E0, - 22864 - 11905: 0x8A4A, - 22865 - 11905: 0xC6F5, - 22866 - 11905: 0x8A4B, - 22867 - 11905: 0x8A4C, - 22868 - 11905: 0xB1BC, - 22869 - 11905: 0xDEC8, - 22870 - 11905: 0xBDB1, - 22871 - 11905: 0xCCD7, - 22872 - 11905: 0xDECA, - 22873 - 11905: 0x8A4D, - 22874 - 11905: 0xDEC9, - 22875 - 11905: 0x8A4E, - 22876 - 11905: 0x8A4F, - 22877 - 11905: 0x8A50, - 22878 - 11905: 0x8A51, - 22879 - 11905: 0x8A52, - 22880 - 11905: 0xB5EC, - 22881 - 11905: 0x8A53, - 22882 - 11905: 0xC9DD, - 22883 - 11905: 0x8A54, - 22884 - 11905: 0x8A55, - 22885 - 11905: 0xB0C2, - 22886 - 11905: 0x8A56, - 22887 - 11905: 0x8A57, - 22888 - 11905: 0x8A58, - 22889 - 11905: 0x8A59, - 22890 - 11905: 0x8A5A, - 22891 - 11905: 0x8A5B, - 22892 - 11905: 0x8A5C, - 22893 - 11905: 0x8A5D, - 22894 - 11905: 0x8A5E, - 22895 - 11905: 0x8A5F, - 22896 - 11905: 0x8A60, - 22897 - 11905: 0x8A61, - 22898 - 11905: 0x8A62, - 22899 - 11905: 0xC5AE, - 22900 - 11905: 0xC5AB, - 22901 - 11905: 0x8A63, - 22902 - 11905: 0xC4CC, - 22903 - 11905: 0x8A64, - 22904 - 11905: 0xBCE9, - 22905 - 11905: 0xCBFD, - 22906 - 11905: 0x8A65, - 22907 - 11905: 0x8A66, - 22908 - 11905: 0x8A67, - 22909 - 11905: 0xBAC3, - 22910 - 11905: 0x8A68, - 22911 - 11905: 0x8A69, - 22912 - 11905: 0x8A6A, - 22913 - 11905: 0xE5F9, - 22914 - 11905: 0xC8E7, - 22915 - 11905: 0xE5FA, - 22916 - 11905: 0xCDFD, - 22917 - 11905: 0x8A6B, - 22918 - 11905: 0xD7B1, - 22919 - 11905: 0xB8BE, - 22920 - 11905: 0xC2E8, - 22921 - 11905: 0x8A6C, - 22922 - 11905: 0xC8D1, - 22923 - 11905: 0x8A6D, - 22924 - 11905: 0x8A6E, - 22925 - 11905: 0xE5FB, - 22926 - 11905: 0x8A6F, - 22927 - 11905: 0x8A70, - 22928 - 11905: 0x8A71, - 22929 - 11905: 0x8A72, - 22930 - 11905: 0xB6CA, - 22931 - 11905: 0xBCCB, - 22932 - 11905: 0x8A73, - 22933 - 11905: 0x8A74, - 22934 - 11905: 0xD1FD, - 22935 - 11905: 0xE6A1, - 22936 - 11905: 0x8A75, - 22937 - 11905: 0xC3EE, - 22938 - 11905: 0x8A76, - 22939 - 11905: 0x8A77, - 22940 - 11905: 0x8A78, - 22941 - 11905: 0x8A79, - 22942 - 11905: 0xE6A4, - 22943 - 11905: 0x8A7A, - 22944 - 11905: 0x8A7B, - 22945 - 11905: 0x8A7C, - 22946 - 11905: 0x8A7D, - 22947 - 11905: 0xE5FE, - 22948 - 11905: 0xE6A5, - 22949 - 11905: 0xCDD7, - 22950 - 11905: 0x8A7E, - 22951 - 11905: 0x8A80, - 22952 - 11905: 0xB7C1, - 22953 - 11905: 0xE5FC, - 22954 - 11905: 0xE5FD, - 22955 - 11905: 0xE6A3, - 22956 - 11905: 0x8A81, - 22957 - 11905: 0x8A82, - 22958 - 11905: 0xC4DD, - 22959 - 11905: 0xE6A8, - 22960 - 11905: 0x8A83, - 22961 - 11905: 0x8A84, - 22962 - 11905: 0xE6A7, - 22963 - 11905: 0x8A85, - 22964 - 11905: 0x8A86, - 22965 - 11905: 0x8A87, - 22966 - 11905: 0x8A88, - 22967 - 11905: 0x8A89, - 22968 - 11905: 0x8A8A, - 22969 - 11905: 0xC3C3, - 22970 - 11905: 0x8A8B, - 22971 - 11905: 0xC6DE, - 22972 - 11905: 0x8A8C, - 22973 - 11905: 0x8A8D, - 22974 - 11905: 0xE6AA, - 22975 - 11905: 0x8A8E, - 22976 - 11905: 0x8A8F, - 22977 - 11905: 0x8A90, - 22978 - 11905: 0x8A91, - 22979 - 11905: 0x8A92, - 22980 - 11905: 0x8A93, - 22981 - 11905: 0x8A94, - 22982 - 11905: 0xC4B7, - 22983 - 11905: 0x8A95, - 22984 - 11905: 0x8A96, - 22985 - 11905: 0x8A97, - 22986 - 11905: 0xE6A2, - 22987 - 11905: 0xCABC, - 22988 - 11905: 0x8A98, - 22989 - 11905: 0x8A99, - 22990 - 11905: 0x8A9A, - 22991 - 11905: 0x8A9B, - 22992 - 11905: 0xBDE3, - 22993 - 11905: 0xB9C3, - 22994 - 11905: 0xE6A6, - 22995 - 11905: 0xD0D5, - 22996 - 11905: 0xCEAF, - 22997 - 11905: 0x8A9C, - 22998 - 11905: 0x8A9D, - 22999 - 11905: 0xE6A9, - 23000 - 11905: 0xE6B0, - 23001 - 11905: 0x8A9E, - 23002 - 11905: 0xD2A6, - 23003 - 11905: 0x8A9F, - 23004 - 11905: 0xBDAA, - 23005 - 11905: 0xE6AD, - 23006 - 11905: 0x8AA0, - 23007 - 11905: 0x8AA1, - 23008 - 11905: 0x8AA2, - 23009 - 11905: 0x8AA3, - 23010 - 11905: 0x8AA4, - 23011 - 11905: 0xE6AF, - 23012 - 11905: 0x8AA5, - 23013 - 11905: 0xC0D1, - 23014 - 11905: 0x8AA6, - 23015 - 11905: 0x8AA7, - 23016 - 11905: 0xD2CC, - 23017 - 11905: 0x8AA8, - 23018 - 11905: 0x8AA9, - 23019 - 11905: 0x8AAA, - 23020 - 11905: 0xBCA7, - 23021 - 11905: 0x8AAB, - 23022 - 11905: 0x8AAC, - 23023 - 11905: 0x8AAD, - 23024 - 11905: 0x8AAE, - 23025 - 11905: 0x8AAF, - 23026 - 11905: 0x8AB0, - 23027 - 11905: 0x8AB1, - 23028 - 11905: 0x8AB2, - 23029 - 11905: 0x8AB3, - 23030 - 11905: 0x8AB4, - 23031 - 11905: 0x8AB5, - 23032 - 11905: 0x8AB6, - 23033 - 11905: 0xE6B1, - 23034 - 11905: 0x8AB7, - 23035 - 11905: 0xD2F6, - 23036 - 11905: 0x8AB8, - 23037 - 11905: 0x8AB9, - 23038 - 11905: 0x8ABA, - 23039 - 11905: 0xD7CB, - 23040 - 11905: 0x8ABB, - 23041 - 11905: 0xCDFE, - 23042 - 11905: 0x8ABC, - 23043 - 11905: 0xCDDE, - 23044 - 11905: 0xC2A6, - 23045 - 11905: 0xE6AB, - 23046 - 11905: 0xE6AC, - 23047 - 11905: 0xBDBF, - 23048 - 11905: 0xE6AE, - 23049 - 11905: 0xE6B3, - 23050 - 11905: 0x8ABD, - 23051 - 11905: 0x8ABE, - 23052 - 11905: 0xE6B2, - 23053 - 11905: 0x8ABF, - 23054 - 11905: 0x8AC0, - 23055 - 11905: 0x8AC1, - 23056 - 11905: 0x8AC2, - 23057 - 11905: 0xE6B6, - 23058 - 11905: 0x8AC3, - 23059 - 11905: 0xE6B8, - 23060 - 11905: 0x8AC4, - 23061 - 11905: 0x8AC5, - 23062 - 11905: 0x8AC6, - 23063 - 11905: 0x8AC7, - 23064 - 11905: 0xC4EF, - 23065 - 11905: 0x8AC8, - 23066 - 11905: 0x8AC9, - 23067 - 11905: 0x8ACA, - 23068 - 11905: 0xC4C8, - 23069 - 11905: 0x8ACB, - 23070 - 11905: 0x8ACC, - 23071 - 11905: 0xBEEA, - 23072 - 11905: 0xC9EF, - 23073 - 11905: 0x8ACD, - 23074 - 11905: 0x8ACE, - 23075 - 11905: 0xE6B7, - 23076 - 11905: 0x8ACF, - 23077 - 11905: 0xB6F0, - 23078 - 11905: 0x8AD0, - 23079 - 11905: 0x8AD1, - 23080 - 11905: 0x8AD2, - 23081 - 11905: 0xC3E4, - 23082 - 11905: 0x8AD3, - 23083 - 11905: 0x8AD4, - 23084 - 11905: 0x8AD5, - 23085 - 11905: 0x8AD6, - 23086 - 11905: 0x8AD7, - 23087 - 11905: 0x8AD8, - 23088 - 11905: 0x8AD9, - 23089 - 11905: 0xD3E9, - 23090 - 11905: 0xE6B4, - 23091 - 11905: 0x8ADA, - 23092 - 11905: 0xE6B5, - 23093 - 11905: 0x8ADB, - 23094 - 11905: 0xC8A2, - 23095 - 11905: 0x8ADC, - 23096 - 11905: 0x8ADD, - 23097 - 11905: 0x8ADE, - 23098 - 11905: 0x8ADF, - 23099 - 11905: 0x8AE0, - 23100 - 11905: 0xE6BD, - 23101 - 11905: 0x8AE1, - 23102 - 11905: 0x8AE2, - 23103 - 11905: 0x8AE3, - 23104 - 11905: 0xE6B9, - 23105 - 11905: 0x8AE4, - 23106 - 11905: 0x8AE5, - 23107 - 11905: 0x8AE6, - 23108 - 11905: 0x8AE7, - 23109 - 11905: 0x8AE8, - 23110 - 11905: 0xC6C5, - 23111 - 11905: 0x8AE9, - 23112 - 11905: 0x8AEA, - 23113 - 11905: 0xCDF1, - 23114 - 11905: 0xE6BB, - 23115 - 11905: 0x8AEB, - 23116 - 11905: 0x8AEC, - 23117 - 11905: 0x8AED, - 23118 - 11905: 0x8AEE, - 23119 - 11905: 0x8AEF, - 23120 - 11905: 0x8AF0, - 23121 - 11905: 0x8AF1, - 23122 - 11905: 0x8AF2, - 23123 - 11905: 0x8AF3, - 23124 - 11905: 0x8AF4, - 23125 - 11905: 0xE6BC, - 23126 - 11905: 0x8AF5, - 23127 - 11905: 0x8AF6, - 23128 - 11905: 0x8AF7, - 23129 - 11905: 0x8AF8, - 23130 - 11905: 0xBBE9, - 23131 - 11905: 0x8AF9, - 23132 - 11905: 0x8AFA, - 23133 - 11905: 0x8AFB, - 23134 - 11905: 0x8AFC, - 23135 - 11905: 0x8AFD, - 23136 - 11905: 0x8AFE, - 23137 - 11905: 0x8B40, - 23138 - 11905: 0xE6BE, - 23139 - 11905: 0x8B41, - 23140 - 11905: 0x8B42, - 23141 - 11905: 0x8B43, - 23142 - 11905: 0x8B44, - 23143 - 11905: 0xE6BA, - 23144 - 11905: 0x8B45, - 23145 - 11905: 0x8B46, - 23146 - 11905: 0xC0B7, - 23147 - 11905: 0x8B47, - 23148 - 11905: 0x8B48, - 23149 - 11905: 0x8B49, - 23150 - 11905: 0x8B4A, - 23151 - 11905: 0x8B4B, - 23152 - 11905: 0x8B4C, - 23153 - 11905: 0x8B4D, - 23154 - 11905: 0x8B4E, - 23155 - 11905: 0x8B4F, - 23156 - 11905: 0xD3A4, - 23157 - 11905: 0xE6BF, - 23158 - 11905: 0xC9F4, - 23159 - 11905: 0xE6C3, - 23160 - 11905: 0x8B50, - 23161 - 11905: 0x8B51, - 23162 - 11905: 0xE6C4, - 23163 - 11905: 0x8B52, - 23164 - 11905: 0x8B53, - 23165 - 11905: 0x8B54, - 23166 - 11905: 0x8B55, - 23167 - 11905: 0xD0F6, - 23168 - 11905: 0x8B56, - 23169 - 11905: 0x8B57, - 23170 - 11905: 0x8B58, - 23171 - 11905: 0x8B59, - 23172 - 11905: 0x8B5A, - 23173 - 11905: 0x8B5B, - 23174 - 11905: 0x8B5C, - 23175 - 11905: 0x8B5D, - 23176 - 11905: 0x8B5E, - 23177 - 11905: 0x8B5F, - 23178 - 11905: 0x8B60, - 23179 - 11905: 0x8B61, - 23180 - 11905: 0x8B62, - 23181 - 11905: 0x8B63, - 23182 - 11905: 0x8B64, - 23183 - 11905: 0x8B65, - 23184 - 11905: 0x8B66, - 23185 - 11905: 0x8B67, - 23186 - 11905: 0xC3BD, - 23187 - 11905: 0x8B68, - 23188 - 11905: 0x8B69, - 23189 - 11905: 0x8B6A, - 23190 - 11905: 0x8B6B, - 23191 - 11905: 0x8B6C, - 23192 - 11905: 0x8B6D, - 23193 - 11905: 0x8B6E, - 23194 - 11905: 0xC3C4, - 23195 - 11905: 0xE6C2, - 23196 - 11905: 0x8B6F, - 23197 - 11905: 0x8B70, - 23198 - 11905: 0x8B71, - 23199 - 11905: 0x8B72, - 23200 - 11905: 0x8B73, - 23201 - 11905: 0x8B74, - 23202 - 11905: 0x8B75, - 23203 - 11905: 0x8B76, - 23204 - 11905: 0x8B77, - 23205 - 11905: 0x8B78, - 23206 - 11905: 0x8B79, - 23207 - 11905: 0x8B7A, - 23208 - 11905: 0x8B7B, - 23209 - 11905: 0x8B7C, - 23210 - 11905: 0xE6C1, - 23211 - 11905: 0x8B7D, - 23212 - 11905: 0x8B7E, - 23213 - 11905: 0x8B80, - 23214 - 11905: 0x8B81, - 23215 - 11905: 0x8B82, - 23216 - 11905: 0x8B83, - 23217 - 11905: 0x8B84, - 23218 - 11905: 0xE6C7, - 23219 - 11905: 0xCFB1, - 23220 - 11905: 0x8B85, - 23221 - 11905: 0xEBF4, - 23222 - 11905: 0x8B86, - 23223 - 11905: 0x8B87, - 23224 - 11905: 0xE6CA, - 23225 - 11905: 0x8B88, - 23226 - 11905: 0x8B89, - 23227 - 11905: 0x8B8A, - 23228 - 11905: 0x8B8B, - 23229 - 11905: 0x8B8C, - 23230 - 11905: 0xE6C5, - 23231 - 11905: 0x8B8D, - 23232 - 11905: 0x8B8E, - 23233 - 11905: 0xBCDE, - 23234 - 11905: 0xC9A9, - 23235 - 11905: 0x8B8F, - 23236 - 11905: 0x8B90, - 23237 - 11905: 0x8B91, - 23238 - 11905: 0x8B92, - 23239 - 11905: 0x8B93, - 23240 - 11905: 0x8B94, - 23241 - 11905: 0xBCB5, - 23242 - 11905: 0x8B95, - 23243 - 11905: 0x8B96, - 23244 - 11905: 0xCFD3, - 23245 - 11905: 0x8B97, - 23246 - 11905: 0x8B98, - 23247 - 11905: 0x8B99, - 23248 - 11905: 0x8B9A, - 23249 - 11905: 0x8B9B, - 23250 - 11905: 0xE6C8, - 23251 - 11905: 0x8B9C, - 23252 - 11905: 0xE6C9, - 23253 - 11905: 0x8B9D, - 23254 - 11905: 0xE6CE, - 23255 - 11905: 0x8B9E, - 23256 - 11905: 0xE6D0, - 23257 - 11905: 0x8B9F, - 23258 - 11905: 0x8BA0, - 23259 - 11905: 0x8BA1, - 23260 - 11905: 0xE6D1, - 23261 - 11905: 0x8BA2, - 23262 - 11905: 0x8BA3, - 23263 - 11905: 0x8BA4, - 23264 - 11905: 0xE6CB, - 23265 - 11905: 0xB5D5, - 23266 - 11905: 0x8BA5, - 23267 - 11905: 0xE6CC, - 23268 - 11905: 0x8BA6, - 23269 - 11905: 0x8BA7, - 23270 - 11905: 0xE6CF, - 23271 - 11905: 0x8BA8, - 23272 - 11905: 0x8BA9, - 23273 - 11905: 0xC4DB, - 23274 - 11905: 0x8BAA, - 23275 - 11905: 0xE6C6, - 23276 - 11905: 0x8BAB, - 23277 - 11905: 0x8BAC, - 23278 - 11905: 0x8BAD, - 23279 - 11905: 0x8BAE, - 23280 - 11905: 0x8BAF, - 23281 - 11905: 0xE6CD, - 23282 - 11905: 0x8BB0, - 23283 - 11905: 0x8BB1, - 23284 - 11905: 0x8BB2, - 23285 - 11905: 0x8BB3, - 23286 - 11905: 0x8BB4, - 23287 - 11905: 0x8BB5, - 23288 - 11905: 0x8BB6, - 23289 - 11905: 0x8BB7, - 23290 - 11905: 0x8BB8, - 23291 - 11905: 0x8BB9, - 23292 - 11905: 0x8BBA, - 23293 - 11905: 0x8BBB, - 23294 - 11905: 0x8BBC, - 23295 - 11905: 0x8BBD, - 23296 - 11905: 0x8BBE, - 23297 - 11905: 0x8BBF, - 23298 - 11905: 0x8BC0, - 23299 - 11905: 0x8BC1, - 23300 - 11905: 0x8BC2, - 23301 - 11905: 0x8BC3, - 23302 - 11905: 0x8BC4, - 23303 - 11905: 0x8BC5, - 23304 - 11905: 0x8BC6, - 23305 - 11905: 0xE6D2, - 23306 - 11905: 0x8BC7, - 23307 - 11905: 0x8BC8, - 23308 - 11905: 0x8BC9, - 23309 - 11905: 0x8BCA, - 23310 - 11905: 0x8BCB, - 23311 - 11905: 0x8BCC, - 23312 - 11905: 0x8BCD, - 23313 - 11905: 0x8BCE, - 23314 - 11905: 0x8BCF, - 23315 - 11905: 0x8BD0, - 23316 - 11905: 0x8BD1, - 23317 - 11905: 0x8BD2, - 23318 - 11905: 0xE6D4, - 23319 - 11905: 0xE6D3, - 23320 - 11905: 0x8BD3, - 23321 - 11905: 0x8BD4, - 23322 - 11905: 0x8BD5, - 23323 - 11905: 0x8BD6, - 23324 - 11905: 0x8BD7, - 23325 - 11905: 0x8BD8, - 23326 - 11905: 0x8BD9, - 23327 - 11905: 0x8BDA, - 23328 - 11905: 0x8BDB, - 23329 - 11905: 0x8BDC, - 23330 - 11905: 0x8BDD, - 23331 - 11905: 0x8BDE, - 23332 - 11905: 0x8BDF, - 23333 - 11905: 0x8BE0, - 23334 - 11905: 0x8BE1, - 23335 - 11905: 0x8BE2, - 23336 - 11905: 0x8BE3, - 23337 - 11905: 0x8BE4, - 23338 - 11905: 0x8BE5, - 23339 - 11905: 0x8BE6, - 23340 - 11905: 0x8BE7, - 23341 - 11905: 0x8BE8, - 23342 - 11905: 0x8BE9, - 23343 - 11905: 0x8BEA, - 23344 - 11905: 0x8BEB, - 23345 - 11905: 0x8BEC, - 23346 - 11905: 0xE6D5, - 23347 - 11905: 0x8BED, - 23348 - 11905: 0xD9F8, - 23349 - 11905: 0x8BEE, - 23350 - 11905: 0x8BEF, - 23351 - 11905: 0xE6D6, - 23352 - 11905: 0x8BF0, - 23353 - 11905: 0x8BF1, - 23354 - 11905: 0x8BF2, - 23355 - 11905: 0x8BF3, - 23356 - 11905: 0x8BF4, - 23357 - 11905: 0x8BF5, - 23358 - 11905: 0x8BF6, - 23359 - 11905: 0x8BF7, - 23360 - 11905: 0xE6D7, - 23361 - 11905: 0x8BF8, - 23362 - 11905: 0x8BF9, - 23363 - 11905: 0x8BFA, - 23364 - 11905: 0x8BFB, - 23365 - 11905: 0x8BFC, - 23366 - 11905: 0x8BFD, - 23367 - 11905: 0x8BFE, - 23368 - 11905: 0x8C40, - 23369 - 11905: 0x8C41, - 23370 - 11905: 0x8C42, - 23371 - 11905: 0x8C43, - 23372 - 11905: 0x8C44, - 23373 - 11905: 0x8C45, - 23374 - 11905: 0x8C46, - 23375 - 11905: 0x8C47, - 23376 - 11905: 0xD7D3, - 23377 - 11905: 0xE6DD, - 23378 - 11905: 0x8C48, - 23379 - 11905: 0xE6DE, - 23380 - 11905: 0xBFD7, - 23381 - 11905: 0xD4D0, - 23382 - 11905: 0x8C49, - 23383 - 11905: 0xD7D6, - 23384 - 11905: 0xB4E6, - 23385 - 11905: 0xCBEF, - 23386 - 11905: 0xE6DA, - 23387 - 11905: 0xD8C3, - 23388 - 11905: 0xD7CE, - 23389 - 11905: 0xD0A2, - 23390 - 11905: 0x8C4A, - 23391 - 11905: 0xC3CF, - 23392 - 11905: 0x8C4B, - 23393 - 11905: 0x8C4C, - 23394 - 11905: 0xE6DF, - 23395 - 11905: 0xBCBE, - 23396 - 11905: 0xB9C2, - 23397 - 11905: 0xE6DB, - 23398 - 11905: 0xD1A7, - 23399 - 11905: 0x8C4D, - 23400 - 11905: 0x8C4E, - 23401 - 11905: 0xBAA2, - 23402 - 11905: 0xC2CF, - 23403 - 11905: 0x8C4F, - 23404 - 11905: 0xD8AB, - 23405 - 11905: 0x8C50, - 23406 - 11905: 0x8C51, - 23407 - 11905: 0x8C52, - 23408 - 11905: 0xCAEB, - 23409 - 11905: 0xE5EE, - 23410 - 11905: 0x8C53, - 23411 - 11905: 0xE6DC, - 23412 - 11905: 0x8C54, - 23413 - 11905: 0xB7F5, - 23414 - 11905: 0x8C55, - 23415 - 11905: 0x8C56, - 23416 - 11905: 0x8C57, - 23417 - 11905: 0x8C58, - 23418 - 11905: 0xC8E6, - 23419 - 11905: 0x8C59, - 23420 - 11905: 0x8C5A, - 23421 - 11905: 0xC4F5, - 23422 - 11905: 0x8C5B, - 23423 - 11905: 0x8C5C, - 23424 - 11905: 0xE5B2, - 23425 - 11905: 0xC4FE, - 23426 - 11905: 0x8C5D, - 23427 - 11905: 0xCBFC, - 23428 - 11905: 0xE5B3, - 23429 - 11905: 0xD5AC, - 23430 - 11905: 0x8C5E, - 23431 - 11905: 0xD3EE, - 23432 - 11905: 0xCAD8, - 23433 - 11905: 0xB0B2, - 23434 - 11905: 0x8C5F, - 23435 - 11905: 0xCBCE, - 23436 - 11905: 0xCDEA, - 23437 - 11905: 0x8C60, - 23438 - 11905: 0x8C61, - 23439 - 11905: 0xBAEA, - 23440 - 11905: 0x8C62, - 23441 - 11905: 0x8C63, - 23442 - 11905: 0x8C64, - 23443 - 11905: 0xE5B5, - 23444 - 11905: 0x8C65, - 23445 - 11905: 0xE5B4, - 23446 - 11905: 0x8C66, - 23447 - 11905: 0xD7DA, - 23448 - 11905: 0xB9D9, - 23449 - 11905: 0xD6E6, - 23450 - 11905: 0xB6A8, - 23451 - 11905: 0xCDF0, - 23452 - 11905: 0xD2CB, - 23453 - 11905: 0xB1A6, - 23454 - 11905: 0xCAB5, - 23455 - 11905: 0x8C67, - 23456 - 11905: 0xB3E8, - 23457 - 11905: 0xC9F3, - 23458 - 11905: 0xBFCD, - 23459 - 11905: 0xD0FB, - 23460 - 11905: 0xCAD2, - 23461 - 11905: 0xE5B6, - 23462 - 11905: 0xBBC2, - 23463 - 11905: 0x8C68, - 23464 - 11905: 0x8C69, - 23465 - 11905: 0x8C6A, - 23466 - 11905: 0xCFDC, - 23467 - 11905: 0xB9AC, - 23468 - 11905: 0x8C6B, - 23469 - 11905: 0x8C6C, - 23470 - 11905: 0x8C6D, - 23471 - 11905: 0x8C6E, - 23472 - 11905: 0xD4D7, - 23473 - 11905: 0x8C6F, - 23474 - 11905: 0x8C70, - 23475 - 11905: 0xBAA6, - 23476 - 11905: 0xD1E7, - 23477 - 11905: 0xCFFC, - 23478 - 11905: 0xBCD2, - 23479 - 11905: 0x8C71, - 23480 - 11905: 0xE5B7, - 23481 - 11905: 0xC8DD, - 23482 - 11905: 0x8C72, - 23483 - 11905: 0x8C73, - 23484 - 11905: 0x8C74, - 23485 - 11905: 0xBFED, - 23486 - 11905: 0xB1F6, - 23487 - 11905: 0xCBDE, - 23488 - 11905: 0x8C75, - 23489 - 11905: 0x8C76, - 23490 - 11905: 0xBCC5, - 23491 - 11905: 0x8C77, - 23492 - 11905: 0xBCC4, - 23493 - 11905: 0xD2FA, - 23494 - 11905: 0xC3DC, - 23495 - 11905: 0xBFDC, - 23496 - 11905: 0x8C78, - 23497 - 11905: 0x8C79, - 23498 - 11905: 0x8C7A, - 23499 - 11905: 0x8C7B, - 23500 - 11905: 0xB8BB, - 23501 - 11905: 0x8C7C, - 23502 - 11905: 0x8C7D, - 23503 - 11905: 0x8C7E, - 23504 - 11905: 0xC3C2, - 23505 - 11905: 0x8C80, - 23506 - 11905: 0xBAAE, - 23507 - 11905: 0xD4A2, - 23508 - 11905: 0x8C81, - 23509 - 11905: 0x8C82, - 23510 - 11905: 0x8C83, - 23511 - 11905: 0x8C84, - 23512 - 11905: 0x8C85, - 23513 - 11905: 0x8C86, - 23514 - 11905: 0x8C87, - 23515 - 11905: 0x8C88, - 23516 - 11905: 0x8C89, - 23517 - 11905: 0xC7DE, - 23518 - 11905: 0xC4AF, - 23519 - 11905: 0xB2EC, - 23520 - 11905: 0x8C8A, - 23521 - 11905: 0xB9D1, - 23522 - 11905: 0x8C8B, - 23523 - 11905: 0x8C8C, - 23524 - 11905: 0xE5BB, - 23525 - 11905: 0xC1C8, - 23526 - 11905: 0x8C8D, - 23527 - 11905: 0x8C8E, - 23528 - 11905: 0xD5AF, - 23529 - 11905: 0x8C8F, - 23530 - 11905: 0x8C90, - 23531 - 11905: 0x8C91, - 23532 - 11905: 0x8C92, - 23533 - 11905: 0x8C93, - 23534 - 11905: 0xE5BC, - 23535 - 11905: 0x8C94, - 23536 - 11905: 0xE5BE, - 23537 - 11905: 0x8C95, - 23538 - 11905: 0x8C96, - 23539 - 11905: 0x8C97, - 23540 - 11905: 0x8C98, - 23541 - 11905: 0x8C99, - 23542 - 11905: 0x8C9A, - 23543 - 11905: 0x8C9B, - 23544 - 11905: 0xB4E7, - 23545 - 11905: 0xB6D4, - 23546 - 11905: 0xCBC2, - 23547 - 11905: 0xD1B0, - 23548 - 11905: 0xB5BC, - 23549 - 11905: 0x8C9C, - 23550 - 11905: 0x8C9D, - 23551 - 11905: 0xCAD9, - 23552 - 11905: 0x8C9E, - 23553 - 11905: 0xB7E2, - 23554 - 11905: 0x8C9F, - 23555 - 11905: 0x8CA0, - 23556 - 11905: 0xC9E4, - 23557 - 11905: 0x8CA1, - 23558 - 11905: 0xBDAB, - 23559 - 11905: 0x8CA2, - 23560 - 11905: 0x8CA3, - 23561 - 11905: 0xCEBE, - 23562 - 11905: 0xD7F0, - 23563 - 11905: 0x8CA4, - 23564 - 11905: 0x8CA5, - 23565 - 11905: 0x8CA6, - 23566 - 11905: 0x8CA7, - 23567 - 11905: 0xD0A1, - 23568 - 11905: 0x8CA8, - 23569 - 11905: 0xC9D9, - 23570 - 11905: 0x8CA9, - 23571 - 11905: 0x8CAA, - 23572 - 11905: 0xB6FB, - 23573 - 11905: 0xE6D8, - 23574 - 11905: 0xBCE2, - 23575 - 11905: 0x8CAB, - 23576 - 11905: 0xB3BE, - 23577 - 11905: 0x8CAC, - 23578 - 11905: 0xC9D0, - 23579 - 11905: 0x8CAD, - 23580 - 11905: 0xE6D9, - 23581 - 11905: 0xB3A2, - 23582 - 11905: 0x8CAE, - 23583 - 11905: 0x8CAF, - 23584 - 11905: 0x8CB0, - 23585 - 11905: 0x8CB1, - 23586 - 11905: 0xDECC, - 23587 - 11905: 0x8CB2, - 23588 - 11905: 0xD3C8, - 23589 - 11905: 0xDECD, - 23590 - 11905: 0x8CB3, - 23591 - 11905: 0xD2A2, - 23592 - 11905: 0x8CB4, - 23593 - 11905: 0x8CB5, - 23594 - 11905: 0x8CB6, - 23595 - 11905: 0x8CB7, - 23596 - 11905: 0xDECE, - 23597 - 11905: 0x8CB8, - 23598 - 11905: 0x8CB9, - 23599 - 11905: 0x8CBA, - 23600 - 11905: 0x8CBB, - 23601 - 11905: 0xBECD, - 23602 - 11905: 0x8CBC, - 23603 - 11905: 0x8CBD, - 23604 - 11905: 0xDECF, - 23605 - 11905: 0x8CBE, - 23606 - 11905: 0x8CBF, - 23607 - 11905: 0x8CC0, - 23608 - 11905: 0xCAAC, - 23609 - 11905: 0xD2FC, - 23610 - 11905: 0xB3DF, - 23611 - 11905: 0xE5EA, - 23612 - 11905: 0xC4E1, - 23613 - 11905: 0xBEA1, - 23614 - 11905: 0xCEB2, - 23615 - 11905: 0xC4F2, - 23616 - 11905: 0xBED6, - 23617 - 11905: 0xC6A8, - 23618 - 11905: 0xB2E3, - 23619 - 11905: 0x8CC1, - 23620 - 11905: 0x8CC2, - 23621 - 11905: 0xBED3, - 23622 - 11905: 0x8CC3, - 23623 - 11905: 0x8CC4, - 23624 - 11905: 0xC7FC, - 23625 - 11905: 0xCCEB, - 23626 - 11905: 0xBDEC, - 23627 - 11905: 0xCEDD, - 23628 - 11905: 0x8CC5, - 23629 - 11905: 0x8CC6, - 23630 - 11905: 0xCABA, - 23631 - 11905: 0xC6C1, - 23632 - 11905: 0xE5EC, - 23633 - 11905: 0xD0BC, - 23634 - 11905: 0x8CC7, - 23635 - 11905: 0x8CC8, - 23636 - 11905: 0x8CC9, - 23637 - 11905: 0xD5B9, - 23638 - 11905: 0x8CCA, - 23639 - 11905: 0x8CCB, - 23640 - 11905: 0x8CCC, - 23641 - 11905: 0xE5ED, - 23642 - 11905: 0x8CCD, - 23643 - 11905: 0x8CCE, - 23644 - 11905: 0x8CCF, - 23645 - 11905: 0x8CD0, - 23646 - 11905: 0xCAF4, - 23647 - 11905: 0x8CD1, - 23648 - 11905: 0xCDC0, - 23649 - 11905: 0xC2C5, - 23650 - 11905: 0x8CD2, - 23651 - 11905: 0xE5EF, - 23652 - 11905: 0x8CD3, - 23653 - 11905: 0xC2C4, - 23654 - 11905: 0xE5F0, - 23655 - 11905: 0x8CD4, - 23656 - 11905: 0x8CD5, - 23657 - 11905: 0x8CD6, - 23658 - 11905: 0x8CD7, - 23659 - 11905: 0x8CD8, - 23660 - 11905: 0x8CD9, - 23661 - 11905: 0x8CDA, - 23662 - 11905: 0xE5F8, - 23663 - 11905: 0xCDCD, - 23664 - 11905: 0x8CDB, - 23665 - 11905: 0xC9BD, - 23666 - 11905: 0x8CDC, - 23667 - 11905: 0x8CDD, - 23668 - 11905: 0x8CDE, - 23669 - 11905: 0x8CDF, - 23670 - 11905: 0x8CE0, - 23671 - 11905: 0x8CE1, - 23672 - 11905: 0x8CE2, - 23673 - 11905: 0xD2D9, - 23674 - 11905: 0xE1A8, - 23675 - 11905: 0x8CE3, - 23676 - 11905: 0x8CE4, - 23677 - 11905: 0x8CE5, - 23678 - 11905: 0x8CE6, - 23679 - 11905: 0xD3EC, - 23680 - 11905: 0x8CE7, - 23681 - 11905: 0xCBEA, - 23682 - 11905: 0xC6F1, - 23683 - 11905: 0x8CE8, - 23684 - 11905: 0x8CE9, - 23685 - 11905: 0x8CEA, - 23686 - 11905: 0x8CEB, - 23687 - 11905: 0x8CEC, - 23688 - 11905: 0xE1AC, - 23689 - 11905: 0x8CED, - 23690 - 11905: 0x8CEE, - 23691 - 11905: 0x8CEF, - 23692 - 11905: 0xE1A7, - 23693 - 11905: 0xE1A9, - 23694 - 11905: 0x8CF0, - 23695 - 11905: 0x8CF1, - 23696 - 11905: 0xE1AA, - 23697 - 11905: 0xE1AF, - 23698 - 11905: 0x8CF2, - 23699 - 11905: 0x8CF3, - 23700 - 11905: 0xB2ED, - 23701 - 11905: 0x8CF4, - 23702 - 11905: 0xE1AB, - 23703 - 11905: 0xB8DA, - 23704 - 11905: 0xE1AD, - 23705 - 11905: 0xE1AE, - 23706 - 11905: 0xE1B0, - 23707 - 11905: 0xB5BA, - 23708 - 11905: 0xE1B1, - 23709 - 11905: 0x8CF5, - 23710 - 11905: 0x8CF6, - 23711 - 11905: 0x8CF7, - 23712 - 11905: 0x8CF8, - 23713 - 11905: 0x8CF9, - 23714 - 11905: 0xE1B3, - 23715 - 11905: 0xE1B8, - 23716 - 11905: 0x8CFA, - 23717 - 11905: 0x8CFB, - 23718 - 11905: 0x8CFC, - 23719 - 11905: 0x8CFD, - 23720 - 11905: 0x8CFE, - 23721 - 11905: 0xD1D2, - 23722 - 11905: 0x8D40, - 23723 - 11905: 0xE1B6, - 23724 - 11905: 0xE1B5, - 23725 - 11905: 0xC1EB, - 23726 - 11905: 0x8D41, - 23727 - 11905: 0x8D42, - 23728 - 11905: 0x8D43, - 23729 - 11905: 0xE1B7, - 23730 - 11905: 0x8D44, - 23731 - 11905: 0xD4C0, - 23732 - 11905: 0x8D45, - 23733 - 11905: 0xE1B2, - 23734 - 11905: 0x8D46, - 23735 - 11905: 0xE1BA, - 23736 - 11905: 0xB0B6, - 23737 - 11905: 0x8D47, - 23738 - 11905: 0x8D48, - 23739 - 11905: 0x8D49, - 23740 - 11905: 0x8D4A, - 23741 - 11905: 0xE1B4, - 23742 - 11905: 0x8D4B, - 23743 - 11905: 0xBFF9, - 23744 - 11905: 0x8D4C, - 23745 - 11905: 0xE1B9, - 23746 - 11905: 0x8D4D, - 23747 - 11905: 0x8D4E, - 23748 - 11905: 0xE1BB, - 23749 - 11905: 0x8D4F, - 23750 - 11905: 0x8D50, - 23751 - 11905: 0x8D51, - 23752 - 11905: 0x8D52, - 23753 - 11905: 0x8D53, - 23754 - 11905: 0x8D54, - 23755 - 11905: 0xE1BE, - 23756 - 11905: 0x8D55, - 23757 - 11905: 0x8D56, - 23758 - 11905: 0x8D57, - 23759 - 11905: 0x8D58, - 23760 - 11905: 0x8D59, - 23761 - 11905: 0x8D5A, - 23762 - 11905: 0xE1BC, - 23763 - 11905: 0x8D5B, - 23764 - 11905: 0x8D5C, - 23765 - 11905: 0x8D5D, - 23766 - 11905: 0x8D5E, - 23767 - 11905: 0x8D5F, - 23768 - 11905: 0x8D60, - 23769 - 11905: 0xD6C5, - 23770 - 11905: 0x8D61, - 23771 - 11905: 0x8D62, - 23772 - 11905: 0x8D63, - 23773 - 11905: 0x8D64, - 23774 - 11905: 0x8D65, - 23775 - 11905: 0x8D66, - 23776 - 11905: 0x8D67, - 23777 - 11905: 0xCFBF, - 23778 - 11905: 0x8D68, - 23779 - 11905: 0x8D69, - 23780 - 11905: 0xE1BD, - 23781 - 11905: 0xE1BF, - 23782 - 11905: 0xC2CD, - 23783 - 11905: 0x8D6A, - 23784 - 11905: 0xB6EB, - 23785 - 11905: 0x8D6B, - 23786 - 11905: 0xD3F8, - 23787 - 11905: 0x8D6C, - 23788 - 11905: 0x8D6D, - 23789 - 11905: 0xC7CD, - 23790 - 11905: 0x8D6E, - 23791 - 11905: 0x8D6F, - 23792 - 11905: 0xB7E5, - 23793 - 11905: 0x8D70, - 23794 - 11905: 0x8D71, - 23795 - 11905: 0x8D72, - 23796 - 11905: 0x8D73, - 23797 - 11905: 0x8D74, - 23798 - 11905: 0x8D75, - 23799 - 11905: 0x8D76, - 23800 - 11905: 0x8D77, - 23801 - 11905: 0x8D78, - 23802 - 11905: 0x8D79, - 23803 - 11905: 0xBEFE, - 23804 - 11905: 0x8D7A, - 23805 - 11905: 0x8D7B, - 23806 - 11905: 0x8D7C, - 23807 - 11905: 0x8D7D, - 23808 - 11905: 0x8D7E, - 23809 - 11905: 0x8D80, - 23810 - 11905: 0xE1C0, - 23811 - 11905: 0xE1C1, - 23812 - 11905: 0x8D81, - 23813 - 11905: 0x8D82, - 23814 - 11905: 0xE1C7, - 23815 - 11905: 0xB3E7, - 23816 - 11905: 0x8D83, - 23817 - 11905: 0x8D84, - 23818 - 11905: 0x8D85, - 23819 - 11905: 0x8D86, - 23820 - 11905: 0x8D87, - 23821 - 11905: 0x8D88, - 23822 - 11905: 0xC6E9, - 23823 - 11905: 0x8D89, - 23824 - 11905: 0x8D8A, - 23825 - 11905: 0x8D8B, - 23826 - 11905: 0x8D8C, - 23827 - 11905: 0x8D8D, - 23828 - 11905: 0xB4DE, - 23829 - 11905: 0x8D8E, - 23830 - 11905: 0xD1C2, - 23831 - 11905: 0x8D8F, - 23832 - 11905: 0x8D90, - 23833 - 11905: 0x8D91, - 23834 - 11905: 0x8D92, - 23835 - 11905: 0xE1C8, - 23836 - 11905: 0x8D93, - 23837 - 11905: 0x8D94, - 23838 - 11905: 0xE1C6, - 23839 - 11905: 0x8D95, - 23840 - 11905: 0x8D96, - 23841 - 11905: 0x8D97, - 23842 - 11905: 0x8D98, - 23843 - 11905: 0x8D99, - 23844 - 11905: 0xE1C5, - 23845 - 11905: 0x8D9A, - 23846 - 11905: 0xE1C3, - 23847 - 11905: 0xE1C2, - 23848 - 11905: 0x8D9B, - 23849 - 11905: 0xB1C0, - 23850 - 11905: 0x8D9C, - 23851 - 11905: 0x8D9D, - 23852 - 11905: 0x8D9E, - 23853 - 11905: 0xD5B8, - 23854 - 11905: 0xE1C4, - 23855 - 11905: 0x8D9F, - 23856 - 11905: 0x8DA0, - 23857 - 11905: 0x8DA1, - 23858 - 11905: 0x8DA2, - 23859 - 11905: 0x8DA3, - 23860 - 11905: 0xE1CB, - 23861 - 11905: 0x8DA4, - 23862 - 11905: 0x8DA5, - 23863 - 11905: 0x8DA6, - 23864 - 11905: 0x8DA7, - 23865 - 11905: 0x8DA8, - 23866 - 11905: 0x8DA9, - 23867 - 11905: 0x8DAA, - 23868 - 11905: 0x8DAB, - 23869 - 11905: 0xE1CC, - 23870 - 11905: 0xE1CA, - 23871 - 11905: 0x8DAC, - 23872 - 11905: 0x8DAD, - 23873 - 11905: 0x8DAE, - 23874 - 11905: 0x8DAF, - 23875 - 11905: 0x8DB0, - 23876 - 11905: 0x8DB1, - 23877 - 11905: 0x8DB2, - 23878 - 11905: 0x8DB3, - 23879 - 11905: 0xEFFA, - 23880 - 11905: 0x8DB4, - 23881 - 11905: 0x8DB5, - 23882 - 11905: 0xE1D3, - 23883 - 11905: 0xE1D2, - 23884 - 11905: 0xC7B6, - 23885 - 11905: 0x8DB6, - 23886 - 11905: 0x8DB7, - 23887 - 11905: 0x8DB8, - 23888 - 11905: 0x8DB9, - 23889 - 11905: 0x8DBA, - 23890 - 11905: 0x8DBB, - 23891 - 11905: 0x8DBC, - 23892 - 11905: 0x8DBD, - 23893 - 11905: 0x8DBE, - 23894 - 11905: 0x8DBF, - 23895 - 11905: 0x8DC0, - 23896 - 11905: 0xE1C9, - 23897 - 11905: 0x8DC1, - 23898 - 11905: 0x8DC2, - 23899 - 11905: 0xE1CE, - 23900 - 11905: 0x8DC3, - 23901 - 11905: 0xE1D0, - 23902 - 11905: 0x8DC4, - 23903 - 11905: 0x8DC5, - 23904 - 11905: 0x8DC6, - 23905 - 11905: 0x8DC7, - 23906 - 11905: 0x8DC8, - 23907 - 11905: 0x8DC9, - 23908 - 11905: 0x8DCA, - 23909 - 11905: 0x8DCB, - 23910 - 11905: 0x8DCC, - 23911 - 11905: 0x8DCD, - 23912 - 11905: 0x8DCE, - 23913 - 11905: 0xE1D4, - 23914 - 11905: 0x8DCF, - 23915 - 11905: 0xE1D1, - 23916 - 11905: 0xE1CD, - 23917 - 11905: 0x8DD0, - 23918 - 11905: 0x8DD1, - 23919 - 11905: 0xE1CF, - 23920 - 11905: 0x8DD2, - 23921 - 11905: 0x8DD3, - 23922 - 11905: 0x8DD4, - 23923 - 11905: 0x8DD5, - 23924 - 11905: 0xE1D5, - 23925 - 11905: 0x8DD6, - 23926 - 11905: 0x8DD7, - 23927 - 11905: 0x8DD8, - 23928 - 11905: 0x8DD9, - 23929 - 11905: 0x8DDA, - 23930 - 11905: 0x8DDB, - 23931 - 11905: 0x8DDC, - 23932 - 11905: 0x8DDD, - 23933 - 11905: 0x8DDE, - 23934 - 11905: 0x8DDF, - 23935 - 11905: 0x8DE0, - 23936 - 11905: 0x8DE1, - 23937 - 11905: 0x8DE2, - 23938 - 11905: 0xE1D6, - 23939 - 11905: 0x8DE3, - 23940 - 11905: 0x8DE4, - 23941 - 11905: 0x8DE5, - 23942 - 11905: 0x8DE6, - 23943 - 11905: 0x8DE7, - 23944 - 11905: 0x8DE8, - 23945 - 11905: 0x8DE9, - 23946 - 11905: 0x8DEA, - 23947 - 11905: 0x8DEB, - 23948 - 11905: 0x8DEC, - 23949 - 11905: 0x8DED, - 23950 - 11905: 0x8DEE, - 23951 - 11905: 0x8DEF, - 23952 - 11905: 0x8DF0, - 23953 - 11905: 0x8DF1, - 23954 - 11905: 0x8DF2, - 23955 - 11905: 0x8DF3, - 23956 - 11905: 0x8DF4, - 23957 - 11905: 0x8DF5, - 23958 - 11905: 0x8DF6, - 23959 - 11905: 0x8DF7, - 23960 - 11905: 0x8DF8, - 23961 - 11905: 0xE1D7, - 23962 - 11905: 0x8DF9, - 23963 - 11905: 0x8DFA, - 23964 - 11905: 0x8DFB, - 23965 - 11905: 0xE1D8, - 23966 - 11905: 0x8DFC, - 23967 - 11905: 0x8DFD, - 23968 - 11905: 0x8DFE, - 23969 - 11905: 0x8E40, - 23970 - 11905: 0x8E41, - 23971 - 11905: 0x8E42, - 23972 - 11905: 0x8E43, - 23973 - 11905: 0x8E44, - 23974 - 11905: 0x8E45, - 23975 - 11905: 0x8E46, - 23976 - 11905: 0x8E47, - 23977 - 11905: 0x8E48, - 23978 - 11905: 0x8E49, - 23979 - 11905: 0x8E4A, - 23980 - 11905: 0x8E4B, - 23981 - 11905: 0x8E4C, - 23982 - 11905: 0x8E4D, - 23983 - 11905: 0x8E4E, - 23984 - 11905: 0x8E4F, - 23985 - 11905: 0x8E50, - 23986 - 11905: 0x8E51, - 23987 - 11905: 0x8E52, - 23988 - 11905: 0x8E53, - 23989 - 11905: 0x8E54, - 23990 - 11905: 0x8E55, - 23991 - 11905: 0xE1DA, - 23992 - 11905: 0x8E56, - 23993 - 11905: 0x8E57, - 23994 - 11905: 0x8E58, - 23995 - 11905: 0x8E59, - 23996 - 11905: 0x8E5A, - 23997 - 11905: 0x8E5B, - 23998 - 11905: 0x8E5C, - 23999 - 11905: 0x8E5D, - 24000 - 11905: 0x8E5E, - 24001 - 11905: 0x8E5F, - 24002 - 11905: 0x8E60, - 24003 - 11905: 0x8E61, - 24004 - 11905: 0x8E62, - 24005 - 11905: 0xE1DB, - 24006 - 11905: 0x8E63, - 24007 - 11905: 0x8E64, - 24008 - 11905: 0x8E65, - 24009 - 11905: 0x8E66, - 24010 - 11905: 0x8E67, - 24011 - 11905: 0x8E68, - 24012 - 11905: 0x8E69, - 24013 - 11905: 0xCEA1, - 24014 - 11905: 0x8E6A, - 24015 - 11905: 0x8E6B, - 24016 - 11905: 0x8E6C, - 24017 - 11905: 0x8E6D, - 24018 - 11905: 0x8E6E, - 24019 - 11905: 0x8E6F, - 24020 - 11905: 0x8E70, - 24021 - 11905: 0x8E71, - 24022 - 11905: 0x8E72, - 24023 - 11905: 0x8E73, - 24024 - 11905: 0x8E74, - 24025 - 11905: 0x8E75, - 24026 - 11905: 0x8E76, - 24027 - 11905: 0xE7DD, - 24028 - 11905: 0x8E77, - 24029 - 11905: 0xB4A8, - 24030 - 11905: 0xD6DD, - 24031 - 11905: 0x8E78, - 24032 - 11905: 0x8E79, - 24033 - 11905: 0xD1B2, - 24034 - 11905: 0xB3B2, - 24035 - 11905: 0x8E7A, - 24036 - 11905: 0x8E7B, - 24037 - 11905: 0xB9A4, - 24038 - 11905: 0xD7F3, - 24039 - 11905: 0xC7C9, - 24040 - 11905: 0xBEDE, - 24041 - 11905: 0xB9AE, - 24042 - 11905: 0x8E7C, - 24043 - 11905: 0xCED7, - 24044 - 11905: 0x8E7D, - 24045 - 11905: 0x8E7E, - 24046 - 11905: 0xB2EE, - 24047 - 11905: 0xDBCF, - 24048 - 11905: 0x8E80, - 24049 - 11905: 0xBCBA, - 24050 - 11905: 0xD2D1, - 24051 - 11905: 0xCBC8, - 24052 - 11905: 0xB0CD, - 24053 - 11905: 0x8E81, - 24054 - 11905: 0x8E82, - 24055 - 11905: 0xCFEF, - 24056 - 11905: 0x8E83, - 24057 - 11905: 0x8E84, - 24058 - 11905: 0x8E85, - 24059 - 11905: 0x8E86, - 24060 - 11905: 0x8E87, - 24061 - 11905: 0xD9E3, - 24062 - 11905: 0xBDED, - 24063 - 11905: 0x8E88, - 24064 - 11905: 0x8E89, - 24065 - 11905: 0xB1D2, - 24066 - 11905: 0xCAD0, - 24067 - 11905: 0xB2BC, - 24068 - 11905: 0x8E8A, - 24069 - 11905: 0xCBA7, - 24070 - 11905: 0xB7AB, - 24071 - 11905: 0x8E8B, - 24072 - 11905: 0xCAA6, - 24073 - 11905: 0x8E8C, - 24074 - 11905: 0x8E8D, - 24075 - 11905: 0x8E8E, - 24076 - 11905: 0xCFA3, - 24077 - 11905: 0x8E8F, - 24078 - 11905: 0x8E90, - 24079 - 11905: 0xE0F8, - 24080 - 11905: 0xD5CA, - 24081 - 11905: 0xE0FB, - 24082 - 11905: 0x8E91, - 24083 - 11905: 0x8E92, - 24084 - 11905: 0xE0FA, - 24085 - 11905: 0xC5C1, - 24086 - 11905: 0xCCFB, - 24087 - 11905: 0x8E93, - 24088 - 11905: 0xC1B1, - 24089 - 11905: 0xE0F9, - 24090 - 11905: 0xD6E3, - 24091 - 11905: 0xB2AF, - 24092 - 11905: 0xD6C4, - 24093 - 11905: 0xB5DB, - 24094 - 11905: 0x8E94, - 24095 - 11905: 0x8E95, - 24096 - 11905: 0x8E96, - 24097 - 11905: 0x8E97, - 24098 - 11905: 0x8E98, - 24099 - 11905: 0x8E99, - 24100 - 11905: 0x8E9A, - 24101 - 11905: 0x8E9B, - 24102 - 11905: 0xB4F8, - 24103 - 11905: 0xD6A1, - 24104 - 11905: 0x8E9C, - 24105 - 11905: 0x8E9D, - 24106 - 11905: 0x8E9E, - 24107 - 11905: 0x8E9F, - 24108 - 11905: 0x8EA0, - 24109 - 11905: 0xCFAF, - 24110 - 11905: 0xB0EF, - 24111 - 11905: 0x8EA1, - 24112 - 11905: 0x8EA2, - 24113 - 11905: 0xE0FC, - 24114 - 11905: 0x8EA3, - 24115 - 11905: 0x8EA4, - 24116 - 11905: 0x8EA5, - 24117 - 11905: 0x8EA6, - 24118 - 11905: 0x8EA7, - 24119 - 11905: 0xE1A1, - 24120 - 11905: 0xB3A3, - 24121 - 11905: 0x8EA8, - 24122 - 11905: 0x8EA9, - 24123 - 11905: 0xE0FD, - 24124 - 11905: 0xE0FE, - 24125 - 11905: 0xC3B1, - 24126 - 11905: 0x8EAA, - 24127 - 11905: 0x8EAB, - 24128 - 11905: 0x8EAC, - 24129 - 11905: 0x8EAD, - 24130 - 11905: 0xC3DD, - 24131 - 11905: 0x8EAE, - 24132 - 11905: 0xE1A2, - 24133 - 11905: 0xB7F9, - 24134 - 11905: 0x8EAF, - 24135 - 11905: 0x8EB0, - 24136 - 11905: 0x8EB1, - 24137 - 11905: 0x8EB2, - 24138 - 11905: 0x8EB3, - 24139 - 11905: 0x8EB4, - 24140 - 11905: 0xBBCF, - 24141 - 11905: 0x8EB5, - 24142 - 11905: 0x8EB6, - 24143 - 11905: 0x8EB7, - 24144 - 11905: 0x8EB8, - 24145 - 11905: 0x8EB9, - 24146 - 11905: 0x8EBA, - 24147 - 11905: 0x8EBB, - 24148 - 11905: 0xE1A3, - 24149 - 11905: 0xC4BB, - 24150 - 11905: 0x8EBC, - 24151 - 11905: 0x8EBD, - 24152 - 11905: 0x8EBE, - 24153 - 11905: 0x8EBF, - 24154 - 11905: 0x8EC0, - 24155 - 11905: 0xE1A4, - 24156 - 11905: 0x8EC1, - 24157 - 11905: 0x8EC2, - 24158 - 11905: 0xE1A5, - 24159 - 11905: 0x8EC3, - 24160 - 11905: 0x8EC4, - 24161 - 11905: 0xE1A6, - 24162 - 11905: 0xB4B1, - 24163 - 11905: 0x8EC5, - 24164 - 11905: 0x8EC6, - 24165 - 11905: 0x8EC7, - 24166 - 11905: 0x8EC8, - 24167 - 11905: 0x8EC9, - 24168 - 11905: 0x8ECA, - 24169 - 11905: 0x8ECB, - 24170 - 11905: 0x8ECC, - 24171 - 11905: 0x8ECD, - 24172 - 11905: 0x8ECE, - 24173 - 11905: 0x8ECF, - 24174 - 11905: 0x8ED0, - 24175 - 11905: 0x8ED1, - 24176 - 11905: 0x8ED2, - 24177 - 11905: 0x8ED3, - 24178 - 11905: 0xB8C9, - 24179 - 11905: 0xC6BD, - 24180 - 11905: 0xC4EA, - 24181 - 11905: 0x8ED4, - 24182 - 11905: 0xB2A2, - 24183 - 11905: 0x8ED5, - 24184 - 11905: 0xD0D2, - 24185 - 11905: 0x8ED6, - 24186 - 11905: 0xE7DB, - 24187 - 11905: 0xBBC3, - 24188 - 11905: 0xD3D7, - 24189 - 11905: 0xD3C4, - 24190 - 11905: 0x8ED7, - 24191 - 11905: 0xB9E3, - 24192 - 11905: 0xE2CF, - 24193 - 11905: 0x8ED8, - 24194 - 11905: 0x8ED9, - 24195 - 11905: 0x8EDA, - 24196 - 11905: 0xD7AF, - 24197 - 11905: 0x8EDB, - 24198 - 11905: 0xC7EC, - 24199 - 11905: 0xB1D3, - 24200 - 11905: 0x8EDC, - 24201 - 11905: 0x8EDD, - 24202 - 11905: 0xB4B2, - 24203 - 11905: 0xE2D1, - 24204 - 11905: 0x8EDE, - 24205 - 11905: 0x8EDF, - 24206 - 11905: 0x8EE0, - 24207 - 11905: 0xD0F2, - 24208 - 11905: 0xC2AE, - 24209 - 11905: 0xE2D0, - 24210 - 11905: 0x8EE1, - 24211 - 11905: 0xBFE2, - 24212 - 11905: 0xD3A6, - 24213 - 11905: 0xB5D7, - 24214 - 11905: 0xE2D2, - 24215 - 11905: 0xB5EA, - 24216 - 11905: 0x8EE2, - 24217 - 11905: 0xC3ED, - 24218 - 11905: 0xB8FD, - 24219 - 11905: 0x8EE3, - 24220 - 11905: 0xB8AE, - 24221 - 11905: 0x8EE4, - 24222 - 11905: 0xC5D3, - 24223 - 11905: 0xB7CF, - 24224 - 11905: 0xE2D4, - 24225 - 11905: 0x8EE5, - 24226 - 11905: 0x8EE6, - 24227 - 11905: 0x8EE7, - 24228 - 11905: 0x8EE8, - 24229 - 11905: 0xE2D3, - 24230 - 11905: 0xB6C8, - 24231 - 11905: 0xD7F9, - 24232 - 11905: 0x8EE9, - 24233 - 11905: 0x8EEA, - 24234 - 11905: 0x8EEB, - 24235 - 11905: 0x8EEC, - 24236 - 11905: 0x8EED, - 24237 - 11905: 0xCDA5, - 24238 - 11905: 0x8EEE, - 24239 - 11905: 0x8EEF, - 24240 - 11905: 0x8EF0, - 24241 - 11905: 0x8EF1, - 24242 - 11905: 0x8EF2, - 24243 - 11905: 0xE2D8, - 24244 - 11905: 0x8EF3, - 24245 - 11905: 0xE2D6, - 24246 - 11905: 0xCAFC, - 24247 - 11905: 0xBFB5, - 24248 - 11905: 0xD3B9, - 24249 - 11905: 0xE2D5, - 24250 - 11905: 0x8EF4, - 24251 - 11905: 0x8EF5, - 24252 - 11905: 0x8EF6, - 24253 - 11905: 0x8EF7, - 24254 - 11905: 0xE2D7, - 24255 - 11905: 0x8EF8, - 24256 - 11905: 0x8EF9, - 24257 - 11905: 0x8EFA, - 24258 - 11905: 0x8EFB, - 24259 - 11905: 0x8EFC, - 24260 - 11905: 0x8EFD, - 24261 - 11905: 0x8EFE, - 24262 - 11905: 0x8F40, - 24263 - 11905: 0x8F41, - 24264 - 11905: 0x8F42, - 24265 - 11905: 0xC1AE, - 24266 - 11905: 0xC0C8, - 24267 - 11905: 0x8F43, - 24268 - 11905: 0x8F44, - 24269 - 11905: 0x8F45, - 24270 - 11905: 0x8F46, - 24271 - 11905: 0x8F47, - 24272 - 11905: 0x8F48, - 24273 - 11905: 0xE2DB, - 24274 - 11905: 0xE2DA, - 24275 - 11905: 0xC0AA, - 24276 - 11905: 0x8F49, - 24277 - 11905: 0x8F4A, - 24278 - 11905: 0xC1CE, - 24279 - 11905: 0x8F4B, - 24280 - 11905: 0x8F4C, - 24281 - 11905: 0x8F4D, - 24282 - 11905: 0x8F4E, - 24283 - 11905: 0xE2DC, - 24284 - 11905: 0x8F4F, - 24285 - 11905: 0x8F50, - 24286 - 11905: 0x8F51, - 24287 - 11905: 0x8F52, - 24288 - 11905: 0x8F53, - 24289 - 11905: 0x8F54, - 24290 - 11905: 0x8F55, - 24291 - 11905: 0x8F56, - 24292 - 11905: 0x8F57, - 24293 - 11905: 0x8F58, - 24294 - 11905: 0x8F59, - 24295 - 11905: 0x8F5A, - 24296 - 11905: 0xE2DD, - 24297 - 11905: 0x8F5B, - 24298 - 11905: 0xE2DE, - 24299 - 11905: 0x8F5C, - 24300 - 11905: 0x8F5D, - 24301 - 11905: 0x8F5E, - 24302 - 11905: 0x8F5F, - 24303 - 11905: 0x8F60, - 24304 - 11905: 0x8F61, - 24305 - 11905: 0x8F62, - 24306 - 11905: 0x8F63, - 24307 - 11905: 0x8F64, - 24308 - 11905: 0xDBC8, - 24309 - 11905: 0x8F65, - 24310 - 11905: 0xD1D3, - 24311 - 11905: 0xCDA2, - 24312 - 11905: 0x8F66, - 24313 - 11905: 0x8F67, - 24314 - 11905: 0xBDA8, - 24315 - 11905: 0x8F68, - 24316 - 11905: 0x8F69, - 24317 - 11905: 0x8F6A, - 24318 - 11905: 0xDEC3, - 24319 - 11905: 0xD8A5, - 24320 - 11905: 0xBFAA, - 24321 - 11905: 0xDBCD, - 24322 - 11905: 0xD2EC, - 24323 - 11905: 0xC6FA, - 24324 - 11905: 0xC5AA, - 24325 - 11905: 0x8F6B, - 24326 - 11905: 0x8F6C, - 24327 - 11905: 0x8F6D, - 24328 - 11905: 0xDEC4, - 24329 - 11905: 0x8F6E, - 24330 - 11905: 0xB1D7, - 24331 - 11905: 0xDFAE, - 24332 - 11905: 0x8F6F, - 24333 - 11905: 0x8F70, - 24334 - 11905: 0x8F71, - 24335 - 11905: 0xCABD, - 24336 - 11905: 0x8F72, - 24337 - 11905: 0xDFB1, - 24338 - 11905: 0x8F73, - 24339 - 11905: 0xB9AD, - 24340 - 11905: 0x8F74, - 24341 - 11905: 0xD2FD, - 24342 - 11905: 0x8F75, - 24343 - 11905: 0xB8A5, - 24344 - 11905: 0xBAEB, - 24345 - 11905: 0x8F76, - 24346 - 11905: 0x8F77, - 24347 - 11905: 0xB3DA, - 24348 - 11905: 0x8F78, - 24349 - 11905: 0x8F79, - 24350 - 11905: 0x8F7A, - 24351 - 11905: 0xB5DC, - 24352 - 11905: 0xD5C5, - 24353 - 11905: 0x8F7B, - 24354 - 11905: 0x8F7C, - 24355 - 11905: 0x8F7D, - 24356 - 11905: 0x8F7E, - 24357 - 11905: 0xC3D6, - 24358 - 11905: 0xCFD2, - 24359 - 11905: 0xBBA1, - 24360 - 11905: 0x8F80, - 24361 - 11905: 0xE5F3, - 24362 - 11905: 0xE5F2, - 24363 - 11905: 0x8F81, - 24364 - 11905: 0x8F82, - 24365 - 11905: 0xE5F4, - 24366 - 11905: 0x8F83, - 24367 - 11905: 0xCDE4, - 24368 - 11905: 0x8F84, - 24369 - 11905: 0xC8F5, - 24370 - 11905: 0x8F85, - 24371 - 11905: 0x8F86, - 24372 - 11905: 0x8F87, - 24373 - 11905: 0x8F88, - 24374 - 11905: 0x8F89, - 24375 - 11905: 0x8F8A, - 24376 - 11905: 0x8F8B, - 24377 - 11905: 0xB5AF, - 24378 - 11905: 0xC7BF, - 24379 - 11905: 0x8F8C, - 24380 - 11905: 0xE5F6, - 24381 - 11905: 0x8F8D, - 24382 - 11905: 0x8F8E, - 24383 - 11905: 0x8F8F, - 24384 - 11905: 0xECB0, - 24385 - 11905: 0x8F90, - 24386 - 11905: 0x8F91, - 24387 - 11905: 0x8F92, - 24388 - 11905: 0x8F93, - 24389 - 11905: 0x8F94, - 24390 - 11905: 0x8F95, - 24391 - 11905: 0x8F96, - 24392 - 11905: 0x8F97, - 24393 - 11905: 0x8F98, - 24394 - 11905: 0x8F99, - 24395 - 11905: 0x8F9A, - 24396 - 11905: 0x8F9B, - 24397 - 11905: 0x8F9C, - 24398 - 11905: 0x8F9D, - 24399 - 11905: 0x8F9E, - 24400 - 11905: 0xE5E6, - 24401 - 11905: 0x8F9F, - 24402 - 11905: 0xB9E9, - 24403 - 11905: 0xB5B1, - 24404 - 11905: 0x8FA0, - 24405 - 11905: 0xC2BC, - 24406 - 11905: 0xE5E8, - 24407 - 11905: 0xE5E7, - 24408 - 11905: 0xE5E9, - 24409 - 11905: 0x8FA1, - 24410 - 11905: 0x8FA2, - 24411 - 11905: 0x8FA3, - 24412 - 11905: 0x8FA4, - 24413 - 11905: 0xD2CD, - 24414 - 11905: 0x8FA5, - 24415 - 11905: 0x8FA6, - 24416 - 11905: 0x8FA7, - 24417 - 11905: 0xE1EA, - 24418 - 11905: 0xD0CE, - 24419 - 11905: 0x8FA8, - 24420 - 11905: 0xCDAE, - 24421 - 11905: 0x8FA9, - 24422 - 11905: 0xD1E5, - 24423 - 11905: 0x8FAA, - 24424 - 11905: 0x8FAB, - 24425 - 11905: 0xB2CA, - 24426 - 11905: 0xB1EB, - 24427 - 11905: 0x8FAC, - 24428 - 11905: 0xB1F2, - 24429 - 11905: 0xC5ED, - 24430 - 11905: 0x8FAD, - 24431 - 11905: 0x8FAE, - 24432 - 11905: 0xD5C3, - 24433 - 11905: 0xD3B0, - 24434 - 11905: 0x8FAF, - 24435 - 11905: 0xE1DC, - 24436 - 11905: 0x8FB0, - 24437 - 11905: 0x8FB1, - 24438 - 11905: 0x8FB2, - 24439 - 11905: 0xE1DD, - 24440 - 11905: 0x8FB3, - 24441 - 11905: 0xD2DB, - 24442 - 11905: 0x8FB4, - 24443 - 11905: 0xB3B9, - 24444 - 11905: 0xB1CB, - 24445 - 11905: 0x8FB5, - 24446 - 11905: 0x8FB6, - 24447 - 11905: 0x8FB7, - 24448 - 11905: 0xCDF9, - 24449 - 11905: 0xD5F7, - 24450 - 11905: 0xE1DE, - 24451 - 11905: 0x8FB8, - 24452 - 11905: 0xBEB6, - 24453 - 11905: 0xB4FD, - 24454 - 11905: 0x8FB9, - 24455 - 11905: 0xE1DF, - 24456 - 11905: 0xBADC, - 24457 - 11905: 0xE1E0, - 24458 - 11905: 0xBBB2, - 24459 - 11905: 0xC2C9, - 24460 - 11905: 0xE1E1, - 24461 - 11905: 0x8FBA, - 24462 - 11905: 0x8FBB, - 24463 - 11905: 0x8FBC, - 24464 - 11905: 0xD0EC, - 24465 - 11905: 0x8FBD, - 24466 - 11905: 0xCDBD, - 24467 - 11905: 0x8FBE, - 24468 - 11905: 0x8FBF, - 24469 - 11905: 0xE1E2, - 24470 - 11905: 0x8FC0, - 24471 - 11905: 0xB5C3, - 24472 - 11905: 0xC5C7, - 24473 - 11905: 0xE1E3, - 24474 - 11905: 0x8FC1, - 24475 - 11905: 0x8FC2, - 24476 - 11905: 0xE1E4, - 24477 - 11905: 0x8FC3, - 24478 - 11905: 0x8FC4, - 24479 - 11905: 0x8FC5, - 24480 - 11905: 0x8FC6, - 24481 - 11905: 0xD3F9, - 24482 - 11905: 0x8FC7, - 24483 - 11905: 0x8FC8, - 24484 - 11905: 0x8FC9, - 24485 - 11905: 0x8FCA, - 24486 - 11905: 0x8FCB, - 24487 - 11905: 0x8FCC, - 24488 - 11905: 0xE1E5, - 24489 - 11905: 0x8FCD, - 24490 - 11905: 0xD1AD, - 24491 - 11905: 0x8FCE, - 24492 - 11905: 0x8FCF, - 24493 - 11905: 0xE1E6, - 24494 - 11905: 0xCEA2, - 24495 - 11905: 0x8FD0, - 24496 - 11905: 0x8FD1, - 24497 - 11905: 0x8FD2, - 24498 - 11905: 0x8FD3, - 24499 - 11905: 0x8FD4, - 24500 - 11905: 0x8FD5, - 24501 - 11905: 0xE1E7, - 24502 - 11905: 0x8FD6, - 24503 - 11905: 0xB5C2, - 24504 - 11905: 0x8FD7, - 24505 - 11905: 0x8FD8, - 24506 - 11905: 0x8FD9, - 24507 - 11905: 0x8FDA, - 24508 - 11905: 0xE1E8, - 24509 - 11905: 0xBBD5, - 24510 - 11905: 0x8FDB, - 24511 - 11905: 0x8FDC, - 24512 - 11905: 0x8FDD, - 24513 - 11905: 0x8FDE, - 24514 - 11905: 0x8FDF, - 24515 - 11905: 0xD0C4, - 24516 - 11905: 0xE2E0, - 24517 - 11905: 0xB1D8, - 24518 - 11905: 0xD2E4, - 24519 - 11905: 0x8FE0, - 24520 - 11905: 0x8FE1, - 24521 - 11905: 0xE2E1, - 24522 - 11905: 0x8FE2, - 24523 - 11905: 0x8FE3, - 24524 - 11905: 0xBCC9, - 24525 - 11905: 0xC8CC, - 24526 - 11905: 0x8FE4, - 24527 - 11905: 0xE2E3, - 24528 - 11905: 0xECFE, - 24529 - 11905: 0xECFD, - 24530 - 11905: 0xDFAF, - 24531 - 11905: 0x8FE5, - 24532 - 11905: 0x8FE6, - 24533 - 11905: 0x8FE7, - 24534 - 11905: 0xE2E2, - 24535 - 11905: 0xD6BE, - 24536 - 11905: 0xCDFC, - 24537 - 11905: 0xC3A6, - 24538 - 11905: 0x8FE8, - 24539 - 11905: 0x8FE9, - 24540 - 11905: 0x8FEA, - 24541 - 11905: 0xE3C3, - 24542 - 11905: 0x8FEB, - 24543 - 11905: 0x8FEC, - 24544 - 11905: 0xD6D2, - 24545 - 11905: 0xE2E7, - 24546 - 11905: 0x8FED, - 24547 - 11905: 0x8FEE, - 24548 - 11905: 0xE2E8, - 24549 - 11905: 0x8FEF, - 24550 - 11905: 0x8FF0, - 24551 - 11905: 0xD3C7, - 24552 - 11905: 0x8FF1, - 24553 - 11905: 0x8FF2, - 24554 - 11905: 0xE2EC, - 24555 - 11905: 0xBFEC, - 24556 - 11905: 0x8FF3, - 24557 - 11905: 0xE2ED, - 24558 - 11905: 0xE2E5, - 24559 - 11905: 0x8FF4, - 24560 - 11905: 0x8FF5, - 24561 - 11905: 0xB3C0, - 24562 - 11905: 0x8FF6, - 24563 - 11905: 0x8FF7, - 24564 - 11905: 0x8FF8, - 24565 - 11905: 0xC4EE, - 24566 - 11905: 0x8FF9, - 24567 - 11905: 0x8FFA, - 24568 - 11905: 0xE2EE, - 24569 - 11905: 0x8FFB, - 24570 - 11905: 0x8FFC, - 24571 - 11905: 0xD0C3, - 24572 - 11905: 0x8FFD, - 24573 - 11905: 0xBAF6, - 24574 - 11905: 0xE2E9, - 24575 - 11905: 0xB7DE, - 24576 - 11905: 0xBBB3, - 24577 - 11905: 0xCCAC, - 24578 - 11905: 0xCBCB, - 24579 - 11905: 0xE2E4, - 24580 - 11905: 0xE2E6, - 24581 - 11905: 0xE2EA, - 24582 - 11905: 0xE2EB, - 24583 - 11905: 0x8FFE, - 24584 - 11905: 0x9040, - 24585 - 11905: 0x9041, - 24586 - 11905: 0xE2F7, - 24587 - 11905: 0x9042, - 24588 - 11905: 0x9043, - 24589 - 11905: 0xE2F4, - 24590 - 11905: 0xD4F5, - 24591 - 11905: 0xE2F3, - 24592 - 11905: 0x9044, - 24593 - 11905: 0x9045, - 24594 - 11905: 0xC5AD, - 24595 - 11905: 0x9046, - 24596 - 11905: 0xD5FA, - 24597 - 11905: 0xC5C2, - 24598 - 11905: 0xB2C0, - 24599 - 11905: 0x9047, - 24600 - 11905: 0x9048, - 24601 - 11905: 0xE2EF, - 24602 - 11905: 0x9049, - 24603 - 11905: 0xE2F2, - 24604 - 11905: 0xC1AF, - 24605 - 11905: 0xCBBC, - 24606 - 11905: 0x904A, - 24607 - 11905: 0x904B, - 24608 - 11905: 0xB5A1, - 24609 - 11905: 0xE2F9, - 24610 - 11905: 0x904C, - 24611 - 11905: 0x904D, - 24612 - 11905: 0x904E, - 24613 - 11905: 0xBCB1, - 24614 - 11905: 0xE2F1, - 24615 - 11905: 0xD0D4, - 24616 - 11905: 0xD4B9, - 24617 - 11905: 0xE2F5, - 24618 - 11905: 0xB9D6, - 24619 - 11905: 0xE2F6, - 24620 - 11905: 0x904F, - 24621 - 11905: 0x9050, - 24622 - 11905: 0x9051, - 24623 - 11905: 0xC7D3, - 24624 - 11905: 0x9052, - 24625 - 11905: 0x9053, - 24626 - 11905: 0x9054, - 24627 - 11905: 0x9055, - 24628 - 11905: 0x9056, - 24629 - 11905: 0xE2F0, - 24630 - 11905: 0x9057, - 24631 - 11905: 0x9058, - 24632 - 11905: 0x9059, - 24633 - 11905: 0x905A, - 24634 - 11905: 0x905B, - 24635 - 11905: 0xD7DC, - 24636 - 11905: 0xEDA1, - 24637 - 11905: 0x905C, - 24638 - 11905: 0x905D, - 24639 - 11905: 0xE2F8, - 24640 - 11905: 0x905E, - 24641 - 11905: 0xEDA5, - 24642 - 11905: 0xE2FE, - 24643 - 11905: 0xCAD1, - 24644 - 11905: 0x905F, - 24645 - 11905: 0x9060, - 24646 - 11905: 0x9061, - 24647 - 11905: 0x9062, - 24648 - 11905: 0x9063, - 24649 - 11905: 0x9064, - 24650 - 11905: 0x9065, - 24651 - 11905: 0xC1B5, - 24652 - 11905: 0x9066, - 24653 - 11905: 0xBBD0, - 24654 - 11905: 0x9067, - 24655 - 11905: 0x9068, - 24656 - 11905: 0xBFD6, - 24657 - 11905: 0x9069, - 24658 - 11905: 0xBAE3, - 24659 - 11905: 0x906A, - 24660 - 11905: 0x906B, - 24661 - 11905: 0xCBA1, - 24662 - 11905: 0x906C, - 24663 - 11905: 0x906D, - 24664 - 11905: 0x906E, - 24665 - 11905: 0xEDA6, - 24666 - 11905: 0xEDA3, - 24667 - 11905: 0x906F, - 24668 - 11905: 0x9070, - 24669 - 11905: 0xEDA2, - 24670 - 11905: 0x9071, - 24671 - 11905: 0x9072, - 24672 - 11905: 0x9073, - 24673 - 11905: 0x9074, - 24674 - 11905: 0xBBD6, - 24675 - 11905: 0xEDA7, - 24676 - 11905: 0xD0F4, - 24677 - 11905: 0x9075, - 24678 - 11905: 0x9076, - 24679 - 11905: 0xEDA4, - 24680 - 11905: 0xBADE, - 24681 - 11905: 0xB6F7, - 24682 - 11905: 0xE3A1, - 24683 - 11905: 0xB6B2, - 24684 - 11905: 0xCCF1, - 24685 - 11905: 0xB9A7, - 24686 - 11905: 0x9077, - 24687 - 11905: 0xCFA2, - 24688 - 11905: 0xC7A1, - 24689 - 11905: 0x9078, - 24690 - 11905: 0x9079, - 24691 - 11905: 0xBFD2, - 24692 - 11905: 0x907A, - 24693 - 11905: 0x907B, - 24694 - 11905: 0xB6F1, - 24695 - 11905: 0x907C, - 24696 - 11905: 0xE2FA, - 24697 - 11905: 0xE2FB, - 24698 - 11905: 0xE2FD, - 24699 - 11905: 0xE2FC, - 24700 - 11905: 0xC4D5, - 24701 - 11905: 0xE3A2, - 24702 - 11905: 0x907D, - 24703 - 11905: 0xD3C1, - 24704 - 11905: 0x907E, - 24705 - 11905: 0x9080, - 24706 - 11905: 0x9081, - 24707 - 11905: 0xE3A7, - 24708 - 11905: 0xC7C4, - 24709 - 11905: 0x9082, - 24710 - 11905: 0x9083, - 24711 - 11905: 0x9084, - 24712 - 11905: 0x9085, - 24713 - 11905: 0xCFA4, - 24714 - 11905: 0x9086, - 24715 - 11905: 0x9087, - 24716 - 11905: 0xE3A9, - 24717 - 11905: 0xBAB7, - 24718 - 11905: 0x9088, - 24719 - 11905: 0x9089, - 24720 - 11905: 0x908A, - 24721 - 11905: 0x908B, - 24722 - 11905: 0xE3A8, - 24723 - 11905: 0x908C, - 24724 - 11905: 0xBBDA, - 24725 - 11905: 0x908D, - 24726 - 11905: 0xE3A3, - 24727 - 11905: 0x908E, - 24728 - 11905: 0x908F, - 24729 - 11905: 0x9090, - 24730 - 11905: 0xE3A4, - 24731 - 11905: 0xE3AA, - 24732 - 11905: 0x9091, - 24733 - 11905: 0xE3A6, - 24734 - 11905: 0x9092, - 24735 - 11905: 0xCEF2, - 24736 - 11905: 0xD3C6, - 24737 - 11905: 0x9093, - 24738 - 11905: 0x9094, - 24739 - 11905: 0xBBBC, - 24740 - 11905: 0x9095, - 24741 - 11905: 0x9096, - 24742 - 11905: 0xD4C3, - 24743 - 11905: 0x9097, - 24744 - 11905: 0xC4FA, - 24745 - 11905: 0x9098, - 24746 - 11905: 0x9099, - 24747 - 11905: 0xEDA8, - 24748 - 11905: 0xD0FC, - 24749 - 11905: 0xE3A5, - 24750 - 11905: 0x909A, - 24751 - 11905: 0xC3F5, - 24752 - 11905: 0x909B, - 24753 - 11905: 0xE3AD, - 24754 - 11905: 0xB1AF, - 24755 - 11905: 0x909C, - 24756 - 11905: 0xE3B2, - 24757 - 11905: 0x909D, - 24758 - 11905: 0x909E, - 24759 - 11905: 0x909F, - 24760 - 11905: 0xBCC2, - 24761 - 11905: 0x90A0, - 24762 - 11905: 0x90A1, - 24763 - 11905: 0xE3AC, - 24764 - 11905: 0xB5BF, - 24765 - 11905: 0x90A2, - 24766 - 11905: 0x90A3, - 24767 - 11905: 0x90A4, - 24768 - 11905: 0x90A5, - 24769 - 11905: 0x90A6, - 24770 - 11905: 0x90A7, - 24771 - 11905: 0x90A8, - 24772 - 11905: 0x90A9, - 24773 - 11905: 0xC7E9, - 24774 - 11905: 0xE3B0, - 24775 - 11905: 0x90AA, - 24776 - 11905: 0x90AB, - 24777 - 11905: 0x90AC, - 24778 - 11905: 0xBEAA, - 24779 - 11905: 0xCDEF, - 24780 - 11905: 0x90AD, - 24781 - 11905: 0x90AE, - 24782 - 11905: 0x90AF, - 24783 - 11905: 0x90B0, - 24784 - 11905: 0x90B1, - 24785 - 11905: 0xBBF3, - 24786 - 11905: 0x90B2, - 24787 - 11905: 0x90B3, - 24788 - 11905: 0x90B4, - 24789 - 11905: 0xCCE8, - 24790 - 11905: 0x90B5, - 24791 - 11905: 0x90B6, - 24792 - 11905: 0xE3AF, - 24793 - 11905: 0x90B7, - 24794 - 11905: 0xE3B1, - 24795 - 11905: 0x90B8, - 24796 - 11905: 0xCFA7, - 24797 - 11905: 0xE3AE, - 24798 - 11905: 0x90B9, - 24799 - 11905: 0xCEA9, - 24800 - 11905: 0xBBDD, - 24801 - 11905: 0x90BA, - 24802 - 11905: 0x90BB, - 24803 - 11905: 0x90BC, - 24804 - 11905: 0x90BD, - 24805 - 11905: 0x90BE, - 24806 - 11905: 0xB5EB, - 24807 - 11905: 0xBEE5, - 24808 - 11905: 0xB2D2, - 24809 - 11905: 0xB3CD, - 24810 - 11905: 0x90BF, - 24811 - 11905: 0xB1B9, - 24812 - 11905: 0xE3AB, - 24813 - 11905: 0xB2D1, - 24814 - 11905: 0xB5AC, - 24815 - 11905: 0xB9DF, - 24816 - 11905: 0xB6E8, - 24817 - 11905: 0x90C0, - 24818 - 11905: 0x90C1, - 24819 - 11905: 0xCFEB, - 24820 - 11905: 0xE3B7, - 24821 - 11905: 0x90C2, - 24822 - 11905: 0xBBCC, - 24823 - 11905: 0x90C3, - 24824 - 11905: 0x90C4, - 24825 - 11905: 0xC8C7, - 24826 - 11905: 0xD0CA, - 24827 - 11905: 0x90C5, - 24828 - 11905: 0x90C6, - 24829 - 11905: 0x90C7, - 24830 - 11905: 0x90C8, - 24831 - 11905: 0x90C9, - 24832 - 11905: 0xE3B8, - 24833 - 11905: 0xB3EE, - 24834 - 11905: 0x90CA, - 24835 - 11905: 0x90CB, - 24836 - 11905: 0x90CC, - 24837 - 11905: 0x90CD, - 24838 - 11905: 0xEDA9, - 24839 - 11905: 0x90CE, - 24840 - 11905: 0xD3FA, - 24841 - 11905: 0xD3E4, - 24842 - 11905: 0x90CF, - 24843 - 11905: 0x90D0, - 24844 - 11905: 0x90D1, - 24845 - 11905: 0xEDAA, - 24846 - 11905: 0xE3B9, - 24847 - 11905: 0xD2E2, - 24848 - 11905: 0x90D2, - 24849 - 11905: 0x90D3, - 24850 - 11905: 0x90D4, - 24851 - 11905: 0x90D5, - 24852 - 11905: 0x90D6, - 24853 - 11905: 0xE3B5, - 24854 - 11905: 0x90D7, - 24855 - 11905: 0x90D8, - 24856 - 11905: 0x90D9, - 24857 - 11905: 0x90DA, - 24858 - 11905: 0xD3DE, - 24859 - 11905: 0x90DB, - 24860 - 11905: 0x90DC, - 24861 - 11905: 0x90DD, - 24862 - 11905: 0x90DE, - 24863 - 11905: 0xB8D0, - 24864 - 11905: 0xE3B3, - 24865 - 11905: 0x90DF, - 24866 - 11905: 0x90E0, - 24867 - 11905: 0xE3B6, - 24868 - 11905: 0xB7DF, - 24869 - 11905: 0x90E1, - 24870 - 11905: 0xE3B4, - 24871 - 11905: 0xC0A2, - 24872 - 11905: 0x90E2, - 24873 - 11905: 0x90E3, - 24874 - 11905: 0x90E4, - 24875 - 11905: 0xE3BA, - 24876 - 11905: 0x90E5, - 24877 - 11905: 0x90E6, - 24878 - 11905: 0x90E7, - 24879 - 11905: 0x90E8, - 24880 - 11905: 0x90E9, - 24881 - 11905: 0x90EA, - 24882 - 11905: 0x90EB, - 24883 - 11905: 0x90EC, - 24884 - 11905: 0x90ED, - 24885 - 11905: 0x90EE, - 24886 - 11905: 0x90EF, - 24887 - 11905: 0x90F0, - 24888 - 11905: 0x90F1, - 24889 - 11905: 0x90F2, - 24890 - 11905: 0x90F3, - 24891 - 11905: 0x90F4, - 24892 - 11905: 0x90F5, - 24893 - 11905: 0x90F6, - 24894 - 11905: 0x90F7, - 24895 - 11905: 0xD4B8, - 24896 - 11905: 0x90F8, - 24897 - 11905: 0x90F9, - 24898 - 11905: 0x90FA, - 24899 - 11905: 0x90FB, - 24900 - 11905: 0x90FC, - 24901 - 11905: 0x90FD, - 24902 - 11905: 0x90FE, - 24903 - 11905: 0x9140, - 24904 - 11905: 0xB4C8, - 24905 - 11905: 0x9141, - 24906 - 11905: 0xE3BB, - 24907 - 11905: 0x9142, - 24908 - 11905: 0xBBC5, - 24909 - 11905: 0x9143, - 24910 - 11905: 0xC9F7, - 24911 - 11905: 0x9144, - 24912 - 11905: 0x9145, - 24913 - 11905: 0xC9E5, - 24914 - 11905: 0x9146, - 24915 - 11905: 0x9147, - 24916 - 11905: 0x9148, - 24917 - 11905: 0xC4BD, - 24918 - 11905: 0x9149, - 24919 - 11905: 0x914A, - 24920 - 11905: 0x914B, - 24921 - 11905: 0x914C, - 24922 - 11905: 0x914D, - 24923 - 11905: 0x914E, - 24924 - 11905: 0x914F, - 24925 - 11905: 0xEDAB, - 24926 - 11905: 0x9150, - 24927 - 11905: 0x9151, - 24928 - 11905: 0x9152, - 24929 - 11905: 0x9153, - 24930 - 11905: 0xC2FD, - 24931 - 11905: 0x9154, - 24932 - 11905: 0x9155, - 24933 - 11905: 0x9156, - 24934 - 11905: 0x9157, - 24935 - 11905: 0xBBDB, - 24936 - 11905: 0xBFAE, - 24937 - 11905: 0x9158, - 24938 - 11905: 0x9159, - 24939 - 11905: 0x915A, - 24940 - 11905: 0x915B, - 24941 - 11905: 0x915C, - 24942 - 11905: 0x915D, - 24943 - 11905: 0x915E, - 24944 - 11905: 0xCEBF, - 24945 - 11905: 0x915F, - 24946 - 11905: 0x9160, - 24947 - 11905: 0x9161, - 24948 - 11905: 0x9162, - 24949 - 11905: 0xE3BC, - 24950 - 11905: 0x9163, - 24951 - 11905: 0xBFB6, - 24952 - 11905: 0x9164, - 24953 - 11905: 0x9165, - 24954 - 11905: 0x9166, - 24955 - 11905: 0x9167, - 24956 - 11905: 0x9168, - 24957 - 11905: 0x9169, - 24958 - 11905: 0x916A, - 24959 - 11905: 0x916B, - 24960 - 11905: 0x916C, - 24961 - 11905: 0x916D, - 24962 - 11905: 0x916E, - 24963 - 11905: 0x916F, - 24964 - 11905: 0x9170, - 24965 - 11905: 0x9171, - 24966 - 11905: 0x9172, - 24967 - 11905: 0x9173, - 24968 - 11905: 0x9174, - 24969 - 11905: 0x9175, - 24970 - 11905: 0x9176, - 24971 - 11905: 0xB1EF, - 24972 - 11905: 0x9177, - 24973 - 11905: 0x9178, - 24974 - 11905: 0xD4F7, - 24975 - 11905: 0x9179, - 24976 - 11905: 0x917A, - 24977 - 11905: 0x917B, - 24978 - 11905: 0x917C, - 24979 - 11905: 0x917D, - 24980 - 11905: 0xE3BE, - 24981 - 11905: 0x917E, - 24982 - 11905: 0x9180, - 24983 - 11905: 0x9181, - 24984 - 11905: 0x9182, - 24985 - 11905: 0x9183, - 24986 - 11905: 0x9184, - 24987 - 11905: 0x9185, - 24988 - 11905: 0x9186, - 24989 - 11905: 0xEDAD, - 24990 - 11905: 0x9187, - 24991 - 11905: 0x9188, - 24992 - 11905: 0x9189, - 24993 - 11905: 0x918A, - 24994 - 11905: 0x918B, - 24995 - 11905: 0x918C, - 24996 - 11905: 0x918D, - 24997 - 11905: 0x918E, - 24998 - 11905: 0x918F, - 24999 - 11905: 0xE3BF, - 25000 - 11905: 0xBAA9, - 25001 - 11905: 0xEDAC, - 25002 - 11905: 0x9190, - 25003 - 11905: 0x9191, - 25004 - 11905: 0xE3BD, - 25005 - 11905: 0x9192, - 25006 - 11905: 0x9193, - 25007 - 11905: 0x9194, - 25008 - 11905: 0x9195, - 25009 - 11905: 0x9196, - 25010 - 11905: 0x9197, - 25011 - 11905: 0x9198, - 25012 - 11905: 0x9199, - 25013 - 11905: 0x919A, - 25014 - 11905: 0x919B, - 25015 - 11905: 0xE3C0, - 25016 - 11905: 0x919C, - 25017 - 11905: 0x919D, - 25018 - 11905: 0x919E, - 25019 - 11905: 0x919F, - 25020 - 11905: 0x91A0, - 25021 - 11905: 0x91A1, - 25022 - 11905: 0xBAB6, - 25023 - 11905: 0x91A2, - 25024 - 11905: 0x91A3, - 25025 - 11905: 0x91A4, - 25026 - 11905: 0xB6AE, - 25027 - 11905: 0x91A5, - 25028 - 11905: 0x91A6, - 25029 - 11905: 0x91A7, - 25030 - 11905: 0x91A8, - 25031 - 11905: 0x91A9, - 25032 - 11905: 0xD0B8, - 25033 - 11905: 0x91AA, - 25034 - 11905: 0xB0C3, - 25035 - 11905: 0xEDAE, - 25036 - 11905: 0x91AB, - 25037 - 11905: 0x91AC, - 25038 - 11905: 0x91AD, - 25039 - 11905: 0x91AE, - 25040 - 11905: 0x91AF, - 25041 - 11905: 0xEDAF, - 25042 - 11905: 0xC0C1, - 25043 - 11905: 0x91B0, - 25044 - 11905: 0xE3C1, - 25045 - 11905: 0x91B1, - 25046 - 11905: 0x91B2, - 25047 - 11905: 0x91B3, - 25048 - 11905: 0x91B4, - 25049 - 11905: 0x91B5, - 25050 - 11905: 0x91B6, - 25051 - 11905: 0x91B7, - 25052 - 11905: 0x91B8, - 25053 - 11905: 0x91B9, - 25054 - 11905: 0x91BA, - 25055 - 11905: 0x91BB, - 25056 - 11905: 0x91BC, - 25057 - 11905: 0x91BD, - 25058 - 11905: 0x91BE, - 25059 - 11905: 0x91BF, - 25060 - 11905: 0x91C0, - 25061 - 11905: 0x91C1, - 25062 - 11905: 0xC5B3, - 25063 - 11905: 0x91C2, - 25064 - 11905: 0x91C3, - 25065 - 11905: 0x91C4, - 25066 - 11905: 0x91C5, - 25067 - 11905: 0x91C6, - 25068 - 11905: 0x91C7, - 25069 - 11905: 0x91C8, - 25070 - 11905: 0x91C9, - 25071 - 11905: 0x91CA, - 25072 - 11905: 0x91CB, - 25073 - 11905: 0x91CC, - 25074 - 11905: 0x91CD, - 25075 - 11905: 0x91CE, - 25076 - 11905: 0x91CF, - 25077 - 11905: 0xE3C2, - 25078 - 11905: 0x91D0, - 25079 - 11905: 0x91D1, - 25080 - 11905: 0x91D2, - 25081 - 11905: 0x91D3, - 25082 - 11905: 0x91D4, - 25083 - 11905: 0x91D5, - 25084 - 11905: 0x91D6, - 25085 - 11905: 0x91D7, - 25086 - 11905: 0x91D8, - 25087 - 11905: 0xDCB2, - 25088 - 11905: 0x91D9, - 25089 - 11905: 0x91DA, - 25090 - 11905: 0x91DB, - 25091 - 11905: 0x91DC, - 25092 - 11905: 0x91DD, - 25093 - 11905: 0x91DE, - 25094 - 11905: 0xEDB0, - 25095 - 11905: 0x91DF, - 25096 - 11905: 0xB8EA, - 25097 - 11905: 0x91E0, - 25098 - 11905: 0xCEEC, - 25099 - 11905: 0xEAA7, - 25100 - 11905: 0xD0E7, - 25101 - 11905: 0xCAF9, - 25102 - 11905: 0xC8D6, - 25103 - 11905: 0xCFB7, - 25104 - 11905: 0xB3C9, - 25105 - 11905: 0xCED2, - 25106 - 11905: 0xBDE4, - 25107 - 11905: 0x91E1, - 25108 - 11905: 0x91E2, - 25109 - 11905: 0xE3DE, - 25110 - 11905: 0xBBF2, - 25111 - 11905: 0xEAA8, - 25112 - 11905: 0xD5BD, - 25113 - 11905: 0x91E3, - 25114 - 11905: 0xC6DD, - 25115 - 11905: 0xEAA9, - 25116 - 11905: 0x91E4, - 25117 - 11905: 0x91E5, - 25118 - 11905: 0x91E6, - 25119 - 11905: 0xEAAA, - 25120 - 11905: 0x91E7, - 25121 - 11905: 0xEAAC, - 25122 - 11905: 0xEAAB, - 25123 - 11905: 0x91E8, - 25124 - 11905: 0xEAAE, - 25125 - 11905: 0xEAAD, - 25126 - 11905: 0x91E9, - 25127 - 11905: 0x91EA, - 25128 - 11905: 0x91EB, - 25129 - 11905: 0x91EC, - 25130 - 11905: 0xBDD8, - 25131 - 11905: 0x91ED, - 25132 - 11905: 0xEAAF, - 25133 - 11905: 0x91EE, - 25134 - 11905: 0xC2BE, - 25135 - 11905: 0x91EF, - 25136 - 11905: 0x91F0, - 25137 - 11905: 0x91F1, - 25138 - 11905: 0x91F2, - 25139 - 11905: 0xB4C1, - 25140 - 11905: 0xB4F7, - 25141 - 11905: 0x91F3, - 25142 - 11905: 0x91F4, - 25143 - 11905: 0xBBA7, - 25144 - 11905: 0x91F5, - 25145 - 11905: 0x91F6, - 25146 - 11905: 0x91F7, - 25147 - 11905: 0x91F8, - 25148 - 11905: 0x91F9, - 25149 - 11905: 0xECE6, - 25150 - 11905: 0xECE5, - 25151 - 11905: 0xB7BF, - 25152 - 11905: 0xCBF9, - 25153 - 11905: 0xB1E2, - 25154 - 11905: 0x91FA, - 25155 - 11905: 0xECE7, - 25156 - 11905: 0x91FB, - 25157 - 11905: 0x91FC, - 25158 - 11905: 0x91FD, - 25159 - 11905: 0xC9C8, - 25160 - 11905: 0xECE8, - 25161 - 11905: 0xECE9, - 25162 - 11905: 0x91FE, - 25163 - 11905: 0xCAD6, - 25164 - 11905: 0xDED0, - 25165 - 11905: 0xB2C5, - 25166 - 11905: 0xD4FA, - 25167 - 11905: 0x9240, - 25168 - 11905: 0x9241, - 25169 - 11905: 0xC6CB, - 25170 - 11905: 0xB0C7, - 25171 - 11905: 0xB4F2, - 25172 - 11905: 0xC8D3, - 25173 - 11905: 0x9242, - 25174 - 11905: 0x9243, - 25175 - 11905: 0x9244, - 25176 - 11905: 0xCDD0, - 25177 - 11905: 0x9245, - 25178 - 11905: 0x9246, - 25179 - 11905: 0xBFB8, - 25180 - 11905: 0x9247, - 25181 - 11905: 0x9248, - 25182 - 11905: 0x9249, - 25183 - 11905: 0x924A, - 25184 - 11905: 0x924B, - 25185 - 11905: 0x924C, - 25186 - 11905: 0x924D, - 25187 - 11905: 0xBFDB, - 25188 - 11905: 0x924E, - 25189 - 11905: 0x924F, - 25190 - 11905: 0xC7A4, - 25191 - 11905: 0xD6B4, - 25192 - 11905: 0x9250, - 25193 - 11905: 0xC0A9, - 25194 - 11905: 0xDED1, - 25195 - 11905: 0xC9A8, - 25196 - 11905: 0xD1EF, - 25197 - 11905: 0xC5A4, - 25198 - 11905: 0xB0E7, - 25199 - 11905: 0xB3B6, - 25200 - 11905: 0xC8C5, - 25201 - 11905: 0x9251, - 25202 - 11905: 0x9252, - 25203 - 11905: 0xB0E2, - 25204 - 11905: 0x9253, - 25205 - 11905: 0x9254, - 25206 - 11905: 0xB7F6, - 25207 - 11905: 0x9255, - 25208 - 11905: 0x9256, - 25209 - 11905: 0xC5FA, - 25210 - 11905: 0x9257, - 25211 - 11905: 0x9258, - 25212 - 11905: 0xB6F3, - 25213 - 11905: 0x9259, - 25214 - 11905: 0xD5D2, - 25215 - 11905: 0xB3D0, - 25216 - 11905: 0xBCBC, - 25217 - 11905: 0x925A, - 25218 - 11905: 0x925B, - 25219 - 11905: 0x925C, - 25220 - 11905: 0xB3AD, - 25221 - 11905: 0x925D, - 25222 - 11905: 0x925E, - 25223 - 11905: 0x925F, - 25224 - 11905: 0x9260, - 25225 - 11905: 0xBEF1, - 25226 - 11905: 0xB0D1, - 25227 - 11905: 0x9261, - 25228 - 11905: 0x9262, - 25229 - 11905: 0x9263, - 25230 - 11905: 0x9264, - 25231 - 11905: 0x9265, - 25232 - 11905: 0x9266, - 25233 - 11905: 0xD2D6, - 25234 - 11905: 0xCAE3, - 25235 - 11905: 0xD7A5, - 25236 - 11905: 0x9267, - 25237 - 11905: 0xCDB6, - 25238 - 11905: 0xB6B6, - 25239 - 11905: 0xBFB9, - 25240 - 11905: 0xD5DB, - 25241 - 11905: 0x9268, - 25242 - 11905: 0xB8A7, - 25243 - 11905: 0xC5D7, - 25244 - 11905: 0x9269, - 25245 - 11905: 0x926A, - 25246 - 11905: 0x926B, - 25247 - 11905: 0xDED2, - 25248 - 11905: 0xBFD9, - 25249 - 11905: 0xC2D5, - 25250 - 11905: 0xC7C0, - 25251 - 11905: 0x926C, - 25252 - 11905: 0xBBA4, - 25253 - 11905: 0xB1A8, - 25254 - 11905: 0x926D, - 25255 - 11905: 0x926E, - 25256 - 11905: 0xC5EA, - 25257 - 11905: 0x926F, - 25258 - 11905: 0x9270, - 25259 - 11905: 0xC5FB, - 25260 - 11905: 0xCCA7, - 25261 - 11905: 0x9271, - 25262 - 11905: 0x9272, - 25263 - 11905: 0x9273, - 25264 - 11905: 0x9274, - 25265 - 11905: 0xB1A7, - 25266 - 11905: 0x9275, - 25267 - 11905: 0x9276, - 25268 - 11905: 0x9277, - 25269 - 11905: 0xB5D6, - 25270 - 11905: 0x9278, - 25271 - 11905: 0x9279, - 25272 - 11905: 0x927A, - 25273 - 11905: 0xC4A8, - 25274 - 11905: 0x927B, - 25275 - 11905: 0xDED3, - 25276 - 11905: 0xD1BA, - 25277 - 11905: 0xB3E9, - 25278 - 11905: 0x927C, - 25279 - 11905: 0xC3F2, - 25280 - 11905: 0x927D, - 25281 - 11905: 0x927E, - 25282 - 11905: 0xB7F7, - 25283 - 11905: 0x9280, - 25284 - 11905: 0xD6F4, - 25285 - 11905: 0xB5A3, - 25286 - 11905: 0xB2F0, - 25287 - 11905: 0xC4B4, - 25288 - 11905: 0xC4E9, - 25289 - 11905: 0xC0AD, - 25290 - 11905: 0xDED4, - 25291 - 11905: 0x9281, - 25292 - 11905: 0xB0E8, - 25293 - 11905: 0xC5C4, - 25294 - 11905: 0xC1E0, - 25295 - 11905: 0x9282, - 25296 - 11905: 0xB9D5, - 25297 - 11905: 0x9283, - 25298 - 11905: 0xBEDC, - 25299 - 11905: 0xCDD8, - 25300 - 11905: 0xB0CE, - 25301 - 11905: 0x9284, - 25302 - 11905: 0xCDCF, - 25303 - 11905: 0xDED6, - 25304 - 11905: 0xBED0, - 25305 - 11905: 0xD7BE, - 25306 - 11905: 0xDED5, - 25307 - 11905: 0xD5D0, - 25308 - 11905: 0xB0DD, - 25309 - 11905: 0x9285, - 25310 - 11905: 0x9286, - 25311 - 11905: 0xC4E2, - 25312 - 11905: 0x9287, - 25313 - 11905: 0x9288, - 25314 - 11905: 0xC2A3, - 25315 - 11905: 0xBCF0, - 25316 - 11905: 0x9289, - 25317 - 11905: 0xD3B5, - 25318 - 11905: 0xC0B9, - 25319 - 11905: 0xC5A1, - 25320 - 11905: 0xB2A6, - 25321 - 11905: 0xD4F1, - 25322 - 11905: 0x928A, - 25323 - 11905: 0x928B, - 25324 - 11905: 0xC0A8, - 25325 - 11905: 0xCAC3, - 25326 - 11905: 0xDED7, - 25327 - 11905: 0xD5FC, - 25328 - 11905: 0x928C, - 25329 - 11905: 0xB9B0, - 25330 - 11905: 0x928D, - 25331 - 11905: 0xC8AD, - 25332 - 11905: 0xCBA9, - 25333 - 11905: 0x928E, - 25334 - 11905: 0xDED9, - 25335 - 11905: 0xBFBD, - 25336 - 11905: 0x928F, - 25337 - 11905: 0x9290, - 25338 - 11905: 0x9291, - 25339 - 11905: 0x9292, - 25340 - 11905: 0xC6B4, - 25341 - 11905: 0xD7A7, - 25342 - 11905: 0xCAB0, - 25343 - 11905: 0xC4C3, - 25344 - 11905: 0x9293, - 25345 - 11905: 0xB3D6, - 25346 - 11905: 0xB9D2, - 25347 - 11905: 0x9294, - 25348 - 11905: 0x9295, - 25349 - 11905: 0x9296, - 25350 - 11905: 0x9297, - 25351 - 11905: 0xD6B8, - 25352 - 11905: 0xEAFC, - 25353 - 11905: 0xB0B4, - 25354 - 11905: 0x9298, - 25355 - 11905: 0x9299, - 25356 - 11905: 0x929A, - 25357 - 11905: 0x929B, - 25358 - 11905: 0xBFE6, - 25359 - 11905: 0x929C, - 25360 - 11905: 0x929D, - 25361 - 11905: 0xCCF4, - 25362 - 11905: 0x929E, - 25363 - 11905: 0x929F, - 25364 - 11905: 0x92A0, - 25365 - 11905: 0x92A1, - 25366 - 11905: 0xCDDA, - 25367 - 11905: 0x92A2, - 25368 - 11905: 0x92A3, - 25369 - 11905: 0x92A4, - 25370 - 11905: 0xD6BF, - 25371 - 11905: 0xC2CE, - 25372 - 11905: 0x92A5, - 25373 - 11905: 0xCECE, - 25374 - 11905: 0xCCA2, - 25375 - 11905: 0xD0AE, - 25376 - 11905: 0xC4D3, - 25377 - 11905: 0xB5B2, - 25378 - 11905: 0xDED8, - 25379 - 11905: 0xD5F5, - 25380 - 11905: 0xBCB7, - 25381 - 11905: 0xBBD3, - 25382 - 11905: 0x92A6, - 25383 - 11905: 0x92A7, - 25384 - 11905: 0xB0A4, - 25385 - 11905: 0x92A8, - 25386 - 11905: 0xC5B2, - 25387 - 11905: 0xB4EC, - 25388 - 11905: 0x92A9, - 25389 - 11905: 0x92AA, - 25390 - 11905: 0x92AB, - 25391 - 11905: 0xD5F1, - 25392 - 11905: 0x92AC, - 25393 - 11905: 0x92AD, - 25394 - 11905: 0xEAFD, - 25395 - 11905: 0x92AE, - 25396 - 11905: 0x92AF, - 25397 - 11905: 0x92B0, - 25398 - 11905: 0x92B1, - 25399 - 11905: 0x92B2, - 25400 - 11905: 0x92B3, - 25401 - 11905: 0xDEDA, - 25402 - 11905: 0xCDA6, - 25403 - 11905: 0x92B4, - 25404 - 11905: 0x92B5, - 25405 - 11905: 0xCDEC, - 25406 - 11905: 0x92B6, - 25407 - 11905: 0x92B7, - 25408 - 11905: 0x92B8, - 25409 - 11905: 0x92B9, - 25410 - 11905: 0xCEE6, - 25411 - 11905: 0xDEDC, - 25412 - 11905: 0x92BA, - 25413 - 11905: 0xCDB1, - 25414 - 11905: 0xC0A6, - 25415 - 11905: 0x92BB, - 25416 - 11905: 0x92BC, - 25417 - 11905: 0xD7BD, - 25418 - 11905: 0x92BD, - 25419 - 11905: 0xDEDB, - 25420 - 11905: 0xB0C6, - 25421 - 11905: 0xBAB4, - 25422 - 11905: 0xC9D3, - 25423 - 11905: 0xC4F3, - 25424 - 11905: 0xBEE8, - 25425 - 11905: 0x92BE, - 25426 - 11905: 0x92BF, - 25427 - 11905: 0x92C0, - 25428 - 11905: 0x92C1, - 25429 - 11905: 0xB2B6, - 25430 - 11905: 0x92C2, - 25431 - 11905: 0x92C3, - 25432 - 11905: 0x92C4, - 25433 - 11905: 0x92C5, - 25434 - 11905: 0x92C6, - 25435 - 11905: 0x92C7, - 25436 - 11905: 0x92C8, - 25437 - 11905: 0x92C9, - 25438 - 11905: 0xC0CC, - 25439 - 11905: 0xCBF0, - 25440 - 11905: 0x92CA, - 25441 - 11905: 0xBCF1, - 25442 - 11905: 0xBBBB, - 25443 - 11905: 0xB5B7, - 25444 - 11905: 0x92CB, - 25445 - 11905: 0x92CC, - 25446 - 11905: 0x92CD, - 25447 - 11905: 0xC5F5, - 25448 - 11905: 0x92CE, - 25449 - 11905: 0xDEE6, - 25450 - 11905: 0x92CF, - 25451 - 11905: 0x92D0, - 25452 - 11905: 0x92D1, - 25453 - 11905: 0xDEE3, - 25454 - 11905: 0xBEDD, - 25455 - 11905: 0x92D2, - 25456 - 11905: 0x92D3, - 25457 - 11905: 0xDEDF, - 25458 - 11905: 0x92D4, - 25459 - 11905: 0x92D5, - 25460 - 11905: 0x92D6, - 25461 - 11905: 0x92D7, - 25462 - 11905: 0xB4B7, - 25463 - 11905: 0xBDDD, - 25464 - 11905: 0x92D8, - 25465 - 11905: 0x92D9, - 25466 - 11905: 0xDEE0, - 25467 - 11905: 0xC4ED, - 25468 - 11905: 0x92DA, - 25469 - 11905: 0x92DB, - 25470 - 11905: 0x92DC, - 25471 - 11905: 0x92DD, - 25472 - 11905: 0xCFC6, - 25473 - 11905: 0x92DE, - 25474 - 11905: 0xB5E0, - 25475 - 11905: 0x92DF, - 25476 - 11905: 0x92E0, - 25477 - 11905: 0x92E1, - 25478 - 11905: 0x92E2, - 25479 - 11905: 0xB6DE, - 25480 - 11905: 0xCADA, - 25481 - 11905: 0xB5F4, - 25482 - 11905: 0xDEE5, - 25483 - 11905: 0x92E3, - 25484 - 11905: 0xD5C6, - 25485 - 11905: 0x92E4, - 25486 - 11905: 0xDEE1, - 25487 - 11905: 0xCCCD, - 25488 - 11905: 0xC6FE, - 25489 - 11905: 0x92E5, - 25490 - 11905: 0xC5C5, - 25491 - 11905: 0x92E6, - 25492 - 11905: 0x92E7, - 25493 - 11905: 0x92E8, - 25494 - 11905: 0xD2B4, - 25495 - 11905: 0x92E9, - 25496 - 11905: 0xBEF2, - 25497 - 11905: 0x92EA, - 25498 - 11905: 0x92EB, - 25499 - 11905: 0x92EC, - 25500 - 11905: 0x92ED, - 25501 - 11905: 0x92EE, - 25502 - 11905: 0x92EF, - 25503 - 11905: 0x92F0, - 25504 - 11905: 0xC2D3, - 25505 - 11905: 0x92F1, - 25506 - 11905: 0xCCBD, - 25507 - 11905: 0xB3B8, - 25508 - 11905: 0x92F2, - 25509 - 11905: 0xBDD3, - 25510 - 11905: 0x92F3, - 25511 - 11905: 0xBFD8, - 25512 - 11905: 0xCDC6, - 25513 - 11905: 0xD1DA, - 25514 - 11905: 0xB4EB, - 25515 - 11905: 0x92F4, - 25516 - 11905: 0xDEE4, - 25517 - 11905: 0xDEDD, - 25518 - 11905: 0xDEE7, - 25519 - 11905: 0x92F5, - 25520 - 11905: 0xEAFE, - 25521 - 11905: 0x92F6, - 25522 - 11905: 0x92F7, - 25523 - 11905: 0xC2B0, - 25524 - 11905: 0xDEE2, - 25525 - 11905: 0x92F8, - 25526 - 11905: 0x92F9, - 25527 - 11905: 0xD6C0, - 25528 - 11905: 0xB5A7, - 25529 - 11905: 0x92FA, - 25530 - 11905: 0xB2F4, - 25531 - 11905: 0x92FB, - 25532 - 11905: 0xDEE8, - 25533 - 11905: 0x92FC, - 25534 - 11905: 0xDEF2, - 25535 - 11905: 0x92FD, - 25536 - 11905: 0x92FE, - 25537 - 11905: 0x9340, - 25538 - 11905: 0x9341, - 25539 - 11905: 0x9342, - 25540 - 11905: 0xDEED, - 25541 - 11905: 0x9343, - 25542 - 11905: 0xDEF1, - 25543 - 11905: 0x9344, - 25544 - 11905: 0x9345, - 25545 - 11905: 0xC8E0, - 25546 - 11905: 0x9346, - 25547 - 11905: 0x9347, - 25548 - 11905: 0x9348, - 25549 - 11905: 0xD7E1, - 25550 - 11905: 0xDEEF, - 25551 - 11905: 0xC3E8, - 25552 - 11905: 0xCCE1, - 25553 - 11905: 0x9349, - 25554 - 11905: 0xB2E5, - 25555 - 11905: 0x934A, - 25556 - 11905: 0x934B, - 25557 - 11905: 0x934C, - 25558 - 11905: 0xD2BE, - 25559 - 11905: 0x934D, - 25560 - 11905: 0x934E, - 25561 - 11905: 0x934F, - 25562 - 11905: 0x9350, - 25563 - 11905: 0x9351, - 25564 - 11905: 0x9352, - 25565 - 11905: 0x9353, - 25566 - 11905: 0xDEEE, - 25567 - 11905: 0x9354, - 25568 - 11905: 0xDEEB, - 25569 - 11905: 0xCED5, - 25570 - 11905: 0x9355, - 25571 - 11905: 0xB4A7, - 25572 - 11905: 0x9356, - 25573 - 11905: 0x9357, - 25574 - 11905: 0x9358, - 25575 - 11905: 0x9359, - 25576 - 11905: 0x935A, - 25577 - 11905: 0xBFAB, - 25578 - 11905: 0xBEBE, - 25579 - 11905: 0x935B, - 25580 - 11905: 0x935C, - 25581 - 11905: 0xBDD2, - 25582 - 11905: 0x935D, - 25583 - 11905: 0x935E, - 25584 - 11905: 0x935F, - 25585 - 11905: 0x9360, - 25586 - 11905: 0xDEE9, - 25587 - 11905: 0x9361, - 25588 - 11905: 0xD4AE, - 25589 - 11905: 0x9362, - 25590 - 11905: 0xDEDE, - 25591 - 11905: 0x9363, - 25592 - 11905: 0xDEEA, - 25593 - 11905: 0x9364, - 25594 - 11905: 0x9365, - 25595 - 11905: 0x9366, - 25596 - 11905: 0x9367, - 25597 - 11905: 0xC0BF, - 25598 - 11905: 0x9368, - 25599 - 11905: 0xDEEC, - 25600 - 11905: 0xB2F3, - 25601 - 11905: 0xB8E9, - 25602 - 11905: 0xC2A7, - 25603 - 11905: 0x9369, - 25604 - 11905: 0x936A, - 25605 - 11905: 0xBDC1, - 25606 - 11905: 0x936B, - 25607 - 11905: 0x936C, - 25608 - 11905: 0x936D, - 25609 - 11905: 0x936E, - 25610 - 11905: 0x936F, - 25611 - 11905: 0xDEF5, - 25612 - 11905: 0xDEF8, - 25613 - 11905: 0x9370, - 25614 - 11905: 0x9371, - 25615 - 11905: 0xB2AB, - 25616 - 11905: 0xB4A4, - 25617 - 11905: 0x9372, - 25618 - 11905: 0x9373, - 25619 - 11905: 0xB4EA, - 25620 - 11905: 0xC9A6, - 25621 - 11905: 0x9374, - 25622 - 11905: 0x9375, - 25623 - 11905: 0x9376, - 25624 - 11905: 0x9377, - 25625 - 11905: 0x9378, - 25626 - 11905: 0x9379, - 25627 - 11905: 0xDEF6, - 25628 - 11905: 0xCBD1, - 25629 - 11905: 0x937A, - 25630 - 11905: 0xB8E3, - 25631 - 11905: 0x937B, - 25632 - 11905: 0xDEF7, - 25633 - 11905: 0xDEFA, - 25634 - 11905: 0x937C, - 25635 - 11905: 0x937D, - 25636 - 11905: 0x937E, - 25637 - 11905: 0x9380, - 25638 - 11905: 0xDEF9, - 25639 - 11905: 0x9381, - 25640 - 11905: 0x9382, - 25641 - 11905: 0x9383, - 25642 - 11905: 0xCCC2, - 25643 - 11905: 0x9384, - 25644 - 11905: 0xB0E1, - 25645 - 11905: 0xB4EE, - 25646 - 11905: 0x9385, - 25647 - 11905: 0x9386, - 25648 - 11905: 0x9387, - 25649 - 11905: 0x9388, - 25650 - 11905: 0x9389, - 25651 - 11905: 0x938A, - 25652 - 11905: 0xE5BA, - 25653 - 11905: 0x938B, - 25654 - 11905: 0x938C, - 25655 - 11905: 0x938D, - 25656 - 11905: 0x938E, - 25657 - 11905: 0x938F, - 25658 - 11905: 0xD0AF, - 25659 - 11905: 0x9390, - 25660 - 11905: 0x9391, - 25661 - 11905: 0xB2EB, - 25662 - 11905: 0x9392, - 25663 - 11905: 0xEBA1, - 25664 - 11905: 0x9393, - 25665 - 11905: 0xDEF4, - 25666 - 11905: 0x9394, - 25667 - 11905: 0x9395, - 25668 - 11905: 0xC9E3, - 25669 - 11905: 0xDEF3, - 25670 - 11905: 0xB0DA, - 25671 - 11905: 0xD2A1, - 25672 - 11905: 0xB1F7, - 25673 - 11905: 0x9396, - 25674 - 11905: 0xCCAF, - 25675 - 11905: 0x9397, - 25676 - 11905: 0x9398, - 25677 - 11905: 0x9399, - 25678 - 11905: 0x939A, - 25679 - 11905: 0x939B, - 25680 - 11905: 0x939C, - 25681 - 11905: 0x939D, - 25682 - 11905: 0xDEF0, - 25683 - 11905: 0x939E, - 25684 - 11905: 0xCBA4, - 25685 - 11905: 0x939F, - 25686 - 11905: 0x93A0, - 25687 - 11905: 0x93A1, - 25688 - 11905: 0xD5AA, - 25689 - 11905: 0x93A2, - 25690 - 11905: 0x93A3, - 25691 - 11905: 0x93A4, - 25692 - 11905: 0x93A5, - 25693 - 11905: 0x93A6, - 25694 - 11905: 0xDEFB, - 25695 - 11905: 0x93A7, - 25696 - 11905: 0x93A8, - 25697 - 11905: 0x93A9, - 25698 - 11905: 0x93AA, - 25699 - 11905: 0x93AB, - 25700 - 11905: 0x93AC, - 25701 - 11905: 0x93AD, - 25702 - 11905: 0x93AE, - 25703 - 11905: 0xB4DD, - 25704 - 11905: 0x93AF, - 25705 - 11905: 0xC4A6, - 25706 - 11905: 0x93B0, - 25707 - 11905: 0x93B1, - 25708 - 11905: 0x93B2, - 25709 - 11905: 0xDEFD, - 25710 - 11905: 0x93B3, - 25711 - 11905: 0x93B4, - 25712 - 11905: 0x93B5, - 25713 - 11905: 0x93B6, - 25714 - 11905: 0x93B7, - 25715 - 11905: 0x93B8, - 25716 - 11905: 0x93B9, - 25717 - 11905: 0x93BA, - 25718 - 11905: 0x93BB, - 25719 - 11905: 0x93BC, - 25720 - 11905: 0xC3FE, - 25721 - 11905: 0xC4A1, - 25722 - 11905: 0xDFA1, - 25723 - 11905: 0x93BD, - 25724 - 11905: 0x93BE, - 25725 - 11905: 0x93BF, - 25726 - 11905: 0x93C0, - 25727 - 11905: 0x93C1, - 25728 - 11905: 0x93C2, - 25729 - 11905: 0x93C3, - 25730 - 11905: 0xC1CC, - 25731 - 11905: 0x93C4, - 25732 - 11905: 0xDEFC, - 25733 - 11905: 0xBEEF, - 25734 - 11905: 0x93C5, - 25735 - 11905: 0xC6B2, - 25736 - 11905: 0x93C6, - 25737 - 11905: 0x93C7, - 25738 - 11905: 0x93C8, - 25739 - 11905: 0x93C9, - 25740 - 11905: 0x93CA, - 25741 - 11905: 0x93CB, - 25742 - 11905: 0x93CC, - 25743 - 11905: 0x93CD, - 25744 - 11905: 0x93CE, - 25745 - 11905: 0xB3C5, - 25746 - 11905: 0xC8F6, - 25747 - 11905: 0x93CF, - 25748 - 11905: 0x93D0, - 25749 - 11905: 0xCBBA, - 25750 - 11905: 0xDEFE, - 25751 - 11905: 0x93D1, - 25752 - 11905: 0x93D2, - 25753 - 11905: 0xDFA4, - 25754 - 11905: 0x93D3, - 25755 - 11905: 0x93D4, - 25756 - 11905: 0x93D5, - 25757 - 11905: 0x93D6, - 25758 - 11905: 0xD7B2, - 25759 - 11905: 0x93D7, - 25760 - 11905: 0x93D8, - 25761 - 11905: 0x93D9, - 25762 - 11905: 0x93DA, - 25763 - 11905: 0x93DB, - 25764 - 11905: 0xB3B7, - 25765 - 11905: 0x93DC, - 25766 - 11905: 0x93DD, - 25767 - 11905: 0x93DE, - 25768 - 11905: 0x93DF, - 25769 - 11905: 0xC1C3, - 25770 - 11905: 0x93E0, - 25771 - 11905: 0x93E1, - 25772 - 11905: 0xC7CB, - 25773 - 11905: 0xB2A5, - 25774 - 11905: 0xB4E9, - 25775 - 11905: 0x93E2, - 25776 - 11905: 0xD7AB, - 25777 - 11905: 0x93E3, - 25778 - 11905: 0x93E4, - 25779 - 11905: 0x93E5, - 25780 - 11905: 0x93E6, - 25781 - 11905: 0xC4EC, - 25782 - 11905: 0x93E7, - 25783 - 11905: 0xDFA2, - 25784 - 11905: 0xDFA3, - 25785 - 11905: 0x93E8, - 25786 - 11905: 0xDFA5, - 25787 - 11905: 0x93E9, - 25788 - 11905: 0xBAB3, - 25789 - 11905: 0x93EA, - 25790 - 11905: 0x93EB, - 25791 - 11905: 0x93EC, - 25792 - 11905: 0xDFA6, - 25793 - 11905: 0x93ED, - 25794 - 11905: 0xC0DE, - 25795 - 11905: 0x93EE, - 25796 - 11905: 0x93EF, - 25797 - 11905: 0xC9C3, - 25798 - 11905: 0x93F0, - 25799 - 11905: 0x93F1, - 25800 - 11905: 0x93F2, - 25801 - 11905: 0x93F3, - 25802 - 11905: 0x93F4, - 25803 - 11905: 0x93F5, - 25804 - 11905: 0x93F6, - 25805 - 11905: 0xB2D9, - 25806 - 11905: 0xC7E6, - 25807 - 11905: 0x93F7, - 25808 - 11905: 0xDFA7, - 25809 - 11905: 0x93F8, - 25810 - 11905: 0xC7DC, - 25811 - 11905: 0x93F9, - 25812 - 11905: 0x93FA, - 25813 - 11905: 0x93FB, - 25814 - 11905: 0x93FC, - 25815 - 11905: 0xDFA8, - 25816 - 11905: 0xEBA2, - 25817 - 11905: 0x93FD, - 25818 - 11905: 0x93FE, - 25819 - 11905: 0x9440, - 25820 - 11905: 0x9441, - 25821 - 11905: 0x9442, - 25822 - 11905: 0xCBD3, - 25823 - 11905: 0x9443, - 25824 - 11905: 0x9444, - 25825 - 11905: 0x9445, - 25826 - 11905: 0xDFAA, - 25827 - 11905: 0x9446, - 25828 - 11905: 0xDFA9, - 25829 - 11905: 0x9447, - 25830 - 11905: 0xB2C1, - 25831 - 11905: 0x9448, - 25832 - 11905: 0x9449, - 25833 - 11905: 0x944A, - 25834 - 11905: 0x944B, - 25835 - 11905: 0x944C, - 25836 - 11905: 0x944D, - 25837 - 11905: 0x944E, - 25838 - 11905: 0x944F, - 25839 - 11905: 0x9450, - 25840 - 11905: 0x9451, - 25841 - 11905: 0x9452, - 25842 - 11905: 0x9453, - 25843 - 11905: 0x9454, - 25844 - 11905: 0x9455, - 25845 - 11905: 0x9456, - 25846 - 11905: 0x9457, - 25847 - 11905: 0x9458, - 25848 - 11905: 0x9459, - 25849 - 11905: 0x945A, - 25850 - 11905: 0x945B, - 25851 - 11905: 0x945C, - 25852 - 11905: 0x945D, - 25853 - 11905: 0x945E, - 25854 - 11905: 0x945F, - 25855 - 11905: 0x9460, - 25856 - 11905: 0xC5CA, - 25857 - 11905: 0x9461, - 25858 - 11905: 0x9462, - 25859 - 11905: 0x9463, - 25860 - 11905: 0x9464, - 25861 - 11905: 0x9465, - 25862 - 11905: 0x9466, - 25863 - 11905: 0x9467, - 25864 - 11905: 0x9468, - 25865 - 11905: 0xDFAB, - 25866 - 11905: 0x9469, - 25867 - 11905: 0x946A, - 25868 - 11905: 0x946B, - 25869 - 11905: 0x946C, - 25870 - 11905: 0x946D, - 25871 - 11905: 0x946E, - 25872 - 11905: 0x946F, - 25873 - 11905: 0x9470, - 25874 - 11905: 0xD4DC, - 25875 - 11905: 0x9471, - 25876 - 11905: 0x9472, - 25877 - 11905: 0x9473, - 25878 - 11905: 0x9474, - 25879 - 11905: 0x9475, - 25880 - 11905: 0xC8C1, - 25881 - 11905: 0x9476, - 25882 - 11905: 0x9477, - 25883 - 11905: 0x9478, - 25884 - 11905: 0x9479, - 25885 - 11905: 0x947A, - 25886 - 11905: 0x947B, - 25887 - 11905: 0x947C, - 25888 - 11905: 0x947D, - 25889 - 11905: 0x947E, - 25890 - 11905: 0x9480, - 25891 - 11905: 0x9481, - 25892 - 11905: 0x9482, - 25893 - 11905: 0xDFAC, - 25894 - 11905: 0x9483, - 25895 - 11905: 0x9484, - 25896 - 11905: 0x9485, - 25897 - 11905: 0x9486, - 25898 - 11905: 0x9487, - 25899 - 11905: 0xBEF0, - 25900 - 11905: 0x9488, - 25901 - 11905: 0x9489, - 25902 - 11905: 0xDFAD, - 25903 - 11905: 0xD6A7, - 25904 - 11905: 0x948A, - 25905 - 11905: 0x948B, - 25906 - 11905: 0x948C, - 25907 - 11905: 0x948D, - 25908 - 11905: 0xEAB7, - 25909 - 11905: 0xEBB6, - 25910 - 11905: 0xCAD5, - 25911 - 11905: 0x948E, - 25912 - 11905: 0xD8FC, - 25913 - 11905: 0xB8C4, - 25914 - 11905: 0x948F, - 25915 - 11905: 0xB9A5, - 25916 - 11905: 0x9490, - 25917 - 11905: 0x9491, - 25918 - 11905: 0xB7C5, - 25919 - 11905: 0xD5FE, - 25920 - 11905: 0x9492, - 25921 - 11905: 0x9493, - 25922 - 11905: 0x9494, - 25923 - 11905: 0x9495, - 25924 - 11905: 0x9496, - 25925 - 11905: 0xB9CA, - 25926 - 11905: 0x9497, - 25927 - 11905: 0x9498, - 25928 - 11905: 0xD0A7, - 25929 - 11905: 0xF4CD, - 25930 - 11905: 0x9499, - 25931 - 11905: 0x949A, - 25932 - 11905: 0xB5D0, - 25933 - 11905: 0x949B, - 25934 - 11905: 0x949C, - 25935 - 11905: 0xC3F4, - 25936 - 11905: 0x949D, - 25937 - 11905: 0xBEC8, - 25938 - 11905: 0x949E, - 25939 - 11905: 0x949F, - 25940 - 11905: 0x94A0, - 25941 - 11905: 0xEBB7, - 25942 - 11905: 0xB0BD, - 25943 - 11905: 0x94A1, - 25944 - 11905: 0x94A2, - 25945 - 11905: 0xBDCC, - 25946 - 11905: 0x94A3, - 25947 - 11905: 0xC1B2, - 25948 - 11905: 0x94A4, - 25949 - 11905: 0xB1D6, - 25950 - 11905: 0xB3A8, - 25951 - 11905: 0x94A5, - 25952 - 11905: 0x94A6, - 25953 - 11905: 0x94A7, - 25954 - 11905: 0xB8D2, - 25955 - 11905: 0xC9A2, - 25956 - 11905: 0x94A8, - 25957 - 11905: 0x94A9, - 25958 - 11905: 0xB6D8, - 25959 - 11905: 0x94AA, - 25960 - 11905: 0x94AB, - 25961 - 11905: 0x94AC, - 25962 - 11905: 0x94AD, - 25963 - 11905: 0xEBB8, - 25964 - 11905: 0xBEB4, - 25965 - 11905: 0x94AE, - 25966 - 11905: 0x94AF, - 25967 - 11905: 0x94B0, - 25968 - 11905: 0xCAFD, - 25969 - 11905: 0x94B1, - 25970 - 11905: 0xC7C3, - 25971 - 11905: 0x94B2, - 25972 - 11905: 0xD5FB, - 25973 - 11905: 0x94B3, - 25974 - 11905: 0x94B4, - 25975 - 11905: 0xB7F3, - 25976 - 11905: 0x94B5, - 25977 - 11905: 0x94B6, - 25978 - 11905: 0x94B7, - 25979 - 11905: 0x94B8, - 25980 - 11905: 0x94B9, - 25981 - 11905: 0x94BA, - 25982 - 11905: 0x94BB, - 25983 - 11905: 0x94BC, - 25984 - 11905: 0x94BD, - 25985 - 11905: 0x94BE, - 25986 - 11905: 0x94BF, - 25987 - 11905: 0x94C0, - 25988 - 11905: 0x94C1, - 25989 - 11905: 0x94C2, - 25990 - 11905: 0x94C3, - 25991 - 11905: 0xCEC4, - 25992 - 11905: 0x94C4, - 25993 - 11905: 0x94C5, - 25994 - 11905: 0x94C6, - 25995 - 11905: 0xD5AB, - 25996 - 11905: 0xB1F3, - 25997 - 11905: 0x94C7, - 25998 - 11905: 0x94C8, - 25999 - 11905: 0x94C9, - 26000 - 11905: 0xECB3, - 26001 - 11905: 0xB0DF, - 26002 - 11905: 0x94CA, - 26003 - 11905: 0xECB5, - 26004 - 11905: 0x94CB, - 26005 - 11905: 0x94CC, - 26006 - 11905: 0x94CD, - 26007 - 11905: 0xB6B7, - 26008 - 11905: 0x94CE, - 26009 - 11905: 0xC1CF, - 26010 - 11905: 0x94CF, - 26011 - 11905: 0xF5FA, - 26012 - 11905: 0xD0B1, - 26013 - 11905: 0x94D0, - 26014 - 11905: 0x94D1, - 26015 - 11905: 0xD5E5, - 26016 - 11905: 0x94D2, - 26017 - 11905: 0xCED3, - 26018 - 11905: 0x94D3, - 26019 - 11905: 0x94D4, - 26020 - 11905: 0xBDEF, - 26021 - 11905: 0xB3E2, - 26022 - 11905: 0x94D5, - 26023 - 11905: 0xB8AB, - 26024 - 11905: 0x94D6, - 26025 - 11905: 0xD5B6, - 26026 - 11905: 0x94D7, - 26027 - 11905: 0xEDBD, - 26028 - 11905: 0x94D8, - 26029 - 11905: 0xB6CF, - 26030 - 11905: 0x94D9, - 26031 - 11905: 0xCBB9, - 26032 - 11905: 0xD0C2, - 26033 - 11905: 0x94DA, - 26034 - 11905: 0x94DB, - 26035 - 11905: 0x94DC, - 26036 - 11905: 0x94DD, - 26037 - 11905: 0x94DE, - 26038 - 11905: 0x94DF, - 26039 - 11905: 0x94E0, - 26040 - 11905: 0x94E1, - 26041 - 11905: 0xB7BD, - 26042 - 11905: 0x94E2, - 26043 - 11905: 0x94E3, - 26044 - 11905: 0xECB6, - 26045 - 11905: 0xCAA9, - 26046 - 11905: 0x94E4, - 26047 - 11905: 0x94E5, - 26048 - 11905: 0x94E6, - 26049 - 11905: 0xC5D4, - 26050 - 11905: 0x94E7, - 26051 - 11905: 0xECB9, - 26052 - 11905: 0xECB8, - 26053 - 11905: 0xC2C3, - 26054 - 11905: 0xECB7, - 26055 - 11905: 0x94E8, - 26056 - 11905: 0x94E9, - 26057 - 11905: 0x94EA, - 26058 - 11905: 0x94EB, - 26059 - 11905: 0xD0FD, - 26060 - 11905: 0xECBA, - 26061 - 11905: 0x94EC, - 26062 - 11905: 0xECBB, - 26063 - 11905: 0xD7E5, - 26064 - 11905: 0x94ED, - 26065 - 11905: 0x94EE, - 26066 - 11905: 0xECBC, - 26067 - 11905: 0x94EF, - 26068 - 11905: 0x94F0, - 26069 - 11905: 0x94F1, - 26070 - 11905: 0xECBD, - 26071 - 11905: 0xC6EC, - 26072 - 11905: 0x94F2, - 26073 - 11905: 0x94F3, - 26074 - 11905: 0x94F4, - 26075 - 11905: 0x94F5, - 26076 - 11905: 0x94F6, - 26077 - 11905: 0x94F7, - 26078 - 11905: 0x94F8, - 26079 - 11905: 0x94F9, - 26080 - 11905: 0xCEDE, - 26081 - 11905: 0x94FA, - 26082 - 11905: 0xBCC8, - 26083 - 11905: 0x94FB, - 26084 - 11905: 0x94FC, - 26085 - 11905: 0xC8D5, - 26086 - 11905: 0xB5A9, - 26087 - 11905: 0xBEC9, - 26088 - 11905: 0xD6BC, - 26089 - 11905: 0xD4E7, - 26090 - 11905: 0x94FD, - 26091 - 11905: 0x94FE, - 26092 - 11905: 0xD1AE, - 26093 - 11905: 0xD0F1, - 26094 - 11905: 0xEAB8, - 26095 - 11905: 0xEAB9, - 26096 - 11905: 0xEABA, - 26097 - 11905: 0xBAB5, - 26098 - 11905: 0x9540, - 26099 - 11905: 0x9541, - 26100 - 11905: 0x9542, - 26101 - 11905: 0x9543, - 26102 - 11905: 0xCAB1, - 26103 - 11905: 0xBFF5, - 26104 - 11905: 0x9544, - 26105 - 11905: 0x9545, - 26106 - 11905: 0xCDFA, - 26107 - 11905: 0x9546, - 26108 - 11905: 0x9547, - 26109 - 11905: 0x9548, - 26110 - 11905: 0x9549, - 26111 - 11905: 0x954A, - 26112 - 11905: 0xEAC0, - 26113 - 11905: 0x954B, - 26114 - 11905: 0xB0BA, - 26115 - 11905: 0xEABE, - 26116 - 11905: 0x954C, - 26117 - 11905: 0x954D, - 26118 - 11905: 0xC0A5, - 26119 - 11905: 0x954E, - 26120 - 11905: 0x954F, - 26121 - 11905: 0x9550, - 26122 - 11905: 0xEABB, - 26123 - 11905: 0x9551, - 26124 - 11905: 0xB2FD, - 26125 - 11905: 0x9552, - 26126 - 11905: 0xC3F7, - 26127 - 11905: 0xBBE8, - 26128 - 11905: 0x9553, - 26129 - 11905: 0x9554, - 26130 - 11905: 0x9555, - 26131 - 11905: 0xD2D7, - 26132 - 11905: 0xCEF4, - 26133 - 11905: 0xEABF, - 26134 - 11905: 0x9556, - 26135 - 11905: 0x9557, - 26136 - 11905: 0x9558, - 26137 - 11905: 0xEABC, - 26138 - 11905: 0x9559, - 26139 - 11905: 0x955A, - 26140 - 11905: 0x955B, - 26141 - 11905: 0xEAC3, - 26142 - 11905: 0x955C, - 26143 - 11905: 0xD0C7, - 26144 - 11905: 0xD3B3, - 26145 - 11905: 0x955D, - 26146 - 11905: 0x955E, - 26147 - 11905: 0x955F, - 26148 - 11905: 0x9560, - 26149 - 11905: 0xB4BA, - 26150 - 11905: 0x9561, - 26151 - 11905: 0xC3C1, - 26152 - 11905: 0xD7F2, - 26153 - 11905: 0x9562, - 26154 - 11905: 0x9563, - 26155 - 11905: 0x9564, - 26156 - 11905: 0x9565, - 26157 - 11905: 0xD5D1, - 26158 - 11905: 0x9566, - 26159 - 11905: 0xCAC7, - 26160 - 11905: 0x9567, - 26161 - 11905: 0xEAC5, - 26162 - 11905: 0x9568, - 26163 - 11905: 0x9569, - 26164 - 11905: 0xEAC4, - 26165 - 11905: 0xEAC7, - 26166 - 11905: 0xEAC6, - 26167 - 11905: 0x956A, - 26168 - 11905: 0x956B, - 26169 - 11905: 0x956C, - 26170 - 11905: 0x956D, - 26171 - 11905: 0x956E, - 26172 - 11905: 0xD6E7, - 26173 - 11905: 0x956F, - 26174 - 11905: 0xCFD4, - 26175 - 11905: 0x9570, - 26176 - 11905: 0x9571, - 26177 - 11905: 0xEACB, - 26178 - 11905: 0x9572, - 26179 - 11905: 0xBBCE, - 26180 - 11905: 0x9573, - 26181 - 11905: 0x9574, - 26182 - 11905: 0x9575, - 26183 - 11905: 0x9576, - 26184 - 11905: 0x9577, - 26185 - 11905: 0x9578, - 26186 - 11905: 0x9579, - 26187 - 11905: 0xBDFA, - 26188 - 11905: 0xC9CE, - 26189 - 11905: 0x957A, - 26190 - 11905: 0x957B, - 26191 - 11905: 0xEACC, - 26192 - 11905: 0x957C, - 26193 - 11905: 0x957D, - 26194 - 11905: 0xC9B9, - 26195 - 11905: 0xCFFE, - 26196 - 11905: 0xEACA, - 26197 - 11905: 0xD4CE, - 26198 - 11905: 0xEACD, - 26199 - 11905: 0xEACF, - 26200 - 11905: 0x957E, - 26201 - 11905: 0x9580, - 26202 - 11905: 0xCDED, - 26203 - 11905: 0x9581, - 26204 - 11905: 0x9582, - 26205 - 11905: 0x9583, - 26206 - 11905: 0x9584, - 26207 - 11905: 0xEAC9, - 26208 - 11905: 0x9585, - 26209 - 11905: 0xEACE, - 26210 - 11905: 0x9586, - 26211 - 11905: 0x9587, - 26212 - 11905: 0xCEEE, - 26213 - 11905: 0x9588, - 26214 - 11905: 0xBBDE, - 26215 - 11905: 0x9589, - 26216 - 11905: 0xB3BF, - 26217 - 11905: 0x958A, - 26218 - 11905: 0x958B, - 26219 - 11905: 0x958C, - 26220 - 11905: 0x958D, - 26221 - 11905: 0x958E, - 26222 - 11905: 0xC6D5, - 26223 - 11905: 0xBEB0, - 26224 - 11905: 0xCEFA, - 26225 - 11905: 0x958F, - 26226 - 11905: 0x9590, - 26227 - 11905: 0x9591, - 26228 - 11905: 0xC7E7, - 26229 - 11905: 0x9592, - 26230 - 11905: 0xBEA7, - 26231 - 11905: 0xEAD0, - 26232 - 11905: 0x9593, - 26233 - 11905: 0x9594, - 26234 - 11905: 0xD6C7, - 26235 - 11905: 0x9595, - 26236 - 11905: 0x9596, - 26237 - 11905: 0x9597, - 26238 - 11905: 0xC1C0, - 26239 - 11905: 0x9598, - 26240 - 11905: 0x9599, - 26241 - 11905: 0x959A, - 26242 - 11905: 0xD4DD, - 26243 - 11905: 0x959B, - 26244 - 11905: 0xEAD1, - 26245 - 11905: 0x959C, - 26246 - 11905: 0x959D, - 26247 - 11905: 0xCFBE, - 26248 - 11905: 0x959E, - 26249 - 11905: 0x959F, - 26250 - 11905: 0x95A0, - 26251 - 11905: 0x95A1, - 26252 - 11905: 0xEAD2, - 26253 - 11905: 0x95A2, - 26254 - 11905: 0x95A3, - 26255 - 11905: 0x95A4, - 26256 - 11905: 0x95A5, - 26257 - 11905: 0xCAEE, - 26258 - 11905: 0x95A6, - 26259 - 11905: 0x95A7, - 26260 - 11905: 0x95A8, - 26261 - 11905: 0x95A9, - 26262 - 11905: 0xC5AF, - 26263 - 11905: 0xB0B5, - 26264 - 11905: 0x95AA, - 26265 - 11905: 0x95AB, - 26266 - 11905: 0x95AC, - 26267 - 11905: 0x95AD, - 26268 - 11905: 0x95AE, - 26269 - 11905: 0xEAD4, - 26270 - 11905: 0x95AF, - 26271 - 11905: 0x95B0, - 26272 - 11905: 0x95B1, - 26273 - 11905: 0x95B2, - 26274 - 11905: 0x95B3, - 26275 - 11905: 0x95B4, - 26276 - 11905: 0x95B5, - 26277 - 11905: 0x95B6, - 26278 - 11905: 0x95B7, - 26279 - 11905: 0xEAD3, - 26280 - 11905: 0xF4DF, - 26281 - 11905: 0x95B8, - 26282 - 11905: 0x95B9, - 26283 - 11905: 0x95BA, - 26284 - 11905: 0x95BB, - 26285 - 11905: 0x95BC, - 26286 - 11905: 0xC4BA, - 26287 - 11905: 0x95BD, - 26288 - 11905: 0x95BE, - 26289 - 11905: 0x95BF, - 26290 - 11905: 0x95C0, - 26291 - 11905: 0x95C1, - 26292 - 11905: 0xB1A9, - 26293 - 11905: 0x95C2, - 26294 - 11905: 0x95C3, - 26295 - 11905: 0x95C4, - 26296 - 11905: 0x95C5, - 26297 - 11905: 0xE5DF, - 26298 - 11905: 0x95C6, - 26299 - 11905: 0x95C7, - 26300 - 11905: 0x95C8, - 26301 - 11905: 0x95C9, - 26302 - 11905: 0xEAD5, - 26303 - 11905: 0x95CA, - 26304 - 11905: 0x95CB, - 26305 - 11905: 0x95CC, - 26306 - 11905: 0x95CD, - 26307 - 11905: 0x95CE, - 26308 - 11905: 0x95CF, - 26309 - 11905: 0x95D0, - 26310 - 11905: 0x95D1, - 26311 - 11905: 0x95D2, - 26312 - 11905: 0x95D3, - 26313 - 11905: 0x95D4, - 26314 - 11905: 0x95D5, - 26315 - 11905: 0x95D6, - 26316 - 11905: 0x95D7, - 26317 - 11905: 0x95D8, - 26318 - 11905: 0x95D9, - 26319 - 11905: 0x95DA, - 26320 - 11905: 0x95DB, - 26321 - 11905: 0x95DC, - 26322 - 11905: 0x95DD, - 26323 - 11905: 0x95DE, - 26324 - 11905: 0x95DF, - 26325 - 11905: 0x95E0, - 26326 - 11905: 0x95E1, - 26327 - 11905: 0x95E2, - 26328 - 11905: 0x95E3, - 26329 - 11905: 0xCAEF, - 26330 - 11905: 0x95E4, - 26331 - 11905: 0xEAD6, - 26332 - 11905: 0xEAD7, - 26333 - 11905: 0xC6D8, - 26334 - 11905: 0x95E5, - 26335 - 11905: 0x95E6, - 26336 - 11905: 0x95E7, - 26337 - 11905: 0x95E8, - 26338 - 11905: 0x95E9, - 26339 - 11905: 0x95EA, - 26340 - 11905: 0x95EB, - 26341 - 11905: 0x95EC, - 26342 - 11905: 0xEAD8, - 26343 - 11905: 0x95ED, - 26344 - 11905: 0x95EE, - 26345 - 11905: 0xEAD9, - 26346 - 11905: 0x95EF, - 26347 - 11905: 0x95F0, - 26348 - 11905: 0x95F1, - 26349 - 11905: 0x95F2, - 26350 - 11905: 0x95F3, - 26351 - 11905: 0x95F4, - 26352 - 11905: 0xD4BB, - 26353 - 11905: 0x95F5, - 26354 - 11905: 0xC7FA, - 26355 - 11905: 0xD2B7, - 26356 - 11905: 0xB8FC, - 26357 - 11905: 0x95F6, - 26358 - 11905: 0x95F7, - 26359 - 11905: 0xEAC2, - 26360 - 11905: 0x95F8, - 26361 - 11905: 0xB2DC, - 26362 - 11905: 0x95F9, - 26363 - 11905: 0x95FA, - 26364 - 11905: 0xC2FC, - 26365 - 11905: 0x95FB, - 26366 - 11905: 0xD4F8, - 26367 - 11905: 0xCCE6, - 26368 - 11905: 0xD7EE, - 26369 - 11905: 0x95FC, - 26370 - 11905: 0x95FD, - 26371 - 11905: 0x95FE, - 26372 - 11905: 0x9640, - 26373 - 11905: 0x9641, - 26374 - 11905: 0x9642, - 26375 - 11905: 0x9643, - 26376 - 11905: 0xD4C2, - 26377 - 11905: 0xD3D0, - 26378 - 11905: 0xEBC3, - 26379 - 11905: 0xC5F3, - 26380 - 11905: 0x9644, - 26381 - 11905: 0xB7FE, - 26382 - 11905: 0x9645, - 26383 - 11905: 0x9646, - 26384 - 11905: 0xEBD4, - 26385 - 11905: 0x9647, - 26386 - 11905: 0x9648, - 26387 - 11905: 0x9649, - 26388 - 11905: 0xCBB7, - 26389 - 11905: 0xEBDE, - 26390 - 11905: 0x964A, - 26391 - 11905: 0xC0CA, - 26392 - 11905: 0x964B, - 26393 - 11905: 0x964C, - 26394 - 11905: 0x964D, - 26395 - 11905: 0xCDFB, - 26396 - 11905: 0x964E, - 26397 - 11905: 0xB3AF, - 26398 - 11905: 0x964F, - 26399 - 11905: 0xC6DA, - 26400 - 11905: 0x9650, - 26401 - 11905: 0x9651, - 26402 - 11905: 0x9652, - 26403 - 11905: 0x9653, - 26404 - 11905: 0x9654, - 26405 - 11905: 0x9655, - 26406 - 11905: 0xEBFC, - 26407 - 11905: 0x9656, - 26408 - 11905: 0xC4BE, - 26409 - 11905: 0x9657, - 26410 - 11905: 0xCEB4, - 26411 - 11905: 0xC4A9, - 26412 - 11905: 0xB1BE, - 26413 - 11905: 0xD4FD, - 26414 - 11905: 0x9658, - 26415 - 11905: 0xCAF5, - 26416 - 11905: 0x9659, - 26417 - 11905: 0xD6EC, - 26418 - 11905: 0x965A, - 26419 - 11905: 0x965B, - 26420 - 11905: 0xC6D3, - 26421 - 11905: 0xB6E4, - 26422 - 11905: 0x965C, - 26423 - 11905: 0x965D, - 26424 - 11905: 0x965E, - 26425 - 11905: 0x965F, - 26426 - 11905: 0xBBFA, - 26427 - 11905: 0x9660, - 26428 - 11905: 0x9661, - 26429 - 11905: 0xD0E0, - 26430 - 11905: 0x9662, - 26431 - 11905: 0x9663, - 26432 - 11905: 0xC9B1, - 26433 - 11905: 0x9664, - 26434 - 11905: 0xD4D3, - 26435 - 11905: 0xC8A8, - 26436 - 11905: 0x9665, - 26437 - 11905: 0x9666, - 26438 - 11905: 0xB8CB, - 26439 - 11905: 0x9667, - 26440 - 11905: 0xE8BE, - 26441 - 11905: 0xC9BC, - 26442 - 11905: 0x9668, - 26443 - 11905: 0x9669, - 26444 - 11905: 0xE8BB, - 26445 - 11905: 0x966A, - 26446 - 11905: 0xC0EE, - 26447 - 11905: 0xD0D3, - 26448 - 11905: 0xB2C4, - 26449 - 11905: 0xB4E5, - 26450 - 11905: 0x966B, - 26451 - 11905: 0xE8BC, - 26452 - 11905: 0x966C, - 26453 - 11905: 0x966D, - 26454 - 11905: 0xD5C8, - 26455 - 11905: 0x966E, - 26456 - 11905: 0x966F, - 26457 - 11905: 0x9670, - 26458 - 11905: 0x9671, - 26459 - 11905: 0x9672, - 26460 - 11905: 0xB6C5, - 26461 - 11905: 0x9673, - 26462 - 11905: 0xE8BD, - 26463 - 11905: 0xCAF8, - 26464 - 11905: 0xB8DC, - 26465 - 11905: 0xCCF5, - 26466 - 11905: 0x9674, - 26467 - 11905: 0x9675, - 26468 - 11905: 0x9676, - 26469 - 11905: 0xC0B4, - 26470 - 11905: 0x9677, - 26471 - 11905: 0x9678, - 26472 - 11905: 0xD1EE, - 26473 - 11905: 0xE8BF, - 26474 - 11905: 0xE8C2, - 26475 - 11905: 0x9679, - 26476 - 11905: 0x967A, - 26477 - 11905: 0xBABC, - 26478 - 11905: 0x967B, - 26479 - 11905: 0xB1AD, - 26480 - 11905: 0xBDDC, - 26481 - 11905: 0x967C, - 26482 - 11905: 0xEABD, - 26483 - 11905: 0xE8C3, - 26484 - 11905: 0x967D, - 26485 - 11905: 0xE8C6, - 26486 - 11905: 0x967E, - 26487 - 11905: 0xE8CB, - 26488 - 11905: 0x9680, - 26489 - 11905: 0x9681, - 26490 - 11905: 0x9682, - 26491 - 11905: 0x9683, - 26492 - 11905: 0xE8CC, - 26493 - 11905: 0x9684, - 26494 - 11905: 0xCBC9, - 26495 - 11905: 0xB0E5, - 26496 - 11905: 0x9685, - 26497 - 11905: 0xBCAB, - 26498 - 11905: 0x9686, - 26499 - 11905: 0x9687, - 26500 - 11905: 0xB9B9, - 26501 - 11905: 0x9688, - 26502 - 11905: 0x9689, - 26503 - 11905: 0xE8C1, - 26504 - 11905: 0x968A, - 26505 - 11905: 0xCDF7, - 26506 - 11905: 0x968B, - 26507 - 11905: 0xE8CA, - 26508 - 11905: 0x968C, - 26509 - 11905: 0x968D, - 26510 - 11905: 0x968E, - 26511 - 11905: 0x968F, - 26512 - 11905: 0xCEF6, - 26513 - 11905: 0x9690, - 26514 - 11905: 0x9691, - 26515 - 11905: 0x9692, - 26516 - 11905: 0x9693, - 26517 - 11905: 0xD5ED, - 26518 - 11905: 0x9694, - 26519 - 11905: 0xC1D6, - 26520 - 11905: 0xE8C4, - 26521 - 11905: 0x9695, - 26522 - 11905: 0xC3B6, - 26523 - 11905: 0x9696, - 26524 - 11905: 0xB9FB, - 26525 - 11905: 0xD6A6, - 26526 - 11905: 0xE8C8, - 26527 - 11905: 0x9697, - 26528 - 11905: 0x9698, - 26529 - 11905: 0x9699, - 26530 - 11905: 0xCAE0, - 26531 - 11905: 0xD4E6, - 26532 - 11905: 0x969A, - 26533 - 11905: 0xE8C0, - 26534 - 11905: 0x969B, - 26535 - 11905: 0xE8C5, - 26536 - 11905: 0xE8C7, - 26537 - 11905: 0x969C, - 26538 - 11905: 0xC7B9, - 26539 - 11905: 0xB7E3, - 26540 - 11905: 0x969D, - 26541 - 11905: 0xE8C9, - 26542 - 11905: 0x969E, - 26543 - 11905: 0xBFDD, - 26544 - 11905: 0xE8D2, - 26545 - 11905: 0x969F, - 26546 - 11905: 0x96A0, - 26547 - 11905: 0xE8D7, - 26548 - 11905: 0x96A1, - 26549 - 11905: 0xE8D5, - 26550 - 11905: 0xBCDC, - 26551 - 11905: 0xBCCF, - 26552 - 11905: 0xE8DB, - 26553 - 11905: 0x96A2, - 26554 - 11905: 0x96A3, - 26555 - 11905: 0x96A4, - 26556 - 11905: 0x96A5, - 26557 - 11905: 0x96A6, - 26558 - 11905: 0x96A7, - 26559 - 11905: 0x96A8, - 26560 - 11905: 0x96A9, - 26561 - 11905: 0xE8DE, - 26562 - 11905: 0x96AA, - 26563 - 11905: 0xE8DA, - 26564 - 11905: 0xB1FA, - 26565 - 11905: 0x96AB, - 26566 - 11905: 0x96AC, - 26567 - 11905: 0x96AD, - 26568 - 11905: 0x96AE, - 26569 - 11905: 0x96AF, - 26570 - 11905: 0x96B0, - 26571 - 11905: 0x96B1, - 26572 - 11905: 0x96B2, - 26573 - 11905: 0x96B3, - 26574 - 11905: 0x96B4, - 26575 - 11905: 0xB0D8, - 26576 - 11905: 0xC4B3, - 26577 - 11905: 0xB8CC, - 26578 - 11905: 0xC6E2, - 26579 - 11905: 0xC8BE, - 26580 - 11905: 0xC8E1, - 26581 - 11905: 0x96B5, - 26582 - 11905: 0x96B6, - 26583 - 11905: 0x96B7, - 26584 - 11905: 0xE8CF, - 26585 - 11905: 0xE8D4, - 26586 - 11905: 0xE8D6, - 26587 - 11905: 0x96B8, - 26588 - 11905: 0xB9F1, - 26589 - 11905: 0xE8D8, - 26590 - 11905: 0xD7F5, - 26591 - 11905: 0x96B9, - 26592 - 11905: 0xC4FB, - 26593 - 11905: 0x96BA, - 26594 - 11905: 0xE8DC, - 26595 - 11905: 0x96BB, - 26596 - 11905: 0x96BC, - 26597 - 11905: 0xB2E9, - 26598 - 11905: 0x96BD, - 26599 - 11905: 0x96BE, - 26600 - 11905: 0x96BF, - 26601 - 11905: 0xE8D1, - 26602 - 11905: 0x96C0, - 26603 - 11905: 0x96C1, - 26604 - 11905: 0xBCED, - 26605 - 11905: 0x96C2, - 26606 - 11905: 0x96C3, - 26607 - 11905: 0xBFC2, - 26608 - 11905: 0xE8CD, - 26609 - 11905: 0xD6F9, - 26610 - 11905: 0x96C4, - 26611 - 11905: 0xC1F8, - 26612 - 11905: 0xB2F1, - 26613 - 11905: 0x96C5, - 26614 - 11905: 0x96C6, - 26615 - 11905: 0x96C7, - 26616 - 11905: 0x96C8, - 26617 - 11905: 0x96C9, - 26618 - 11905: 0x96CA, - 26619 - 11905: 0x96CB, - 26620 - 11905: 0x96CC, - 26621 - 11905: 0xE8DF, - 26622 - 11905: 0x96CD, - 26623 - 11905: 0xCAC1, - 26624 - 11905: 0xE8D9, - 26625 - 11905: 0x96CE, - 26626 - 11905: 0x96CF, - 26627 - 11905: 0x96D0, - 26628 - 11905: 0x96D1, - 26629 - 11905: 0xD5A4, - 26630 - 11905: 0x96D2, - 26631 - 11905: 0xB1EA, - 26632 - 11905: 0xD5BB, - 26633 - 11905: 0xE8CE, - 26634 - 11905: 0xE8D0, - 26635 - 11905: 0xB6B0, - 26636 - 11905: 0xE8D3, - 26637 - 11905: 0x96D3, - 26638 - 11905: 0xE8DD, - 26639 - 11905: 0xC0B8, - 26640 - 11905: 0x96D4, - 26641 - 11905: 0xCAF7, - 26642 - 11905: 0x96D5, - 26643 - 11905: 0xCBA8, - 26644 - 11905: 0x96D6, - 26645 - 11905: 0x96D7, - 26646 - 11905: 0xC6DC, - 26647 - 11905: 0xC0F5, - 26648 - 11905: 0x96D8, - 26649 - 11905: 0x96D9, - 26650 - 11905: 0x96DA, - 26651 - 11905: 0x96DB, - 26652 - 11905: 0x96DC, - 26653 - 11905: 0xE8E9, - 26654 - 11905: 0x96DD, - 26655 - 11905: 0x96DE, - 26656 - 11905: 0x96DF, - 26657 - 11905: 0xD0A3, - 26658 - 11905: 0x96E0, - 26659 - 11905: 0x96E1, - 26660 - 11905: 0x96E2, - 26661 - 11905: 0x96E3, - 26662 - 11905: 0x96E4, - 26663 - 11905: 0x96E5, - 26664 - 11905: 0x96E6, - 26665 - 11905: 0xE8F2, - 26666 - 11905: 0xD6EA, - 26667 - 11905: 0x96E7, - 26668 - 11905: 0x96E8, - 26669 - 11905: 0x96E9, - 26670 - 11905: 0x96EA, - 26671 - 11905: 0x96EB, - 26672 - 11905: 0x96EC, - 26673 - 11905: 0x96ED, - 26674 - 11905: 0xE8E0, - 26675 - 11905: 0xE8E1, - 26676 - 11905: 0x96EE, - 26677 - 11905: 0x96EF, - 26678 - 11905: 0x96F0, - 26679 - 11905: 0xD1F9, - 26680 - 11905: 0xBACB, - 26681 - 11905: 0xB8F9, - 26682 - 11905: 0x96F1, - 26683 - 11905: 0x96F2, - 26684 - 11905: 0xB8F1, - 26685 - 11905: 0xD4D4, - 26686 - 11905: 0xE8EF, - 26687 - 11905: 0x96F3, - 26688 - 11905: 0xE8EE, - 26689 - 11905: 0xE8EC, - 26690 - 11905: 0xB9F0, - 26691 - 11905: 0xCCD2, - 26692 - 11905: 0xE8E6, - 26693 - 11905: 0xCEA6, - 26694 - 11905: 0xBFF2, - 26695 - 11905: 0x96F4, - 26696 - 11905: 0xB0B8, - 26697 - 11905: 0xE8F1, - 26698 - 11905: 0xE8F0, - 26699 - 11905: 0x96F5, - 26700 - 11905: 0xD7C0, - 26701 - 11905: 0x96F6, - 26702 - 11905: 0xE8E4, - 26703 - 11905: 0x96F7, - 26704 - 11905: 0xCDA9, - 26705 - 11905: 0xC9A3, - 26706 - 11905: 0x96F8, - 26707 - 11905: 0xBBB8, - 26708 - 11905: 0xBDDB, - 26709 - 11905: 0xE8EA, - 26710 - 11905: 0x96F9, - 26711 - 11905: 0x96FA, - 26712 - 11905: 0x96FB, - 26713 - 11905: 0x96FC, - 26714 - 11905: 0x96FD, - 26715 - 11905: 0x96FE, - 26716 - 11905: 0x9740, - 26717 - 11905: 0x9741, - 26718 - 11905: 0x9742, - 26719 - 11905: 0x9743, - 26720 - 11905: 0xE8E2, - 26721 - 11905: 0xE8E3, - 26722 - 11905: 0xE8E5, - 26723 - 11905: 0xB5B5, - 26724 - 11905: 0xE8E7, - 26725 - 11905: 0xC7C5, - 26726 - 11905: 0xE8EB, - 26727 - 11905: 0xE8ED, - 26728 - 11905: 0xBDB0, - 26729 - 11905: 0xD7AE, - 26730 - 11905: 0x9744, - 26731 - 11905: 0xE8F8, - 26732 - 11905: 0x9745, - 26733 - 11905: 0x9746, - 26734 - 11905: 0x9747, - 26735 - 11905: 0x9748, - 26736 - 11905: 0x9749, - 26737 - 11905: 0x974A, - 26738 - 11905: 0x974B, - 26739 - 11905: 0x974C, - 26740 - 11905: 0xE8F5, - 26741 - 11905: 0x974D, - 26742 - 11905: 0xCDB0, - 26743 - 11905: 0xE8F6, - 26744 - 11905: 0x974E, - 26745 - 11905: 0x974F, - 26746 - 11905: 0x9750, - 26747 - 11905: 0x9751, - 26748 - 11905: 0x9752, - 26749 - 11905: 0x9753, - 26750 - 11905: 0x9754, - 26751 - 11905: 0x9755, - 26752 - 11905: 0x9756, - 26753 - 11905: 0xC1BA, - 26754 - 11905: 0x9757, - 26755 - 11905: 0xE8E8, - 26756 - 11905: 0x9758, - 26757 - 11905: 0xC3B7, - 26758 - 11905: 0xB0F0, - 26759 - 11905: 0x9759, - 26760 - 11905: 0x975A, - 26761 - 11905: 0x975B, - 26762 - 11905: 0x975C, - 26763 - 11905: 0x975D, - 26764 - 11905: 0x975E, - 26765 - 11905: 0x975F, - 26766 - 11905: 0x9760, - 26767 - 11905: 0xE8F4, - 26768 - 11905: 0x9761, - 26769 - 11905: 0x9762, - 26770 - 11905: 0x9763, - 26771 - 11905: 0xE8F7, - 26772 - 11905: 0x9764, - 26773 - 11905: 0x9765, - 26774 - 11905: 0x9766, - 26775 - 11905: 0xB9A3, - 26776 - 11905: 0x9767, - 26777 - 11905: 0x9768, - 26778 - 11905: 0x9769, - 26779 - 11905: 0x976A, - 26780 - 11905: 0x976B, - 26781 - 11905: 0x976C, - 26782 - 11905: 0x976D, - 26783 - 11905: 0x976E, - 26784 - 11905: 0x976F, - 26785 - 11905: 0x9770, - 26786 - 11905: 0xC9D2, - 26787 - 11905: 0x9771, - 26788 - 11905: 0x9772, - 26789 - 11905: 0x9773, - 26790 - 11905: 0xC3CE, - 26791 - 11905: 0xCEE0, - 26792 - 11905: 0xC0E6, - 26793 - 11905: 0x9774, - 26794 - 11905: 0x9775, - 26795 - 11905: 0x9776, - 26796 - 11905: 0x9777, - 26797 - 11905: 0xCBF3, - 26798 - 11905: 0x9778, - 26799 - 11905: 0xCCDD, - 26800 - 11905: 0xD0B5, - 26801 - 11905: 0x9779, - 26802 - 11905: 0x977A, - 26803 - 11905: 0xCAE1, - 26804 - 11905: 0x977B, - 26805 - 11905: 0xE8F3, - 26806 - 11905: 0x977C, - 26807 - 11905: 0x977D, - 26808 - 11905: 0x977E, - 26809 - 11905: 0x9780, - 26810 - 11905: 0x9781, - 26811 - 11905: 0x9782, - 26812 - 11905: 0x9783, - 26813 - 11905: 0x9784, - 26814 - 11905: 0x9785, - 26815 - 11905: 0x9786, - 26816 - 11905: 0xBCEC, - 26817 - 11905: 0x9787, - 26818 - 11905: 0xE8F9, - 26819 - 11905: 0x9788, - 26820 - 11905: 0x9789, - 26821 - 11905: 0x978A, - 26822 - 11905: 0x978B, - 26823 - 11905: 0x978C, - 26824 - 11905: 0x978D, - 26825 - 11905: 0xC3DE, - 26826 - 11905: 0x978E, - 26827 - 11905: 0xC6E5, - 26828 - 11905: 0x978F, - 26829 - 11905: 0xB9F7, - 26830 - 11905: 0x9790, - 26831 - 11905: 0x9791, - 26832 - 11905: 0x9792, - 26833 - 11905: 0x9793, - 26834 - 11905: 0xB0F4, - 26835 - 11905: 0x9794, - 26836 - 11905: 0x9795, - 26837 - 11905: 0xD7D8, - 26838 - 11905: 0x9796, - 26839 - 11905: 0x9797, - 26840 - 11905: 0xBCAC, - 26841 - 11905: 0x9798, - 26842 - 11905: 0xC5EF, - 26843 - 11905: 0x9799, - 26844 - 11905: 0x979A, - 26845 - 11905: 0x979B, - 26846 - 11905: 0x979C, - 26847 - 11905: 0x979D, - 26848 - 11905: 0xCCC4, - 26849 - 11905: 0x979E, - 26850 - 11905: 0x979F, - 26851 - 11905: 0xE9A6, - 26852 - 11905: 0x97A0, - 26853 - 11905: 0x97A1, - 26854 - 11905: 0x97A2, - 26855 - 11905: 0x97A3, - 26856 - 11905: 0x97A4, - 26857 - 11905: 0x97A5, - 26858 - 11905: 0x97A6, - 26859 - 11905: 0x97A7, - 26860 - 11905: 0x97A8, - 26861 - 11905: 0x97A9, - 26862 - 11905: 0xC9AD, - 26863 - 11905: 0x97AA, - 26864 - 11905: 0xE9A2, - 26865 - 11905: 0xC0E2, - 26866 - 11905: 0x97AB, - 26867 - 11905: 0x97AC, - 26868 - 11905: 0x97AD, - 26869 - 11905: 0xBFC3, - 26870 - 11905: 0x97AE, - 26871 - 11905: 0x97AF, - 26872 - 11905: 0x97B0, - 26873 - 11905: 0xE8FE, - 26874 - 11905: 0xB9D7, - 26875 - 11905: 0x97B1, - 26876 - 11905: 0xE8FB, - 26877 - 11905: 0x97B2, - 26878 - 11905: 0x97B3, - 26879 - 11905: 0x97B4, - 26880 - 11905: 0x97B5, - 26881 - 11905: 0xE9A4, - 26882 - 11905: 0x97B6, - 26883 - 11905: 0x97B7, - 26884 - 11905: 0x97B8, - 26885 - 11905: 0xD2CE, - 26886 - 11905: 0x97B9, - 26887 - 11905: 0x97BA, - 26888 - 11905: 0x97BB, - 26889 - 11905: 0x97BC, - 26890 - 11905: 0x97BD, - 26891 - 11905: 0xE9A3, - 26892 - 11905: 0x97BE, - 26893 - 11905: 0xD6B2, - 26894 - 11905: 0xD7B5, - 26895 - 11905: 0x97BF, - 26896 - 11905: 0xE9A7, - 26897 - 11905: 0x97C0, - 26898 - 11905: 0xBDB7, - 26899 - 11905: 0x97C1, - 26900 - 11905: 0x97C2, - 26901 - 11905: 0x97C3, - 26902 - 11905: 0x97C4, - 26903 - 11905: 0x97C5, - 26904 - 11905: 0x97C6, - 26905 - 11905: 0x97C7, - 26906 - 11905: 0x97C8, - 26907 - 11905: 0x97C9, - 26908 - 11905: 0x97CA, - 26909 - 11905: 0x97CB, - 26910 - 11905: 0x97CC, - 26911 - 11905: 0xE8FC, - 26912 - 11905: 0xE8FD, - 26913 - 11905: 0x97CD, - 26914 - 11905: 0x97CE, - 26915 - 11905: 0x97CF, - 26916 - 11905: 0xE9A1, - 26917 - 11905: 0x97D0, - 26918 - 11905: 0x97D1, - 26919 - 11905: 0x97D2, - 26920 - 11905: 0x97D3, - 26921 - 11905: 0x97D4, - 26922 - 11905: 0x97D5, - 26923 - 11905: 0x97D6, - 26924 - 11905: 0x97D7, - 26925 - 11905: 0xCDD6, - 26926 - 11905: 0x97D8, - 26927 - 11905: 0x97D9, - 26928 - 11905: 0xD2AC, - 26929 - 11905: 0x97DA, - 26930 - 11905: 0x97DB, - 26931 - 11905: 0x97DC, - 26932 - 11905: 0xE9B2, - 26933 - 11905: 0x97DD, - 26934 - 11905: 0x97DE, - 26935 - 11905: 0x97DF, - 26936 - 11905: 0x97E0, - 26937 - 11905: 0xE9A9, - 26938 - 11905: 0x97E1, - 26939 - 11905: 0x97E2, - 26940 - 11905: 0x97E3, - 26941 - 11905: 0xB4AA, - 26942 - 11905: 0x97E4, - 26943 - 11905: 0xB4BB, - 26944 - 11905: 0x97E5, - 26945 - 11905: 0x97E6, - 26946 - 11905: 0xE9AB, - 26947 - 11905: 0x97E7, - 26948 - 11905: 0x97E8, - 26949 - 11905: 0x97E9, - 26950 - 11905: 0x97EA, - 26951 - 11905: 0x97EB, - 26952 - 11905: 0x97EC, - 26953 - 11905: 0x97ED, - 26954 - 11905: 0x97EE, - 26955 - 11905: 0x97EF, - 26956 - 11905: 0x97F0, - 26957 - 11905: 0x97F1, - 26958 - 11905: 0x97F2, - 26959 - 11905: 0x97F3, - 26960 - 11905: 0x97F4, - 26961 - 11905: 0x97F5, - 26962 - 11905: 0x97F6, - 26963 - 11905: 0x97F7, - 26964 - 11905: 0xD0A8, - 26965 - 11905: 0x97F8, - 26966 - 11905: 0x97F9, - 26967 - 11905: 0xE9A5, - 26968 - 11905: 0x97FA, - 26969 - 11905: 0x97FB, - 26970 - 11905: 0xB3FE, - 26971 - 11905: 0x97FC, - 26972 - 11905: 0x97FD, - 26973 - 11905: 0xE9AC, - 26974 - 11905: 0xC0E3, - 26975 - 11905: 0x97FE, - 26976 - 11905: 0xE9AA, - 26977 - 11905: 0x9840, - 26978 - 11905: 0x9841, - 26979 - 11905: 0xE9B9, - 26980 - 11905: 0x9842, - 26981 - 11905: 0x9843, - 26982 - 11905: 0xE9B8, - 26983 - 11905: 0x9844, - 26984 - 11905: 0x9845, - 26985 - 11905: 0x9846, - 26986 - 11905: 0x9847, - 26987 - 11905: 0xE9AE, - 26988 - 11905: 0x9848, - 26989 - 11905: 0x9849, - 26990 - 11905: 0xE8FA, - 26991 - 11905: 0x984A, - 26992 - 11905: 0x984B, - 26993 - 11905: 0xE9A8, - 26994 - 11905: 0x984C, - 26995 - 11905: 0x984D, - 26996 - 11905: 0x984E, - 26997 - 11905: 0x984F, - 26998 - 11905: 0x9850, - 26999 - 11905: 0xBFAC, - 27000 - 11905: 0xE9B1, - 27001 - 11905: 0xE9BA, - 27002 - 11905: 0x9851, - 27003 - 11905: 0x9852, - 27004 - 11905: 0xC2A5, - 27005 - 11905: 0x9853, - 27006 - 11905: 0x9854, - 27007 - 11905: 0x9855, - 27008 - 11905: 0xE9AF, - 27009 - 11905: 0x9856, - 27010 - 11905: 0xB8C5, - 27011 - 11905: 0x9857, - 27012 - 11905: 0xE9AD, - 27013 - 11905: 0x9858, - 27014 - 11905: 0xD3DC, - 27015 - 11905: 0xE9B4, - 27016 - 11905: 0xE9B5, - 27017 - 11905: 0xE9B7, - 27018 - 11905: 0x9859, - 27019 - 11905: 0x985A, - 27020 - 11905: 0x985B, - 27021 - 11905: 0xE9C7, - 27022 - 11905: 0x985C, - 27023 - 11905: 0x985D, - 27024 - 11905: 0x985E, - 27025 - 11905: 0x985F, - 27026 - 11905: 0x9860, - 27027 - 11905: 0x9861, - 27028 - 11905: 0xC0C6, - 27029 - 11905: 0xE9C5, - 27030 - 11905: 0x9862, - 27031 - 11905: 0x9863, - 27032 - 11905: 0xE9B0, - 27033 - 11905: 0x9864, - 27034 - 11905: 0x9865, - 27035 - 11905: 0xE9BB, - 27036 - 11905: 0xB0F1, - 27037 - 11905: 0x9866, - 27038 - 11905: 0x9867, - 27039 - 11905: 0x9868, - 27040 - 11905: 0x9869, - 27041 - 11905: 0x986A, - 27042 - 11905: 0x986B, - 27043 - 11905: 0x986C, - 27044 - 11905: 0x986D, - 27045 - 11905: 0x986E, - 27046 - 11905: 0x986F, - 27047 - 11905: 0xE9BC, - 27048 - 11905: 0xD5A5, - 27049 - 11905: 0x9870, - 27050 - 11905: 0x9871, - 27051 - 11905: 0xE9BE, - 27052 - 11905: 0x9872, - 27053 - 11905: 0xE9BF, - 27054 - 11905: 0x9873, - 27055 - 11905: 0x9874, - 27056 - 11905: 0x9875, - 27057 - 11905: 0xE9C1, - 27058 - 11905: 0x9876, - 27059 - 11905: 0x9877, - 27060 - 11905: 0xC1F1, - 27061 - 11905: 0x9878, - 27062 - 11905: 0x9879, - 27063 - 11905: 0xC8B6, - 27064 - 11905: 0x987A, - 27065 - 11905: 0x987B, - 27066 - 11905: 0x987C, - 27067 - 11905: 0xE9BD, - 27068 - 11905: 0x987D, - 27069 - 11905: 0x987E, - 27070 - 11905: 0x9880, - 27071 - 11905: 0x9881, - 27072 - 11905: 0x9882, - 27073 - 11905: 0xE9C2, - 27074 - 11905: 0x9883, - 27075 - 11905: 0x9884, - 27076 - 11905: 0x9885, - 27077 - 11905: 0x9886, - 27078 - 11905: 0x9887, - 27079 - 11905: 0x9888, - 27080 - 11905: 0x9889, - 27081 - 11905: 0x988A, - 27082 - 11905: 0xE9C3, - 27083 - 11905: 0x988B, - 27084 - 11905: 0xE9B3, - 27085 - 11905: 0x988C, - 27086 - 11905: 0xE9B6, - 27087 - 11905: 0x988D, - 27088 - 11905: 0xBBB1, - 27089 - 11905: 0x988E, - 27090 - 11905: 0x988F, - 27091 - 11905: 0x9890, - 27092 - 11905: 0xE9C0, - 27093 - 11905: 0x9891, - 27094 - 11905: 0x9892, - 27095 - 11905: 0x9893, - 27096 - 11905: 0x9894, - 27097 - 11905: 0x9895, - 27098 - 11905: 0x9896, - 27099 - 11905: 0xBCF7, - 27100 - 11905: 0x9897, - 27101 - 11905: 0x9898, - 27102 - 11905: 0x9899, - 27103 - 11905: 0xE9C4, - 27104 - 11905: 0xE9C6, - 27105 - 11905: 0x989A, - 27106 - 11905: 0x989B, - 27107 - 11905: 0x989C, - 27108 - 11905: 0x989D, - 27109 - 11905: 0x989E, - 27110 - 11905: 0x989F, - 27111 - 11905: 0x98A0, - 27112 - 11905: 0x98A1, - 27113 - 11905: 0x98A2, - 27114 - 11905: 0x98A3, - 27115 - 11905: 0x98A4, - 27116 - 11905: 0x98A5, - 27117 - 11905: 0xE9CA, - 27118 - 11905: 0x98A6, - 27119 - 11905: 0x98A7, - 27120 - 11905: 0x98A8, - 27121 - 11905: 0x98A9, - 27122 - 11905: 0xE9CE, - 27123 - 11905: 0x98AA, - 27124 - 11905: 0x98AB, - 27125 - 11905: 0x98AC, - 27126 - 11905: 0x98AD, - 27127 - 11905: 0x98AE, - 27128 - 11905: 0x98AF, - 27129 - 11905: 0x98B0, - 27130 - 11905: 0x98B1, - 27131 - 11905: 0x98B2, - 27132 - 11905: 0x98B3, - 27133 - 11905: 0xB2DB, - 27134 - 11905: 0x98B4, - 27135 - 11905: 0xE9C8, - 27136 - 11905: 0x98B5, - 27137 - 11905: 0x98B6, - 27138 - 11905: 0x98B7, - 27139 - 11905: 0x98B8, - 27140 - 11905: 0x98B9, - 27141 - 11905: 0x98BA, - 27142 - 11905: 0x98BB, - 27143 - 11905: 0x98BC, - 27144 - 11905: 0x98BD, - 27145 - 11905: 0x98BE, - 27146 - 11905: 0xB7AE, - 27147 - 11905: 0x98BF, - 27148 - 11905: 0x98C0, - 27149 - 11905: 0x98C1, - 27150 - 11905: 0x98C2, - 27151 - 11905: 0x98C3, - 27152 - 11905: 0x98C4, - 27153 - 11905: 0x98C5, - 27154 - 11905: 0x98C6, - 27155 - 11905: 0x98C7, - 27156 - 11905: 0x98C8, - 27157 - 11905: 0x98C9, - 27158 - 11905: 0x98CA, - 27159 - 11905: 0xE9CB, - 27160 - 11905: 0xE9CC, - 27161 - 11905: 0x98CB, - 27162 - 11905: 0x98CC, - 27163 - 11905: 0x98CD, - 27164 - 11905: 0x98CE, - 27165 - 11905: 0x98CF, - 27166 - 11905: 0x98D0, - 27167 - 11905: 0xD5C1, - 27168 - 11905: 0x98D1, - 27169 - 11905: 0xC4A3, - 27170 - 11905: 0x98D2, - 27171 - 11905: 0x98D3, - 27172 - 11905: 0x98D4, - 27173 - 11905: 0x98D5, - 27174 - 11905: 0x98D6, - 27175 - 11905: 0x98D7, - 27176 - 11905: 0xE9D8, - 27177 - 11905: 0x98D8, - 27178 - 11905: 0xBAE1, - 27179 - 11905: 0x98D9, - 27180 - 11905: 0x98DA, - 27181 - 11905: 0x98DB, - 27182 - 11905: 0x98DC, - 27183 - 11905: 0xE9C9, - 27184 - 11905: 0x98DD, - 27185 - 11905: 0xD3A3, - 27186 - 11905: 0x98DE, - 27187 - 11905: 0x98DF, - 27188 - 11905: 0x98E0, - 27189 - 11905: 0xE9D4, - 27190 - 11905: 0x98E1, - 27191 - 11905: 0x98E2, - 27192 - 11905: 0x98E3, - 27193 - 11905: 0x98E4, - 27194 - 11905: 0x98E5, - 27195 - 11905: 0x98E6, - 27196 - 11905: 0x98E7, - 27197 - 11905: 0xE9D7, - 27198 - 11905: 0xE9D0, - 27199 - 11905: 0x98E8, - 27200 - 11905: 0x98E9, - 27201 - 11905: 0x98EA, - 27202 - 11905: 0x98EB, - 27203 - 11905: 0x98EC, - 27204 - 11905: 0xE9CF, - 27205 - 11905: 0x98ED, - 27206 - 11905: 0x98EE, - 27207 - 11905: 0xC7C1, - 27208 - 11905: 0x98EF, - 27209 - 11905: 0x98F0, - 27210 - 11905: 0x98F1, - 27211 - 11905: 0x98F2, - 27212 - 11905: 0x98F3, - 27213 - 11905: 0x98F4, - 27214 - 11905: 0x98F5, - 27215 - 11905: 0x98F6, - 27216 - 11905: 0xE9D2, - 27217 - 11905: 0x98F7, - 27218 - 11905: 0x98F8, - 27219 - 11905: 0x98F9, - 27220 - 11905: 0x98FA, - 27221 - 11905: 0x98FB, - 27222 - 11905: 0x98FC, - 27223 - 11905: 0x98FD, - 27224 - 11905: 0xE9D9, - 27225 - 11905: 0xB3C8, - 27226 - 11905: 0x98FE, - 27227 - 11905: 0xE9D3, - 27228 - 11905: 0x9940, - 27229 - 11905: 0x9941, - 27230 - 11905: 0x9942, - 27231 - 11905: 0x9943, - 27232 - 11905: 0x9944, - 27233 - 11905: 0xCFF0, - 27234 - 11905: 0x9945, - 27235 - 11905: 0x9946, - 27236 - 11905: 0x9947, - 27237 - 11905: 0xE9CD, - 27238 - 11905: 0x9948, - 27239 - 11905: 0x9949, - 27240 - 11905: 0x994A, - 27241 - 11905: 0x994B, - 27242 - 11905: 0x994C, - 27243 - 11905: 0x994D, - 27244 - 11905: 0x994E, - 27245 - 11905: 0x994F, - 27246 - 11905: 0x9950, - 27247 - 11905: 0x9951, - 27248 - 11905: 0x9952, - 27249 - 11905: 0xB3F7, - 27250 - 11905: 0x9953, - 27251 - 11905: 0x9954, - 27252 - 11905: 0x9955, - 27253 - 11905: 0x9956, - 27254 - 11905: 0x9957, - 27255 - 11905: 0x9958, - 27256 - 11905: 0x9959, - 27257 - 11905: 0xE9D6, - 27258 - 11905: 0x995A, - 27259 - 11905: 0x995B, - 27260 - 11905: 0xE9DA, - 27261 - 11905: 0x995C, - 27262 - 11905: 0x995D, - 27263 - 11905: 0x995E, - 27264 - 11905: 0xCCB4, - 27265 - 11905: 0x995F, - 27266 - 11905: 0x9960, - 27267 - 11905: 0x9961, - 27268 - 11905: 0xCFAD, - 27269 - 11905: 0x9962, - 27270 - 11905: 0x9963, - 27271 - 11905: 0x9964, - 27272 - 11905: 0x9965, - 27273 - 11905: 0x9966, - 27274 - 11905: 0x9967, - 27275 - 11905: 0x9968, - 27276 - 11905: 0x9969, - 27277 - 11905: 0x996A, - 27278 - 11905: 0xE9D5, - 27279 - 11905: 0x996B, - 27280 - 11905: 0xE9DC, - 27281 - 11905: 0xE9DB, - 27282 - 11905: 0x996C, - 27283 - 11905: 0x996D, - 27284 - 11905: 0x996E, - 27285 - 11905: 0x996F, - 27286 - 11905: 0x9970, - 27287 - 11905: 0xE9DE, - 27288 - 11905: 0x9971, - 27289 - 11905: 0x9972, - 27290 - 11905: 0x9973, - 27291 - 11905: 0x9974, - 27292 - 11905: 0x9975, - 27293 - 11905: 0x9976, - 27294 - 11905: 0x9977, - 27295 - 11905: 0x9978, - 27296 - 11905: 0xE9D1, - 27297 - 11905: 0x9979, - 27298 - 11905: 0x997A, - 27299 - 11905: 0x997B, - 27300 - 11905: 0x997C, - 27301 - 11905: 0x997D, - 27302 - 11905: 0x997E, - 27303 - 11905: 0x9980, - 27304 - 11905: 0x9981, - 27305 - 11905: 0xE9DD, - 27306 - 11905: 0x9982, - 27307 - 11905: 0xE9DF, - 27308 - 11905: 0xC3CA, - 27309 - 11905: 0x9983, - 27310 - 11905: 0x9984, - 27311 - 11905: 0x9985, - 27312 - 11905: 0x9986, - 27313 - 11905: 0x9987, - 27314 - 11905: 0x9988, - 27315 - 11905: 0x9989, - 27316 - 11905: 0x998A, - 27317 - 11905: 0x998B, - 27318 - 11905: 0x998C, - 27319 - 11905: 0x998D, - 27320 - 11905: 0x998E, - 27321 - 11905: 0x998F, - 27322 - 11905: 0x9990, - 27323 - 11905: 0x9991, - 27324 - 11905: 0x9992, - 27325 - 11905: 0x9993, - 27326 - 11905: 0x9994, - 27327 - 11905: 0x9995, - 27328 - 11905: 0x9996, - 27329 - 11905: 0x9997, - 27330 - 11905: 0x9998, - 27331 - 11905: 0x9999, - 27332 - 11905: 0x999A, - 27333 - 11905: 0x999B, - 27334 - 11905: 0x999C, - 27335 - 11905: 0x999D, - 27336 - 11905: 0x999E, - 27337 - 11905: 0x999F, - 27338 - 11905: 0x99A0, - 27339 - 11905: 0x99A1, - 27340 - 11905: 0x99A2, - 27341 - 11905: 0x99A3, - 27342 - 11905: 0x99A4, - 27343 - 11905: 0x99A5, - 27344 - 11905: 0x99A6, - 27345 - 11905: 0x99A7, - 27346 - 11905: 0x99A8, - 27347 - 11905: 0x99A9, - 27348 - 11905: 0x99AA, - 27349 - 11905: 0x99AB, - 27350 - 11905: 0x99AC, - 27351 - 11905: 0x99AD, - 27352 - 11905: 0x99AE, - 27353 - 11905: 0x99AF, - 27354 - 11905: 0x99B0, - 27355 - 11905: 0x99B1, - 27356 - 11905: 0x99B2, - 27357 - 11905: 0x99B3, - 27358 - 11905: 0x99B4, - 27359 - 11905: 0x99B5, - 27360 - 11905: 0x99B6, - 27361 - 11905: 0x99B7, - 27362 - 11905: 0x99B8, - 27363 - 11905: 0x99B9, - 27364 - 11905: 0x99BA, - 27365 - 11905: 0x99BB, - 27366 - 11905: 0x99BC, - 27367 - 11905: 0x99BD, - 27368 - 11905: 0x99BE, - 27369 - 11905: 0x99BF, - 27370 - 11905: 0x99C0, - 27371 - 11905: 0x99C1, - 27372 - 11905: 0x99C2, - 27373 - 11905: 0x99C3, - 27374 - 11905: 0x99C4, - 27375 - 11905: 0x99C5, - 27376 - 11905: 0x99C6, - 27377 - 11905: 0x99C7, - 27378 - 11905: 0x99C8, - 27379 - 11905: 0x99C9, - 27380 - 11905: 0x99CA, - 27381 - 11905: 0x99CB, - 27382 - 11905: 0x99CC, - 27383 - 11905: 0x99CD, - 27384 - 11905: 0x99CE, - 27385 - 11905: 0x99CF, - 27386 - 11905: 0x99D0, - 27387 - 11905: 0x99D1, - 27388 - 11905: 0x99D2, - 27389 - 11905: 0x99D3, - 27390 - 11905: 0x99D4, - 27391 - 11905: 0x99D5, - 27392 - 11905: 0x99D6, - 27393 - 11905: 0x99D7, - 27394 - 11905: 0x99D8, - 27395 - 11905: 0x99D9, - 27396 - 11905: 0x99DA, - 27397 - 11905: 0x99DB, - 27398 - 11905: 0x99DC, - 27399 - 11905: 0x99DD, - 27400 - 11905: 0x99DE, - 27401 - 11905: 0x99DF, - 27402 - 11905: 0x99E0, - 27403 - 11905: 0x99E1, - 27404 - 11905: 0x99E2, - 27405 - 11905: 0x99E3, - 27406 - 11905: 0x99E4, - 27407 - 11905: 0x99E5, - 27408 - 11905: 0x99E6, - 27409 - 11905: 0x99E7, - 27410 - 11905: 0x99E8, - 27411 - 11905: 0x99E9, - 27412 - 11905: 0x99EA, - 27413 - 11905: 0x99EB, - 27414 - 11905: 0x99EC, - 27415 - 11905: 0x99ED, - 27416 - 11905: 0x99EE, - 27417 - 11905: 0x99EF, - 27418 - 11905: 0x99F0, - 27419 - 11905: 0x99F1, - 27420 - 11905: 0x99F2, - 27421 - 11905: 0x99F3, - 27422 - 11905: 0x99F4, - 27423 - 11905: 0x99F5, - 27424 - 11905: 0xC7B7, - 27425 - 11905: 0xB4CE, - 27426 - 11905: 0xBBB6, - 27427 - 11905: 0xD0C0, - 27428 - 11905: 0xECA3, - 27429 - 11905: 0x99F6, - 27430 - 11905: 0x99F7, - 27431 - 11905: 0xC5B7, - 27432 - 11905: 0x99F8, - 27433 - 11905: 0x99F9, - 27434 - 11905: 0x99FA, - 27435 - 11905: 0x99FB, - 27436 - 11905: 0x99FC, - 27437 - 11905: 0x99FD, - 27438 - 11905: 0x99FE, - 27439 - 11905: 0x9A40, - 27440 - 11905: 0x9A41, - 27441 - 11905: 0x9A42, - 27442 - 11905: 0xD3FB, - 27443 - 11905: 0x9A43, - 27444 - 11905: 0x9A44, - 27445 - 11905: 0x9A45, - 27446 - 11905: 0x9A46, - 27447 - 11905: 0xECA4, - 27448 - 11905: 0x9A47, - 27449 - 11905: 0xECA5, - 27450 - 11905: 0xC6DB, - 27451 - 11905: 0x9A48, - 27452 - 11905: 0x9A49, - 27453 - 11905: 0x9A4A, - 27454 - 11905: 0xBFEE, - 27455 - 11905: 0x9A4B, - 27456 - 11905: 0x9A4C, - 27457 - 11905: 0x9A4D, - 27458 - 11905: 0x9A4E, - 27459 - 11905: 0xECA6, - 27460 - 11905: 0x9A4F, - 27461 - 11905: 0x9A50, - 27462 - 11905: 0xECA7, - 27463 - 11905: 0xD0AA, - 27464 - 11905: 0x9A51, - 27465 - 11905: 0xC7B8, - 27466 - 11905: 0x9A52, - 27467 - 11905: 0x9A53, - 27468 - 11905: 0xB8E8, - 27469 - 11905: 0x9A54, - 27470 - 11905: 0x9A55, - 27471 - 11905: 0x9A56, - 27472 - 11905: 0x9A57, - 27473 - 11905: 0x9A58, - 27474 - 11905: 0x9A59, - 27475 - 11905: 0x9A5A, - 27476 - 11905: 0x9A5B, - 27477 - 11905: 0x9A5C, - 27478 - 11905: 0x9A5D, - 27479 - 11905: 0x9A5E, - 27480 - 11905: 0x9A5F, - 27481 - 11905: 0xECA8, - 27482 - 11905: 0x9A60, - 27483 - 11905: 0x9A61, - 27484 - 11905: 0x9A62, - 27485 - 11905: 0x9A63, - 27486 - 11905: 0x9A64, - 27487 - 11905: 0x9A65, - 27488 - 11905: 0x9A66, - 27489 - 11905: 0x9A67, - 27490 - 11905: 0xD6B9, - 27491 - 11905: 0xD5FD, - 27492 - 11905: 0xB4CB, - 27493 - 11905: 0xB2BD, - 27494 - 11905: 0xCEE4, - 27495 - 11905: 0xC6E7, - 27496 - 11905: 0x9A68, - 27497 - 11905: 0x9A69, - 27498 - 11905: 0xCDE1, - 27499 - 11905: 0x9A6A, - 27500 - 11905: 0x9A6B, - 27501 - 11905: 0x9A6C, - 27502 - 11905: 0x9A6D, - 27503 - 11905: 0x9A6E, - 27504 - 11905: 0x9A6F, - 27505 - 11905: 0x9A70, - 27506 - 11905: 0x9A71, - 27507 - 11905: 0x9A72, - 27508 - 11905: 0x9A73, - 27509 - 11905: 0x9A74, - 27510 - 11905: 0x9A75, - 27511 - 11905: 0x9A76, - 27512 - 11905: 0x9A77, - 27513 - 11905: 0xB4F5, - 27514 - 11905: 0x9A78, - 27515 - 11905: 0xCBC0, - 27516 - 11905: 0xBCDF, - 27517 - 11905: 0x9A79, - 27518 - 11905: 0x9A7A, - 27519 - 11905: 0x9A7B, - 27520 - 11905: 0x9A7C, - 27521 - 11905: 0xE9E2, - 27522 - 11905: 0xE9E3, - 27523 - 11905: 0xD1EA, - 27524 - 11905: 0xE9E5, - 27525 - 11905: 0x9A7D, - 27526 - 11905: 0xB4F9, - 27527 - 11905: 0xE9E4, - 27528 - 11905: 0x9A7E, - 27529 - 11905: 0xD1B3, - 27530 - 11905: 0xCAE2, - 27531 - 11905: 0xB2D0, - 27532 - 11905: 0x9A80, - 27533 - 11905: 0xE9E8, - 27534 - 11905: 0x9A81, - 27535 - 11905: 0x9A82, - 27536 - 11905: 0x9A83, - 27537 - 11905: 0x9A84, - 27538 - 11905: 0xE9E6, - 27539 - 11905: 0xE9E7, - 27540 - 11905: 0x9A85, - 27541 - 11905: 0x9A86, - 27542 - 11905: 0xD6B3, - 27543 - 11905: 0x9A87, - 27544 - 11905: 0x9A88, - 27545 - 11905: 0x9A89, - 27546 - 11905: 0xE9E9, - 27547 - 11905: 0xE9EA, - 27548 - 11905: 0x9A8A, - 27549 - 11905: 0x9A8B, - 27550 - 11905: 0x9A8C, - 27551 - 11905: 0x9A8D, - 27552 - 11905: 0x9A8E, - 27553 - 11905: 0xE9EB, - 27554 - 11905: 0x9A8F, - 27555 - 11905: 0x9A90, - 27556 - 11905: 0x9A91, - 27557 - 11905: 0x9A92, - 27558 - 11905: 0x9A93, - 27559 - 11905: 0x9A94, - 27560 - 11905: 0x9A95, - 27561 - 11905: 0x9A96, - 27562 - 11905: 0xE9EC, - 27563 - 11905: 0x9A97, - 27564 - 11905: 0x9A98, - 27565 - 11905: 0x9A99, - 27566 - 11905: 0x9A9A, - 27567 - 11905: 0x9A9B, - 27568 - 11905: 0x9A9C, - 27569 - 11905: 0x9A9D, - 27570 - 11905: 0x9A9E, - 27571 - 11905: 0xECAF, - 27572 - 11905: 0xC5B9, - 27573 - 11905: 0xB6CE, - 27574 - 11905: 0x9A9F, - 27575 - 11905: 0xD2F3, - 27576 - 11905: 0x9AA0, - 27577 - 11905: 0x9AA1, - 27578 - 11905: 0x9AA2, - 27579 - 11905: 0x9AA3, - 27580 - 11905: 0x9AA4, - 27581 - 11905: 0x9AA5, - 27582 - 11905: 0x9AA6, - 27583 - 11905: 0xB5EE, - 27584 - 11905: 0x9AA7, - 27585 - 11905: 0xBBD9, - 27586 - 11905: 0xECB1, - 27587 - 11905: 0x9AA8, - 27588 - 11905: 0x9AA9, - 27589 - 11905: 0xD2E3, - 27590 - 11905: 0x9AAA, - 27591 - 11905: 0x9AAB, - 27592 - 11905: 0x9AAC, - 27593 - 11905: 0x9AAD, - 27594 - 11905: 0x9AAE, - 27595 - 11905: 0xCEE3, - 27596 - 11905: 0x9AAF, - 27597 - 11905: 0xC4B8, - 27598 - 11905: 0x9AB0, - 27599 - 11905: 0xC3BF, - 27600 - 11905: 0x9AB1, - 27601 - 11905: 0x9AB2, - 27602 - 11905: 0xB6BE, - 27603 - 11905: 0xD8B9, - 27604 - 11905: 0xB1C8, - 27605 - 11905: 0xB1CF, - 27606 - 11905: 0xB1D1, - 27607 - 11905: 0xC5FE, - 27608 - 11905: 0x9AB3, - 27609 - 11905: 0xB1D0, - 27610 - 11905: 0x9AB4, - 27611 - 11905: 0xC3AB, - 27612 - 11905: 0x9AB5, - 27613 - 11905: 0x9AB6, - 27614 - 11905: 0x9AB7, - 27615 - 11905: 0x9AB8, - 27616 - 11905: 0x9AB9, - 27617 - 11905: 0xD5B1, - 27618 - 11905: 0x9ABA, - 27619 - 11905: 0x9ABB, - 27620 - 11905: 0x9ABC, - 27621 - 11905: 0x9ABD, - 27622 - 11905: 0x9ABE, - 27623 - 11905: 0x9ABF, - 27624 - 11905: 0x9AC0, - 27625 - 11905: 0x9AC1, - 27626 - 11905: 0xEBA4, - 27627 - 11905: 0xBAC1, - 27628 - 11905: 0x9AC2, - 27629 - 11905: 0x9AC3, - 27630 - 11905: 0x9AC4, - 27631 - 11905: 0xCCBA, - 27632 - 11905: 0x9AC5, - 27633 - 11905: 0x9AC6, - 27634 - 11905: 0x9AC7, - 27635 - 11905: 0xEBA5, - 27636 - 11905: 0x9AC8, - 27637 - 11905: 0xEBA7, - 27638 - 11905: 0x9AC9, - 27639 - 11905: 0x9ACA, - 27640 - 11905: 0x9ACB, - 27641 - 11905: 0xEBA8, - 27642 - 11905: 0x9ACC, - 27643 - 11905: 0x9ACD, - 27644 - 11905: 0x9ACE, - 27645 - 11905: 0xEBA6, - 27646 - 11905: 0x9ACF, - 27647 - 11905: 0x9AD0, - 27648 - 11905: 0x9AD1, - 27649 - 11905: 0x9AD2, - 27650 - 11905: 0x9AD3, - 27651 - 11905: 0x9AD4, - 27652 - 11905: 0x9AD5, - 27653 - 11905: 0xEBA9, - 27654 - 11905: 0xEBAB, - 27655 - 11905: 0xEBAA, - 27656 - 11905: 0x9AD6, - 27657 - 11905: 0x9AD7, - 27658 - 11905: 0x9AD8, - 27659 - 11905: 0x9AD9, - 27660 - 11905: 0x9ADA, - 27661 - 11905: 0xEBAC, - 27662 - 11905: 0x9ADB, - 27663 - 11905: 0xCACF, - 27664 - 11905: 0xD8B5, - 27665 - 11905: 0xC3F1, - 27666 - 11905: 0x9ADC, - 27667 - 11905: 0xC3A5, - 27668 - 11905: 0xC6F8, - 27669 - 11905: 0xEBAD, - 27670 - 11905: 0xC4CA, - 27671 - 11905: 0x9ADD, - 27672 - 11905: 0xEBAE, - 27673 - 11905: 0xEBAF, - 27674 - 11905: 0xEBB0, - 27675 - 11905: 0xB7D5, - 27676 - 11905: 0x9ADE, - 27677 - 11905: 0x9ADF, - 27678 - 11905: 0x9AE0, - 27679 - 11905: 0xB7FA, - 27680 - 11905: 0x9AE1, - 27681 - 11905: 0xEBB1, - 27682 - 11905: 0xC7E2, - 27683 - 11905: 0x9AE2, - 27684 - 11905: 0xEBB3, - 27685 - 11905: 0x9AE3, - 27686 - 11905: 0xBAA4, - 27687 - 11905: 0xD1F5, - 27688 - 11905: 0xB0B1, - 27689 - 11905: 0xEBB2, - 27690 - 11905: 0xEBB4, - 27691 - 11905: 0x9AE4, - 27692 - 11905: 0x9AE5, - 27693 - 11905: 0x9AE6, - 27694 - 11905: 0xB5AA, - 27695 - 11905: 0xC2C8, - 27696 - 11905: 0xC7E8, - 27697 - 11905: 0x9AE7, - 27698 - 11905: 0xEBB5, - 27699 - 11905: 0x9AE8, - 27700 - 11905: 0xCBAE, - 27701 - 11905: 0xE3DF, - 27702 - 11905: 0x9AE9, - 27703 - 11905: 0x9AEA, - 27704 - 11905: 0xD3C0, - 27705 - 11905: 0x9AEB, - 27706 - 11905: 0x9AEC, - 27707 - 11905: 0x9AED, - 27708 - 11905: 0x9AEE, - 27709 - 11905: 0xD9DB, - 27710 - 11905: 0x9AEF, - 27711 - 11905: 0x9AF0, - 27712 - 11905: 0xCDA1, - 27713 - 11905: 0xD6AD, - 27714 - 11905: 0xC7F3, - 27715 - 11905: 0x9AF1, - 27716 - 11905: 0x9AF2, - 27717 - 11905: 0x9AF3, - 27718 - 11905: 0xD9E0, - 27719 - 11905: 0xBBE3, - 27720 - 11905: 0x9AF4, - 27721 - 11905: 0xBABA, - 27722 - 11905: 0xE3E2, - 27723 - 11905: 0x9AF5, - 27724 - 11905: 0x9AF6, - 27725 - 11905: 0x9AF7, - 27726 - 11905: 0x9AF8, - 27727 - 11905: 0x9AF9, - 27728 - 11905: 0xCFAB, - 27729 - 11905: 0x9AFA, - 27730 - 11905: 0x9AFB, - 27731 - 11905: 0x9AFC, - 27732 - 11905: 0xE3E0, - 27733 - 11905: 0xC9C7, - 27734 - 11905: 0x9AFD, - 27735 - 11905: 0xBAB9, - 27736 - 11905: 0x9AFE, - 27737 - 11905: 0x9B40, - 27738 - 11905: 0x9B41, - 27739 - 11905: 0xD1B4, - 27740 - 11905: 0xE3E1, - 27741 - 11905: 0xC8EA, - 27742 - 11905: 0xB9AF, - 27743 - 11905: 0xBDAD, - 27744 - 11905: 0xB3D8, - 27745 - 11905: 0xCEDB, - 27746 - 11905: 0x9B42, - 27747 - 11905: 0x9B43, - 27748 - 11905: 0xCCC0, - 27749 - 11905: 0x9B44, - 27750 - 11905: 0x9B45, - 27751 - 11905: 0x9B46, - 27752 - 11905: 0xE3E8, - 27753 - 11905: 0xE3E9, - 27754 - 11905: 0xCDF4, - 27755 - 11905: 0x9B47, - 27756 - 11905: 0x9B48, - 27757 - 11905: 0x9B49, - 27758 - 11905: 0x9B4A, - 27759 - 11905: 0x9B4B, - 27760 - 11905: 0xCCAD, - 27761 - 11905: 0x9B4C, - 27762 - 11905: 0xBCB3, - 27763 - 11905: 0x9B4D, - 27764 - 11905: 0xE3EA, - 27765 - 11905: 0x9B4E, - 27766 - 11905: 0xE3EB, - 27767 - 11905: 0x9B4F, - 27768 - 11905: 0x9B50, - 27769 - 11905: 0xD0DA, - 27770 - 11905: 0x9B51, - 27771 - 11905: 0x9B52, - 27772 - 11905: 0x9B53, - 27773 - 11905: 0xC6FB, - 27774 - 11905: 0xB7DA, - 27775 - 11905: 0x9B54, - 27776 - 11905: 0x9B55, - 27777 - 11905: 0xC7DF, - 27778 - 11905: 0xD2CA, - 27779 - 11905: 0xCED6, - 27780 - 11905: 0x9B56, - 27781 - 11905: 0xE3E4, - 27782 - 11905: 0xE3EC, - 27783 - 11905: 0x9B57, - 27784 - 11905: 0xC9F2, - 27785 - 11905: 0xB3C1, - 27786 - 11905: 0x9B58, - 27787 - 11905: 0x9B59, - 27788 - 11905: 0xE3E7, - 27789 - 11905: 0x9B5A, - 27790 - 11905: 0x9B5B, - 27791 - 11905: 0xC6E3, - 27792 - 11905: 0xE3E5, - 27793 - 11905: 0x9B5C, - 27794 - 11905: 0x9B5D, - 27795 - 11905: 0xEDB3, - 27796 - 11905: 0xE3E6, - 27797 - 11905: 0x9B5E, - 27798 - 11905: 0x9B5F, - 27799 - 11905: 0x9B60, - 27800 - 11905: 0x9B61, - 27801 - 11905: 0xC9B3, - 27802 - 11905: 0x9B62, - 27803 - 11905: 0xC5E6, - 27804 - 11905: 0x9B63, - 27805 - 11905: 0x9B64, - 27806 - 11905: 0x9B65, - 27807 - 11905: 0xB9B5, - 27808 - 11905: 0x9B66, - 27809 - 11905: 0xC3BB, - 27810 - 11905: 0x9B67, - 27811 - 11905: 0xE3E3, - 27812 - 11905: 0xC5BD, - 27813 - 11905: 0xC1A4, - 27814 - 11905: 0xC2D9, - 27815 - 11905: 0xB2D7, - 27816 - 11905: 0x9B68, - 27817 - 11905: 0xE3ED, - 27818 - 11905: 0xBBA6, - 27819 - 11905: 0xC4AD, - 27820 - 11905: 0x9B69, - 27821 - 11905: 0xE3F0, - 27822 - 11905: 0xBEDA, - 27823 - 11905: 0x9B6A, - 27824 - 11905: 0x9B6B, - 27825 - 11905: 0xE3FB, - 27826 - 11905: 0xE3F5, - 27827 - 11905: 0xBAD3, - 27828 - 11905: 0x9B6C, - 27829 - 11905: 0x9B6D, - 27830 - 11905: 0x9B6E, - 27831 - 11905: 0x9B6F, - 27832 - 11905: 0xB7D0, - 27833 - 11905: 0xD3CD, - 27834 - 11905: 0x9B70, - 27835 - 11905: 0xD6CE, - 27836 - 11905: 0xD5D3, - 27837 - 11905: 0xB9C1, - 27838 - 11905: 0xD5B4, - 27839 - 11905: 0xD1D8, - 27840 - 11905: 0x9B71, - 27841 - 11905: 0x9B72, - 27842 - 11905: 0x9B73, - 27843 - 11905: 0x9B74, - 27844 - 11905: 0xD0B9, - 27845 - 11905: 0xC7F6, - 27846 - 11905: 0x9B75, - 27847 - 11905: 0x9B76, - 27848 - 11905: 0x9B77, - 27849 - 11905: 0xC8AA, - 27850 - 11905: 0xB2B4, - 27851 - 11905: 0x9B78, - 27852 - 11905: 0xC3DA, - 27853 - 11905: 0x9B79, - 27854 - 11905: 0x9B7A, - 27855 - 11905: 0x9B7B, - 27856 - 11905: 0xE3EE, - 27857 - 11905: 0x9B7C, - 27858 - 11905: 0x9B7D, - 27859 - 11905: 0xE3FC, - 27860 - 11905: 0xE3EF, - 27861 - 11905: 0xB7A8, - 27862 - 11905: 0xE3F7, - 27863 - 11905: 0xE3F4, - 27864 - 11905: 0x9B7E, - 27865 - 11905: 0x9B80, - 27866 - 11905: 0x9B81, - 27867 - 11905: 0xB7BA, - 27868 - 11905: 0x9B82, - 27869 - 11905: 0x9B83, - 27870 - 11905: 0xC5A2, - 27871 - 11905: 0x9B84, - 27872 - 11905: 0xE3F6, - 27873 - 11905: 0xC5DD, - 27874 - 11905: 0xB2A8, - 27875 - 11905: 0xC6FC, - 27876 - 11905: 0x9B85, - 27877 - 11905: 0xC4E0, - 27878 - 11905: 0x9B86, - 27879 - 11905: 0x9B87, - 27880 - 11905: 0xD7A2, - 27881 - 11905: 0x9B88, - 27882 - 11905: 0xC0E1, - 27883 - 11905: 0xE3F9, - 27884 - 11905: 0x9B89, - 27885 - 11905: 0x9B8A, - 27886 - 11905: 0xE3FA, - 27887 - 11905: 0xE3FD, - 27888 - 11905: 0xCCA9, - 27889 - 11905: 0xE3F3, - 27890 - 11905: 0x9B8B, - 27891 - 11905: 0xD3BE, - 27892 - 11905: 0x9B8C, - 27893 - 11905: 0xB1C3, - 27894 - 11905: 0xEDB4, - 27895 - 11905: 0xE3F1, - 27896 - 11905: 0xE3F2, - 27897 - 11905: 0x9B8D, - 27898 - 11905: 0xE3F8, - 27899 - 11905: 0xD0BA, - 27900 - 11905: 0xC6C3, - 27901 - 11905: 0xD4F3, - 27902 - 11905: 0xE3FE, - 27903 - 11905: 0x9B8E, - 27904 - 11905: 0x9B8F, - 27905 - 11905: 0xBDE0, - 27906 - 11905: 0x9B90, - 27907 - 11905: 0x9B91, - 27908 - 11905: 0xE4A7, - 27909 - 11905: 0x9B92, - 27910 - 11905: 0x9B93, - 27911 - 11905: 0xE4A6, - 27912 - 11905: 0x9B94, - 27913 - 11905: 0x9B95, - 27914 - 11905: 0x9B96, - 27915 - 11905: 0xD1F3, - 27916 - 11905: 0xE4A3, - 27917 - 11905: 0x9B97, - 27918 - 11905: 0xE4A9, - 27919 - 11905: 0x9B98, - 27920 - 11905: 0x9B99, - 27921 - 11905: 0x9B9A, - 27922 - 11905: 0xC8F7, - 27923 - 11905: 0x9B9B, - 27924 - 11905: 0x9B9C, - 27925 - 11905: 0x9B9D, - 27926 - 11905: 0x9B9E, - 27927 - 11905: 0xCFB4, - 27928 - 11905: 0x9B9F, - 27929 - 11905: 0xE4A8, - 27930 - 11905: 0xE4AE, - 27931 - 11905: 0xC2E5, - 27932 - 11905: 0x9BA0, - 27933 - 11905: 0x9BA1, - 27934 - 11905: 0xB6B4, - 27935 - 11905: 0x9BA2, - 27936 - 11905: 0x9BA3, - 27937 - 11905: 0x9BA4, - 27938 - 11905: 0x9BA5, - 27939 - 11905: 0x9BA6, - 27940 - 11905: 0x9BA7, - 27941 - 11905: 0xBDF2, - 27942 - 11905: 0x9BA8, - 27943 - 11905: 0xE4A2, - 27944 - 11905: 0x9BA9, - 27945 - 11905: 0x9BAA, - 27946 - 11905: 0xBAE9, - 27947 - 11905: 0xE4AA, - 27948 - 11905: 0x9BAB, - 27949 - 11905: 0x9BAC, - 27950 - 11905: 0xE4AC, - 27951 - 11905: 0x9BAD, - 27952 - 11905: 0x9BAE, - 27953 - 11905: 0xB6FD, - 27954 - 11905: 0xD6DE, - 27955 - 11905: 0xE4B2, - 27956 - 11905: 0x9BAF, - 27957 - 11905: 0xE4AD, - 27958 - 11905: 0x9BB0, - 27959 - 11905: 0x9BB1, - 27960 - 11905: 0x9BB2, - 27961 - 11905: 0xE4A1, - 27962 - 11905: 0x9BB3, - 27963 - 11905: 0xBBEE, - 27964 - 11905: 0xCDDD, - 27965 - 11905: 0xC7A2, - 27966 - 11905: 0xC5C9, - 27967 - 11905: 0x9BB4, - 27968 - 11905: 0x9BB5, - 27969 - 11905: 0xC1F7, - 27970 - 11905: 0x9BB6, - 27971 - 11905: 0xE4A4, - 27972 - 11905: 0x9BB7, - 27973 - 11905: 0xC7B3, - 27974 - 11905: 0xBDAC, - 27975 - 11905: 0xBDBD, - 27976 - 11905: 0xE4A5, - 27977 - 11905: 0x9BB8, - 27978 - 11905: 0xD7C7, - 27979 - 11905: 0xB2E2, - 27980 - 11905: 0x9BB9, - 27981 - 11905: 0xE4AB, - 27982 - 11905: 0xBCC3, - 27983 - 11905: 0xE4AF, - 27984 - 11905: 0x9BBA, - 27985 - 11905: 0xBBEB, - 27986 - 11905: 0xE4B0, - 27987 - 11905: 0xC5A8, - 27988 - 11905: 0xE4B1, - 27989 - 11905: 0x9BBB, - 27990 - 11905: 0x9BBC, - 27991 - 11905: 0x9BBD, - 27992 - 11905: 0x9BBE, - 27993 - 11905: 0xD5E3, - 27994 - 11905: 0xBFA3, - 27995 - 11905: 0x9BBF, - 27996 - 11905: 0xE4BA, - 27997 - 11905: 0x9BC0, - 27998 - 11905: 0xE4B7, - 27999 - 11905: 0x9BC1, - 28000 - 11905: 0xE4BB, - 28001 - 11905: 0x9BC2, - 28002 - 11905: 0x9BC3, - 28003 - 11905: 0xE4BD, - 28004 - 11905: 0x9BC4, - 28005 - 11905: 0x9BC5, - 28006 - 11905: 0xC6D6, - 28007 - 11905: 0x9BC6, - 28008 - 11905: 0x9BC7, - 28009 - 11905: 0xBAC6, - 28010 - 11905: 0xC0CB, - 28011 - 11905: 0x9BC8, - 28012 - 11905: 0x9BC9, - 28013 - 11905: 0x9BCA, - 28014 - 11905: 0xB8A1, - 28015 - 11905: 0xE4B4, - 28016 - 11905: 0x9BCB, - 28017 - 11905: 0x9BCC, - 28018 - 11905: 0x9BCD, - 28019 - 11905: 0x9BCE, - 28020 - 11905: 0xD4A1, - 28021 - 11905: 0x9BCF, - 28022 - 11905: 0x9BD0, - 28023 - 11905: 0xBAA3, - 28024 - 11905: 0xBDFE, - 28025 - 11905: 0x9BD1, - 28026 - 11905: 0x9BD2, - 28027 - 11905: 0x9BD3, - 28028 - 11905: 0xE4BC, - 28029 - 11905: 0x9BD4, - 28030 - 11905: 0x9BD5, - 28031 - 11905: 0x9BD6, - 28032 - 11905: 0x9BD7, - 28033 - 11905: 0x9BD8, - 28034 - 11905: 0xCDBF, - 28035 - 11905: 0x9BD9, - 28036 - 11905: 0x9BDA, - 28037 - 11905: 0xC4F9, - 28038 - 11905: 0x9BDB, - 28039 - 11905: 0x9BDC, - 28040 - 11905: 0xCFFB, - 28041 - 11905: 0xC9E6, - 28042 - 11905: 0x9BDD, - 28043 - 11905: 0x9BDE, - 28044 - 11905: 0xD3BF, - 28045 - 11905: 0x9BDF, - 28046 - 11905: 0xCFD1, - 28047 - 11905: 0x9BE0, - 28048 - 11905: 0x9BE1, - 28049 - 11905: 0xE4B3, - 28050 - 11905: 0x9BE2, - 28051 - 11905: 0xE4B8, - 28052 - 11905: 0xE4B9, - 28053 - 11905: 0xCCE9, - 28054 - 11905: 0x9BE3, - 28055 - 11905: 0x9BE4, - 28056 - 11905: 0x9BE5, - 28057 - 11905: 0x9BE6, - 28058 - 11905: 0x9BE7, - 28059 - 11905: 0xCCCE, - 28060 - 11905: 0x9BE8, - 28061 - 11905: 0xC0D4, - 28062 - 11905: 0xE4B5, - 28063 - 11905: 0xC1B0, - 28064 - 11905: 0xE4B6, - 28065 - 11905: 0xCED0, - 28066 - 11905: 0x9BE9, - 28067 - 11905: 0xBBC1, - 28068 - 11905: 0xB5D3, - 28069 - 11905: 0x9BEA, - 28070 - 11905: 0xC8F3, - 28071 - 11905: 0xBDA7, - 28072 - 11905: 0xD5C7, - 28073 - 11905: 0xC9AC, - 28074 - 11905: 0xB8A2, - 28075 - 11905: 0xE4CA, - 28076 - 11905: 0x9BEB, - 28077 - 11905: 0x9BEC, - 28078 - 11905: 0xE4CC, - 28079 - 11905: 0xD1C4, - 28080 - 11905: 0x9BED, - 28081 - 11905: 0x9BEE, - 28082 - 11905: 0xD2BA, - 28083 - 11905: 0x9BEF, - 28084 - 11905: 0x9BF0, - 28085 - 11905: 0xBAAD, - 28086 - 11905: 0x9BF1, - 28087 - 11905: 0x9BF2, - 28088 - 11905: 0xBAD4, - 28089 - 11905: 0x9BF3, - 28090 - 11905: 0x9BF4, - 28091 - 11905: 0x9BF5, - 28092 - 11905: 0x9BF6, - 28093 - 11905: 0x9BF7, - 28094 - 11905: 0x9BF8, - 28095 - 11905: 0xE4C3, - 28096 - 11905: 0xB5ED, - 28097 - 11905: 0x9BF9, - 28098 - 11905: 0x9BFA, - 28099 - 11905: 0x9BFB, - 28100 - 11905: 0xD7CD, - 28101 - 11905: 0xE4C0, - 28102 - 11905: 0xCFFD, - 28103 - 11905: 0xE4BF, - 28104 - 11905: 0x9BFC, - 28105 - 11905: 0x9BFD, - 28106 - 11905: 0x9BFE, - 28107 - 11905: 0xC1DC, - 28108 - 11905: 0xCCCA, - 28109 - 11905: 0x9C40, - 28110 - 11905: 0x9C41, - 28111 - 11905: 0x9C42, - 28112 - 11905: 0x9C43, - 28113 - 11905: 0xCAE7, - 28114 - 11905: 0x9C44, - 28115 - 11905: 0x9C45, - 28116 - 11905: 0x9C46, - 28117 - 11905: 0x9C47, - 28118 - 11905: 0xC4D7, - 28119 - 11905: 0x9C48, - 28120 - 11905: 0xCCD4, - 28121 - 11905: 0xE4C8, - 28122 - 11905: 0x9C49, - 28123 - 11905: 0x9C4A, - 28124 - 11905: 0x9C4B, - 28125 - 11905: 0xE4C7, - 28126 - 11905: 0xE4C1, - 28127 - 11905: 0x9C4C, - 28128 - 11905: 0xE4C4, - 28129 - 11905: 0xB5AD, - 28130 - 11905: 0x9C4D, - 28131 - 11905: 0x9C4E, - 28132 - 11905: 0xD3D9, - 28133 - 11905: 0x9C4F, - 28134 - 11905: 0xE4C6, - 28135 - 11905: 0x9C50, - 28136 - 11905: 0x9C51, - 28137 - 11905: 0x9C52, - 28138 - 11905: 0x9C53, - 28139 - 11905: 0xD2F9, - 28140 - 11905: 0xB4E3, - 28141 - 11905: 0x9C54, - 28142 - 11905: 0xBBB4, - 28143 - 11905: 0x9C55, - 28144 - 11905: 0x9C56, - 28145 - 11905: 0xC9EE, - 28146 - 11905: 0x9C57, - 28147 - 11905: 0xB4BE, - 28148 - 11905: 0x9C58, - 28149 - 11905: 0x9C59, - 28150 - 11905: 0x9C5A, - 28151 - 11905: 0xBBEC, - 28152 - 11905: 0x9C5B, - 28153 - 11905: 0xD1CD, - 28154 - 11905: 0x9C5C, - 28155 - 11905: 0xCCED, - 28156 - 11905: 0xEDB5, - 28157 - 11905: 0x9C5D, - 28158 - 11905: 0x9C5E, - 28159 - 11905: 0x9C5F, - 28160 - 11905: 0x9C60, - 28161 - 11905: 0x9C61, - 28162 - 11905: 0x9C62, - 28163 - 11905: 0x9C63, - 28164 - 11905: 0x9C64, - 28165 - 11905: 0xC7E5, - 28166 - 11905: 0x9C65, - 28167 - 11905: 0x9C66, - 28168 - 11905: 0x9C67, - 28169 - 11905: 0x9C68, - 28170 - 11905: 0xD4A8, - 28171 - 11905: 0x9C69, - 28172 - 11905: 0xE4CB, - 28173 - 11905: 0xD7D5, - 28174 - 11905: 0xE4C2, - 28175 - 11905: 0x9C6A, - 28176 - 11905: 0xBDA5, - 28177 - 11905: 0xE4C5, - 28178 - 11905: 0x9C6B, - 28179 - 11905: 0x9C6C, - 28180 - 11905: 0xD3E6, - 28181 - 11905: 0x9C6D, - 28182 - 11905: 0xE4C9, - 28183 - 11905: 0xC9F8, - 28184 - 11905: 0x9C6E, - 28185 - 11905: 0x9C6F, - 28186 - 11905: 0xE4BE, - 28187 - 11905: 0x9C70, - 28188 - 11905: 0x9C71, - 28189 - 11905: 0xD3E5, - 28190 - 11905: 0x9C72, - 28191 - 11905: 0x9C73, - 28192 - 11905: 0xC7FE, - 28193 - 11905: 0xB6C9, - 28194 - 11905: 0x9C74, - 28195 - 11905: 0xD4FC, - 28196 - 11905: 0xB2B3, - 28197 - 11905: 0xE4D7, - 28198 - 11905: 0x9C75, - 28199 - 11905: 0x9C76, - 28200 - 11905: 0x9C77, - 28201 - 11905: 0xCEC2, - 28202 - 11905: 0x9C78, - 28203 - 11905: 0xE4CD, - 28204 - 11905: 0x9C79, - 28205 - 11905: 0xCEBC, - 28206 - 11905: 0x9C7A, - 28207 - 11905: 0xB8DB, - 28208 - 11905: 0x9C7B, - 28209 - 11905: 0x9C7C, - 28210 - 11905: 0xE4D6, - 28211 - 11905: 0x9C7D, - 28212 - 11905: 0xBFCA, - 28213 - 11905: 0x9C7E, - 28214 - 11905: 0x9C80, - 28215 - 11905: 0x9C81, - 28216 - 11905: 0xD3CE, - 28217 - 11905: 0x9C82, - 28218 - 11905: 0xC3EC, - 28219 - 11905: 0x9C83, - 28220 - 11905: 0x9C84, - 28221 - 11905: 0x9C85, - 28222 - 11905: 0x9C86, - 28223 - 11905: 0x9C87, - 28224 - 11905: 0x9C88, - 28225 - 11905: 0x9C89, - 28226 - 11905: 0x9C8A, - 28227 - 11905: 0xC5C8, - 28228 - 11905: 0xE4D8, - 28229 - 11905: 0x9C8B, - 28230 - 11905: 0x9C8C, - 28231 - 11905: 0x9C8D, - 28232 - 11905: 0x9C8E, - 28233 - 11905: 0x9C8F, - 28234 - 11905: 0x9C90, - 28235 - 11905: 0x9C91, - 28236 - 11905: 0x9C92, - 28237 - 11905: 0xCDC4, - 28238 - 11905: 0xE4CF, - 28239 - 11905: 0x9C93, - 28240 - 11905: 0x9C94, - 28241 - 11905: 0x9C95, - 28242 - 11905: 0x9C96, - 28243 - 11905: 0xE4D4, - 28244 - 11905: 0xE4D5, - 28245 - 11905: 0x9C97, - 28246 - 11905: 0xBAFE, - 28247 - 11905: 0x9C98, - 28248 - 11905: 0xCFE6, - 28249 - 11905: 0x9C99, - 28250 - 11905: 0x9C9A, - 28251 - 11905: 0xD5BF, - 28252 - 11905: 0x9C9B, - 28253 - 11905: 0x9C9C, - 28254 - 11905: 0x9C9D, - 28255 - 11905: 0xE4D2, - 28256 - 11905: 0x9C9E, - 28257 - 11905: 0x9C9F, - 28258 - 11905: 0x9CA0, - 28259 - 11905: 0x9CA1, - 28260 - 11905: 0x9CA2, - 28261 - 11905: 0x9CA3, - 28262 - 11905: 0x9CA4, - 28263 - 11905: 0x9CA5, - 28264 - 11905: 0x9CA6, - 28265 - 11905: 0x9CA7, - 28266 - 11905: 0x9CA8, - 28267 - 11905: 0xE4D0, - 28268 - 11905: 0x9CA9, - 28269 - 11905: 0x9CAA, - 28270 - 11905: 0xE4CE, - 28271 - 11905: 0x9CAB, - 28272 - 11905: 0x9CAC, - 28273 - 11905: 0x9CAD, - 28274 - 11905: 0x9CAE, - 28275 - 11905: 0x9CAF, - 28276 - 11905: 0x9CB0, - 28277 - 11905: 0x9CB1, - 28278 - 11905: 0x9CB2, - 28279 - 11905: 0x9CB3, - 28280 - 11905: 0x9CB4, - 28281 - 11905: 0x9CB5, - 28282 - 11905: 0x9CB6, - 28283 - 11905: 0x9CB7, - 28284 - 11905: 0x9CB8, - 28285 - 11905: 0x9CB9, - 28286 - 11905: 0xCDE5, - 28287 - 11905: 0xCAAA, - 28288 - 11905: 0x9CBA, - 28289 - 11905: 0x9CBB, - 28290 - 11905: 0x9CBC, - 28291 - 11905: 0xC0A3, - 28292 - 11905: 0x9CBD, - 28293 - 11905: 0xBDA6, - 28294 - 11905: 0xE4D3, - 28295 - 11905: 0x9CBE, - 28296 - 11905: 0x9CBF, - 28297 - 11905: 0xB8C8, - 28298 - 11905: 0x9CC0, - 28299 - 11905: 0x9CC1, - 28300 - 11905: 0x9CC2, - 28301 - 11905: 0x9CC3, - 28302 - 11905: 0x9CC4, - 28303 - 11905: 0xE4E7, - 28304 - 11905: 0xD4B4, - 28305 - 11905: 0x9CC5, - 28306 - 11905: 0x9CC6, - 28307 - 11905: 0x9CC7, - 28308 - 11905: 0x9CC8, - 28309 - 11905: 0x9CC9, - 28310 - 11905: 0x9CCA, - 28311 - 11905: 0x9CCB, - 28312 - 11905: 0xE4DB, - 28313 - 11905: 0x9CCC, - 28314 - 11905: 0x9CCD, - 28315 - 11905: 0x9CCE, - 28316 - 11905: 0xC1EF, - 28317 - 11905: 0x9CCF, - 28318 - 11905: 0x9CD0, - 28319 - 11905: 0xE4E9, - 28320 - 11905: 0x9CD1, - 28321 - 11905: 0x9CD2, - 28322 - 11905: 0xD2E7, - 28323 - 11905: 0x9CD3, - 28324 - 11905: 0x9CD4, - 28325 - 11905: 0xE4DF, - 28326 - 11905: 0x9CD5, - 28327 - 11905: 0xE4E0, - 28328 - 11905: 0x9CD6, - 28329 - 11905: 0x9CD7, - 28330 - 11905: 0xCFAA, - 28331 - 11905: 0x9CD8, - 28332 - 11905: 0x9CD9, - 28333 - 11905: 0x9CDA, - 28334 - 11905: 0x9CDB, - 28335 - 11905: 0xCBDD, - 28336 - 11905: 0x9CDC, - 28337 - 11905: 0xE4DA, - 28338 - 11905: 0xE4D1, - 28339 - 11905: 0x9CDD, - 28340 - 11905: 0xE4E5, - 28341 - 11905: 0x9CDE, - 28342 - 11905: 0xC8DC, - 28343 - 11905: 0xE4E3, - 28344 - 11905: 0x9CDF, - 28345 - 11905: 0x9CE0, - 28346 - 11905: 0xC4E7, - 28347 - 11905: 0xE4E2, - 28348 - 11905: 0x9CE1, - 28349 - 11905: 0xE4E1, - 28350 - 11905: 0x9CE2, - 28351 - 11905: 0x9CE3, - 28352 - 11905: 0x9CE4, - 28353 - 11905: 0xB3FC, - 28354 - 11905: 0xE4E8, - 28355 - 11905: 0x9CE5, - 28356 - 11905: 0x9CE6, - 28357 - 11905: 0x9CE7, - 28358 - 11905: 0x9CE8, - 28359 - 11905: 0xB5E1, - 28360 - 11905: 0x9CE9, - 28361 - 11905: 0x9CEA, - 28362 - 11905: 0x9CEB, - 28363 - 11905: 0xD7CC, - 28364 - 11905: 0x9CEC, - 28365 - 11905: 0x9CED, - 28366 - 11905: 0x9CEE, - 28367 - 11905: 0xE4E6, - 28368 - 11905: 0x9CEF, - 28369 - 11905: 0xBBAC, - 28370 - 11905: 0x9CF0, - 28371 - 11905: 0xD7D2, - 28372 - 11905: 0xCCCF, - 28373 - 11905: 0xEBF8, - 28374 - 11905: 0x9CF1, - 28375 - 11905: 0xE4E4, - 28376 - 11905: 0x9CF2, - 28377 - 11905: 0x9CF3, - 28378 - 11905: 0xB9F6, - 28379 - 11905: 0x9CF4, - 28380 - 11905: 0x9CF5, - 28381 - 11905: 0x9CF6, - 28382 - 11905: 0xD6CD, - 28383 - 11905: 0xE4D9, - 28384 - 11905: 0xE4DC, - 28385 - 11905: 0xC2FA, - 28386 - 11905: 0xE4DE, - 28387 - 11905: 0x9CF7, - 28388 - 11905: 0xC2CB, - 28389 - 11905: 0xC0C4, - 28390 - 11905: 0xC2D0, - 28391 - 11905: 0x9CF8, - 28392 - 11905: 0xB1F5, - 28393 - 11905: 0xCCB2, - 28394 - 11905: 0x9CF9, - 28395 - 11905: 0x9CFA, - 28396 - 11905: 0x9CFB, - 28397 - 11905: 0x9CFC, - 28398 - 11905: 0x9CFD, - 28399 - 11905: 0x9CFE, - 28400 - 11905: 0x9D40, - 28401 - 11905: 0x9D41, - 28402 - 11905: 0x9D42, - 28403 - 11905: 0x9D43, - 28404 - 11905: 0xB5CE, - 28405 - 11905: 0x9D44, - 28406 - 11905: 0x9D45, - 28407 - 11905: 0x9D46, - 28408 - 11905: 0x9D47, - 28409 - 11905: 0xE4EF, - 28410 - 11905: 0x9D48, - 28411 - 11905: 0x9D49, - 28412 - 11905: 0x9D4A, - 28413 - 11905: 0x9D4B, - 28414 - 11905: 0x9D4C, - 28415 - 11905: 0x9D4D, - 28416 - 11905: 0x9D4E, - 28417 - 11905: 0x9D4F, - 28418 - 11905: 0xC6AF, - 28419 - 11905: 0x9D50, - 28420 - 11905: 0x9D51, - 28421 - 11905: 0x9D52, - 28422 - 11905: 0xC6E1, - 28423 - 11905: 0x9D53, - 28424 - 11905: 0x9D54, - 28425 - 11905: 0xE4F5, - 28426 - 11905: 0x9D55, - 28427 - 11905: 0x9D56, - 28428 - 11905: 0x9D57, - 28429 - 11905: 0x9D58, - 28430 - 11905: 0x9D59, - 28431 - 11905: 0xC2A9, - 28432 - 11905: 0x9D5A, - 28433 - 11905: 0x9D5B, - 28434 - 11905: 0x9D5C, - 28435 - 11905: 0xC0EC, - 28436 - 11905: 0xD1DD, - 28437 - 11905: 0xE4EE, - 28438 - 11905: 0x9D5D, - 28439 - 11905: 0x9D5E, - 28440 - 11905: 0x9D5F, - 28441 - 11905: 0x9D60, - 28442 - 11905: 0x9D61, - 28443 - 11905: 0x9D62, - 28444 - 11905: 0x9D63, - 28445 - 11905: 0x9D64, - 28446 - 11905: 0x9D65, - 28447 - 11905: 0x9D66, - 28448 - 11905: 0xC4AE, - 28449 - 11905: 0x9D67, - 28450 - 11905: 0x9D68, - 28451 - 11905: 0x9D69, - 28452 - 11905: 0xE4ED, - 28453 - 11905: 0x9D6A, - 28454 - 11905: 0x9D6B, - 28455 - 11905: 0x9D6C, - 28456 - 11905: 0x9D6D, - 28457 - 11905: 0xE4F6, - 28458 - 11905: 0xE4F4, - 28459 - 11905: 0xC2FE, - 28460 - 11905: 0x9D6E, - 28461 - 11905: 0xE4DD, - 28462 - 11905: 0x9D6F, - 28463 - 11905: 0xE4F0, - 28464 - 11905: 0x9D70, - 28465 - 11905: 0xCAFE, - 28466 - 11905: 0x9D71, - 28467 - 11905: 0xD5C4, - 28468 - 11905: 0x9D72, - 28469 - 11905: 0x9D73, - 28470 - 11905: 0xE4F1, - 28471 - 11905: 0x9D74, - 28472 - 11905: 0x9D75, - 28473 - 11905: 0x9D76, - 28474 - 11905: 0x9D77, - 28475 - 11905: 0x9D78, - 28476 - 11905: 0x9D79, - 28477 - 11905: 0x9D7A, - 28478 - 11905: 0xD1FA, - 28479 - 11905: 0x9D7B, - 28480 - 11905: 0x9D7C, - 28481 - 11905: 0x9D7D, - 28482 - 11905: 0x9D7E, - 28483 - 11905: 0x9D80, - 28484 - 11905: 0x9D81, - 28485 - 11905: 0x9D82, - 28486 - 11905: 0xE4EB, - 28487 - 11905: 0xE4EC, - 28488 - 11905: 0x9D83, - 28489 - 11905: 0x9D84, - 28490 - 11905: 0x9D85, - 28491 - 11905: 0xE4F2, - 28492 - 11905: 0x9D86, - 28493 - 11905: 0xCEAB, - 28494 - 11905: 0x9D87, - 28495 - 11905: 0x9D88, - 28496 - 11905: 0x9D89, - 28497 - 11905: 0x9D8A, - 28498 - 11905: 0x9D8B, - 28499 - 11905: 0x9D8C, - 28500 - 11905: 0x9D8D, - 28501 - 11905: 0x9D8E, - 28502 - 11905: 0x9D8F, - 28503 - 11905: 0x9D90, - 28504 - 11905: 0xC5CB, - 28505 - 11905: 0x9D91, - 28506 - 11905: 0x9D92, - 28507 - 11905: 0x9D93, - 28508 - 11905: 0xC7B1, - 28509 - 11905: 0x9D94, - 28510 - 11905: 0xC2BA, - 28511 - 11905: 0x9D95, - 28512 - 11905: 0x9D96, - 28513 - 11905: 0x9D97, - 28514 - 11905: 0xE4EA, - 28515 - 11905: 0x9D98, - 28516 - 11905: 0x9D99, - 28517 - 11905: 0x9D9A, - 28518 - 11905: 0xC1CA, - 28519 - 11905: 0x9D9B, - 28520 - 11905: 0x9D9C, - 28521 - 11905: 0x9D9D, - 28522 - 11905: 0x9D9E, - 28523 - 11905: 0x9D9F, - 28524 - 11905: 0x9DA0, - 28525 - 11905: 0xCCB6, - 28526 - 11905: 0xB3B1, - 28527 - 11905: 0x9DA1, - 28528 - 11905: 0x9DA2, - 28529 - 11905: 0x9DA3, - 28530 - 11905: 0xE4FB, - 28531 - 11905: 0x9DA4, - 28532 - 11905: 0xE4F3, - 28533 - 11905: 0x9DA5, - 28534 - 11905: 0x9DA6, - 28535 - 11905: 0x9DA7, - 28536 - 11905: 0xE4FA, - 28537 - 11905: 0x9DA8, - 28538 - 11905: 0xE4FD, - 28539 - 11905: 0x9DA9, - 28540 - 11905: 0xE4FC, - 28541 - 11905: 0x9DAA, - 28542 - 11905: 0x9DAB, - 28543 - 11905: 0x9DAC, - 28544 - 11905: 0x9DAD, - 28545 - 11905: 0x9DAE, - 28546 - 11905: 0x9DAF, - 28547 - 11905: 0x9DB0, - 28548 - 11905: 0xB3CE, - 28549 - 11905: 0x9DB1, - 28550 - 11905: 0x9DB2, - 28551 - 11905: 0x9DB3, - 28552 - 11905: 0xB3BA, - 28553 - 11905: 0xE4F7, - 28554 - 11905: 0x9DB4, - 28555 - 11905: 0x9DB5, - 28556 - 11905: 0xE4F9, - 28557 - 11905: 0xE4F8, - 28558 - 11905: 0xC5EC, - 28559 - 11905: 0x9DB6, - 28560 - 11905: 0x9DB7, - 28561 - 11905: 0x9DB8, - 28562 - 11905: 0x9DB9, - 28563 - 11905: 0x9DBA, - 28564 - 11905: 0x9DBB, - 28565 - 11905: 0x9DBC, - 28566 - 11905: 0x9DBD, - 28567 - 11905: 0x9DBE, - 28568 - 11905: 0x9DBF, - 28569 - 11905: 0x9DC0, - 28570 - 11905: 0x9DC1, - 28571 - 11905: 0x9DC2, - 28572 - 11905: 0xC0BD, - 28573 - 11905: 0x9DC3, - 28574 - 11905: 0x9DC4, - 28575 - 11905: 0x9DC5, - 28576 - 11905: 0x9DC6, - 28577 - 11905: 0xD4E8, - 28578 - 11905: 0x9DC7, - 28579 - 11905: 0x9DC8, - 28580 - 11905: 0x9DC9, - 28581 - 11905: 0x9DCA, - 28582 - 11905: 0x9DCB, - 28583 - 11905: 0xE5A2, - 28584 - 11905: 0x9DCC, - 28585 - 11905: 0x9DCD, - 28586 - 11905: 0x9DCE, - 28587 - 11905: 0x9DCF, - 28588 - 11905: 0x9DD0, - 28589 - 11905: 0x9DD1, - 28590 - 11905: 0x9DD2, - 28591 - 11905: 0x9DD3, - 28592 - 11905: 0x9DD4, - 28593 - 11905: 0x9DD5, - 28594 - 11905: 0x9DD6, - 28595 - 11905: 0xB0C4, - 28596 - 11905: 0x9DD7, - 28597 - 11905: 0x9DD8, - 28598 - 11905: 0xE5A4, - 28599 - 11905: 0x9DD9, - 28600 - 11905: 0x9DDA, - 28601 - 11905: 0xE5A3, - 28602 - 11905: 0x9DDB, - 28603 - 11905: 0x9DDC, - 28604 - 11905: 0x9DDD, - 28605 - 11905: 0x9DDE, - 28606 - 11905: 0x9DDF, - 28607 - 11905: 0x9DE0, - 28608 - 11905: 0xBCA4, - 28609 - 11905: 0x9DE1, - 28610 - 11905: 0xE5A5, - 28611 - 11905: 0x9DE2, - 28612 - 11905: 0x9DE3, - 28613 - 11905: 0x9DE4, - 28614 - 11905: 0x9DE5, - 28615 - 11905: 0x9DE6, - 28616 - 11905: 0x9DE7, - 28617 - 11905: 0xE5A1, - 28618 - 11905: 0x9DE8, - 28619 - 11905: 0x9DE9, - 28620 - 11905: 0x9DEA, - 28621 - 11905: 0x9DEB, - 28622 - 11905: 0x9DEC, - 28623 - 11905: 0x9DED, - 28624 - 11905: 0x9DEE, - 28625 - 11905: 0xE4FE, - 28626 - 11905: 0xB1F4, - 28627 - 11905: 0x9DEF, - 28628 - 11905: 0x9DF0, - 28629 - 11905: 0x9DF1, - 28630 - 11905: 0x9DF2, - 28631 - 11905: 0x9DF3, - 28632 - 11905: 0x9DF4, - 28633 - 11905: 0x9DF5, - 28634 - 11905: 0x9DF6, - 28635 - 11905: 0x9DF7, - 28636 - 11905: 0x9DF8, - 28637 - 11905: 0x9DF9, - 28638 - 11905: 0xE5A8, - 28639 - 11905: 0x9DFA, - 28640 - 11905: 0xE5A9, - 28641 - 11905: 0xE5A6, - 28642 - 11905: 0x9DFB, - 28643 - 11905: 0x9DFC, - 28644 - 11905: 0x9DFD, - 28645 - 11905: 0x9DFE, - 28646 - 11905: 0x9E40, - 28647 - 11905: 0x9E41, - 28648 - 11905: 0x9E42, - 28649 - 11905: 0x9E43, - 28650 - 11905: 0x9E44, - 28651 - 11905: 0x9E45, - 28652 - 11905: 0x9E46, - 28653 - 11905: 0x9E47, - 28654 - 11905: 0xE5A7, - 28655 - 11905: 0xE5AA, - 28656 - 11905: 0x9E48, - 28657 - 11905: 0x9E49, - 28658 - 11905: 0x9E4A, - 28659 - 11905: 0x9E4B, - 28660 - 11905: 0x9E4C, - 28661 - 11905: 0x9E4D, - 28662 - 11905: 0x9E4E, - 28663 - 11905: 0x9E4F, - 28664 - 11905: 0x9E50, - 28665 - 11905: 0x9E51, - 28666 - 11905: 0x9E52, - 28667 - 11905: 0x9E53, - 28668 - 11905: 0x9E54, - 28669 - 11905: 0x9E55, - 28670 - 11905: 0x9E56, - 28671 - 11905: 0x9E57, - 28672 - 11905: 0x9E58, - 28673 - 11905: 0x9E59, - 28674 - 11905: 0x9E5A, - 28675 - 11905: 0x9E5B, - 28676 - 11905: 0x9E5C, - 28677 - 11905: 0x9E5D, - 28678 - 11905: 0x9E5E, - 28679 - 11905: 0x9E5F, - 28680 - 11905: 0x9E60, - 28681 - 11905: 0x9E61, - 28682 - 11905: 0x9E62, - 28683 - 11905: 0x9E63, - 28684 - 11905: 0x9E64, - 28685 - 11905: 0x9E65, - 28686 - 11905: 0x9E66, - 28687 - 11905: 0x9E67, - 28688 - 11905: 0x9E68, - 28689 - 11905: 0xC6D9, - 28690 - 11905: 0x9E69, - 28691 - 11905: 0x9E6A, - 28692 - 11905: 0x9E6B, - 28693 - 11905: 0x9E6C, - 28694 - 11905: 0x9E6D, - 28695 - 11905: 0x9E6E, - 28696 - 11905: 0x9E6F, - 28697 - 11905: 0x9E70, - 28698 - 11905: 0xE5AB, - 28699 - 11905: 0xE5AD, - 28700 - 11905: 0x9E71, - 28701 - 11905: 0x9E72, - 28702 - 11905: 0x9E73, - 28703 - 11905: 0x9E74, - 28704 - 11905: 0x9E75, - 28705 - 11905: 0x9E76, - 28706 - 11905: 0x9E77, - 28707 - 11905: 0xE5AC, - 28708 - 11905: 0x9E78, - 28709 - 11905: 0x9E79, - 28710 - 11905: 0x9E7A, - 28711 - 11905: 0x9E7B, - 28712 - 11905: 0x9E7C, - 28713 - 11905: 0x9E7D, - 28714 - 11905: 0x9E7E, - 28715 - 11905: 0x9E80, - 28716 - 11905: 0x9E81, - 28717 - 11905: 0x9E82, - 28718 - 11905: 0x9E83, - 28719 - 11905: 0x9E84, - 28720 - 11905: 0x9E85, - 28721 - 11905: 0x9E86, - 28722 - 11905: 0x9E87, - 28723 - 11905: 0x9E88, - 28724 - 11905: 0x9E89, - 28725 - 11905: 0xE5AF, - 28726 - 11905: 0x9E8A, - 28727 - 11905: 0x9E8B, - 28728 - 11905: 0x9E8C, - 28729 - 11905: 0xE5AE, - 28730 - 11905: 0x9E8D, - 28731 - 11905: 0x9E8E, - 28732 - 11905: 0x9E8F, - 28733 - 11905: 0x9E90, - 28734 - 11905: 0x9E91, - 28735 - 11905: 0x9E92, - 28736 - 11905: 0x9E93, - 28737 - 11905: 0x9E94, - 28738 - 11905: 0x9E95, - 28739 - 11905: 0x9E96, - 28740 - 11905: 0x9E97, - 28741 - 11905: 0x9E98, - 28742 - 11905: 0x9E99, - 28743 - 11905: 0x9E9A, - 28744 - 11905: 0x9E9B, - 28745 - 11905: 0x9E9C, - 28746 - 11905: 0x9E9D, - 28747 - 11905: 0x9E9E, - 28748 - 11905: 0xB9E0, - 28749 - 11905: 0x9E9F, - 28750 - 11905: 0x9EA0, - 28751 - 11905: 0xE5B0, - 28752 - 11905: 0x9EA1, - 28753 - 11905: 0x9EA2, - 28754 - 11905: 0x9EA3, - 28755 - 11905: 0x9EA4, - 28756 - 11905: 0x9EA5, - 28757 - 11905: 0x9EA6, - 28758 - 11905: 0x9EA7, - 28759 - 11905: 0x9EA8, - 28760 - 11905: 0x9EA9, - 28761 - 11905: 0x9EAA, - 28762 - 11905: 0x9EAB, - 28763 - 11905: 0x9EAC, - 28764 - 11905: 0x9EAD, - 28765 - 11905: 0x9EAE, - 28766 - 11905: 0xE5B1, - 28767 - 11905: 0x9EAF, - 28768 - 11905: 0x9EB0, - 28769 - 11905: 0x9EB1, - 28770 - 11905: 0x9EB2, - 28771 - 11905: 0x9EB3, - 28772 - 11905: 0x9EB4, - 28773 - 11905: 0x9EB5, - 28774 - 11905: 0x9EB6, - 28775 - 11905: 0x9EB7, - 28776 - 11905: 0x9EB8, - 28777 - 11905: 0x9EB9, - 28778 - 11905: 0x9EBA, - 28779 - 11905: 0xBBF0, - 28780 - 11905: 0xECE1, - 28781 - 11905: 0xC3F0, - 28782 - 11905: 0x9EBB, - 28783 - 11905: 0xB5C6, - 28784 - 11905: 0xBBD2, - 28785 - 11905: 0x9EBC, - 28786 - 11905: 0x9EBD, - 28787 - 11905: 0x9EBE, - 28788 - 11905: 0x9EBF, - 28789 - 11905: 0xC1E9, - 28790 - 11905: 0xD4EE, - 28791 - 11905: 0x9EC0, - 28792 - 11905: 0xBEC4, - 28793 - 11905: 0x9EC1, - 28794 - 11905: 0x9EC2, - 28795 - 11905: 0x9EC3, - 28796 - 11905: 0xD7C6, - 28797 - 11905: 0x9EC4, - 28798 - 11905: 0xD4D6, - 28799 - 11905: 0xB2D3, - 28800 - 11905: 0xECBE, - 28801 - 11905: 0x9EC5, - 28802 - 11905: 0x9EC6, - 28803 - 11905: 0x9EC7, - 28804 - 11905: 0x9EC8, - 28805 - 11905: 0xEAC1, - 28806 - 11905: 0x9EC9, - 28807 - 11905: 0x9ECA, - 28808 - 11905: 0x9ECB, - 28809 - 11905: 0xC2AF, - 28810 - 11905: 0xB4B6, - 28811 - 11905: 0x9ECC, - 28812 - 11905: 0x9ECD, - 28813 - 11905: 0x9ECE, - 28814 - 11905: 0xD1D7, - 28815 - 11905: 0x9ECF, - 28816 - 11905: 0x9ED0, - 28817 - 11905: 0x9ED1, - 28818 - 11905: 0xB3B4, - 28819 - 11905: 0x9ED2, - 28820 - 11905: 0xC8B2, - 28821 - 11905: 0xBFBB, - 28822 - 11905: 0xECC0, - 28823 - 11905: 0x9ED3, - 28824 - 11905: 0x9ED4, - 28825 - 11905: 0xD6CB, - 28826 - 11905: 0x9ED5, - 28827 - 11905: 0x9ED6, - 28828 - 11905: 0xECBF, - 28829 - 11905: 0xECC1, - 28830 - 11905: 0x9ED7, - 28831 - 11905: 0x9ED8, - 28832 - 11905: 0x9ED9, - 28833 - 11905: 0x9EDA, - 28834 - 11905: 0x9EDB, - 28835 - 11905: 0x9EDC, - 28836 - 11905: 0x9EDD, - 28837 - 11905: 0x9EDE, - 28838 - 11905: 0x9EDF, - 28839 - 11905: 0x9EE0, - 28840 - 11905: 0x9EE1, - 28841 - 11905: 0x9EE2, - 28842 - 11905: 0x9EE3, - 28843 - 11905: 0xECC5, - 28844 - 11905: 0xBEE6, - 28845 - 11905: 0xCCBF, - 28846 - 11905: 0xC5DA, - 28847 - 11905: 0xBEBC, - 28848 - 11905: 0x9EE4, - 28849 - 11905: 0xECC6, - 28850 - 11905: 0x9EE5, - 28851 - 11905: 0xB1FE, - 28852 - 11905: 0x9EE6, - 28853 - 11905: 0x9EE7, - 28854 - 11905: 0x9EE8, - 28855 - 11905: 0xECC4, - 28856 - 11905: 0xD5A8, - 28857 - 11905: 0xB5E3, - 28858 - 11905: 0x9EE9, - 28859 - 11905: 0xECC2, - 28860 - 11905: 0xC1B6, - 28861 - 11905: 0xB3E3, - 28862 - 11905: 0x9EEA, - 28863 - 11905: 0x9EEB, - 28864 - 11905: 0xECC3, - 28865 - 11905: 0xCBB8, - 28866 - 11905: 0xC0C3, - 28867 - 11905: 0xCCFE, - 28868 - 11905: 0x9EEC, - 28869 - 11905: 0x9EED, - 28870 - 11905: 0x9EEE, - 28871 - 11905: 0x9EEF, - 28872 - 11905: 0xC1D2, - 28873 - 11905: 0x9EF0, - 28874 - 11905: 0xECC8, - 28875 - 11905: 0x9EF1, - 28876 - 11905: 0x9EF2, - 28877 - 11905: 0x9EF3, - 28878 - 11905: 0x9EF4, - 28879 - 11905: 0x9EF5, - 28880 - 11905: 0x9EF6, - 28881 - 11905: 0x9EF7, - 28882 - 11905: 0x9EF8, - 28883 - 11905: 0x9EF9, - 28884 - 11905: 0x9EFA, - 28885 - 11905: 0x9EFB, - 28886 - 11905: 0x9EFC, - 28887 - 11905: 0x9EFD, - 28888 - 11905: 0xBAE6, - 28889 - 11905: 0xC0D3, - 28890 - 11905: 0x9EFE, - 28891 - 11905: 0xD6F2, - 28892 - 11905: 0x9F40, - 28893 - 11905: 0x9F41, - 28894 - 11905: 0x9F42, - 28895 - 11905: 0xD1CC, - 28896 - 11905: 0x9F43, - 28897 - 11905: 0x9F44, - 28898 - 11905: 0x9F45, - 28899 - 11905: 0x9F46, - 28900 - 11905: 0xBFBE, - 28901 - 11905: 0x9F47, - 28902 - 11905: 0xB7B3, - 28903 - 11905: 0xC9D5, - 28904 - 11905: 0xECC7, - 28905 - 11905: 0xBBE2, - 28906 - 11905: 0x9F48, - 28907 - 11905: 0xCCCC, - 28908 - 11905: 0xBDFD, - 28909 - 11905: 0xC8C8, - 28910 - 11905: 0x9F49, - 28911 - 11905: 0xCFA9, - 28912 - 11905: 0x9F4A, - 28913 - 11905: 0x9F4B, - 28914 - 11905: 0x9F4C, - 28915 - 11905: 0x9F4D, - 28916 - 11905: 0x9F4E, - 28917 - 11905: 0x9F4F, - 28918 - 11905: 0x9F50, - 28919 - 11905: 0xCDE9, - 28920 - 11905: 0x9F51, - 28921 - 11905: 0xC5EB, - 28922 - 11905: 0x9F52, - 28923 - 11905: 0x9F53, - 28924 - 11905: 0x9F54, - 28925 - 11905: 0xB7E9, - 28926 - 11905: 0x9F55, - 28927 - 11905: 0x9F56, - 28928 - 11905: 0x9F57, - 28929 - 11905: 0x9F58, - 28930 - 11905: 0x9F59, - 28931 - 11905: 0x9F5A, - 28932 - 11905: 0x9F5B, - 28933 - 11905: 0x9F5C, - 28934 - 11905: 0x9F5D, - 28935 - 11905: 0x9F5E, - 28936 - 11905: 0x9F5F, - 28937 - 11905: 0xD1C9, - 28938 - 11905: 0xBAB8, - 28939 - 11905: 0x9F60, - 28940 - 11905: 0x9F61, - 28941 - 11905: 0x9F62, - 28942 - 11905: 0x9F63, - 28943 - 11905: 0x9F64, - 28944 - 11905: 0xECC9, - 28945 - 11905: 0x9F65, - 28946 - 11905: 0x9F66, - 28947 - 11905: 0xECCA, - 28948 - 11905: 0x9F67, - 28949 - 11905: 0xBBC0, - 28950 - 11905: 0xECCB, - 28951 - 11905: 0x9F68, - 28952 - 11905: 0xECE2, - 28953 - 11905: 0xB1BA, - 28954 - 11905: 0xB7D9, - 28955 - 11905: 0x9F69, - 28956 - 11905: 0x9F6A, - 28957 - 11905: 0x9F6B, - 28958 - 11905: 0x9F6C, - 28959 - 11905: 0x9F6D, - 28960 - 11905: 0x9F6E, - 28961 - 11905: 0x9F6F, - 28962 - 11905: 0x9F70, - 28963 - 11905: 0x9F71, - 28964 - 11905: 0x9F72, - 28965 - 11905: 0x9F73, - 28966 - 11905: 0xBDB9, - 28967 - 11905: 0x9F74, - 28968 - 11905: 0x9F75, - 28969 - 11905: 0x9F76, - 28970 - 11905: 0x9F77, - 28971 - 11905: 0x9F78, - 28972 - 11905: 0x9F79, - 28973 - 11905: 0x9F7A, - 28974 - 11905: 0x9F7B, - 28975 - 11905: 0xECCC, - 28976 - 11905: 0xD1E6, - 28977 - 11905: 0xECCD, - 28978 - 11905: 0x9F7C, - 28979 - 11905: 0x9F7D, - 28980 - 11905: 0x9F7E, - 28981 - 11905: 0x9F80, - 28982 - 11905: 0xC8BB, - 28983 - 11905: 0x9F81, - 28984 - 11905: 0x9F82, - 28985 - 11905: 0x9F83, - 28986 - 11905: 0x9F84, - 28987 - 11905: 0x9F85, - 28988 - 11905: 0x9F86, - 28989 - 11905: 0x9F87, - 28990 - 11905: 0x9F88, - 28991 - 11905: 0x9F89, - 28992 - 11905: 0x9F8A, - 28993 - 11905: 0x9F8B, - 28994 - 11905: 0x9F8C, - 28995 - 11905: 0x9F8D, - 28996 - 11905: 0x9F8E, - 28997 - 11905: 0xECD1, - 28998 - 11905: 0x9F8F, - 28999 - 11905: 0x9F90, - 29000 - 11905: 0x9F91, - 29001 - 11905: 0x9F92, - 29002 - 11905: 0xECD3, - 29003 - 11905: 0x9F93, - 29004 - 11905: 0xBBCD, - 29005 - 11905: 0x9F94, - 29006 - 11905: 0xBCE5, - 29007 - 11905: 0x9F95, - 29008 - 11905: 0x9F96, - 29009 - 11905: 0x9F97, - 29010 - 11905: 0x9F98, - 29011 - 11905: 0x9F99, - 29012 - 11905: 0x9F9A, - 29013 - 11905: 0x9F9B, - 29014 - 11905: 0x9F9C, - 29015 - 11905: 0x9F9D, - 29016 - 11905: 0x9F9E, - 29017 - 11905: 0x9F9F, - 29018 - 11905: 0x9FA0, - 29019 - 11905: 0x9FA1, - 29020 - 11905: 0xECCF, - 29021 - 11905: 0x9FA2, - 29022 - 11905: 0xC9B7, - 29023 - 11905: 0x9FA3, - 29024 - 11905: 0x9FA4, - 29025 - 11905: 0x9FA5, - 29026 - 11905: 0x9FA6, - 29027 - 11905: 0x9FA7, - 29028 - 11905: 0xC3BA, - 29029 - 11905: 0x9FA8, - 29030 - 11905: 0xECE3, - 29031 - 11905: 0xD5D5, - 29032 - 11905: 0xECD0, - 29033 - 11905: 0x9FA9, - 29034 - 11905: 0x9FAA, - 29035 - 11905: 0x9FAB, - 29036 - 11905: 0x9FAC, - 29037 - 11905: 0x9FAD, - 29038 - 11905: 0xD6F3, - 29039 - 11905: 0x9FAE, - 29040 - 11905: 0x9FAF, - 29041 - 11905: 0x9FB0, - 29042 - 11905: 0xECD2, - 29043 - 11905: 0xECCE, - 29044 - 11905: 0x9FB1, - 29045 - 11905: 0x9FB2, - 29046 - 11905: 0x9FB3, - 29047 - 11905: 0x9FB4, - 29048 - 11905: 0xECD4, - 29049 - 11905: 0x9FB5, - 29050 - 11905: 0xECD5, - 29051 - 11905: 0x9FB6, - 29052 - 11905: 0x9FB7, - 29053 - 11905: 0xC9BF, - 29054 - 11905: 0x9FB8, - 29055 - 11905: 0x9FB9, - 29056 - 11905: 0x9FBA, - 29057 - 11905: 0x9FBB, - 29058 - 11905: 0x9FBC, - 29059 - 11905: 0x9FBD, - 29060 - 11905: 0xCFA8, - 29061 - 11905: 0x9FBE, - 29062 - 11905: 0x9FBF, - 29063 - 11905: 0x9FC0, - 29064 - 11905: 0x9FC1, - 29065 - 11905: 0x9FC2, - 29066 - 11905: 0xD0DC, - 29067 - 11905: 0x9FC3, - 29068 - 11905: 0x9FC4, - 29069 - 11905: 0x9FC5, - 29070 - 11905: 0x9FC6, - 29071 - 11905: 0xD1AC, - 29072 - 11905: 0x9FC7, - 29073 - 11905: 0x9FC8, - 29074 - 11905: 0x9FC9, - 29075 - 11905: 0x9FCA, - 29076 - 11905: 0xC8DB, - 29077 - 11905: 0x9FCB, - 29078 - 11905: 0x9FCC, - 29079 - 11905: 0x9FCD, - 29080 - 11905: 0xECD6, - 29081 - 11905: 0xCEF5, - 29082 - 11905: 0x9FCE, - 29083 - 11905: 0x9FCF, - 29084 - 11905: 0x9FD0, - 29085 - 11905: 0x9FD1, - 29086 - 11905: 0x9FD2, - 29087 - 11905: 0xCAEC, - 29088 - 11905: 0xECDA, - 29089 - 11905: 0x9FD3, - 29090 - 11905: 0x9FD4, - 29091 - 11905: 0x9FD5, - 29092 - 11905: 0x9FD6, - 29093 - 11905: 0x9FD7, - 29094 - 11905: 0x9FD8, - 29095 - 11905: 0x9FD9, - 29096 - 11905: 0xECD9, - 29097 - 11905: 0x9FDA, - 29098 - 11905: 0x9FDB, - 29099 - 11905: 0x9FDC, - 29100 - 11905: 0xB0BE, - 29101 - 11905: 0x9FDD, - 29102 - 11905: 0x9FDE, - 29103 - 11905: 0x9FDF, - 29104 - 11905: 0x9FE0, - 29105 - 11905: 0x9FE1, - 29106 - 11905: 0x9FE2, - 29107 - 11905: 0xECD7, - 29108 - 11905: 0x9FE3, - 29109 - 11905: 0xECD8, - 29110 - 11905: 0x9FE4, - 29111 - 11905: 0x9FE5, - 29112 - 11905: 0x9FE6, - 29113 - 11905: 0xECE4, - 29114 - 11905: 0x9FE7, - 29115 - 11905: 0x9FE8, - 29116 - 11905: 0x9FE9, - 29117 - 11905: 0x9FEA, - 29118 - 11905: 0x9FEB, - 29119 - 11905: 0x9FEC, - 29120 - 11905: 0x9FED, - 29121 - 11905: 0x9FEE, - 29122 - 11905: 0x9FEF, - 29123 - 11905: 0xC8BC, - 29124 - 11905: 0x9FF0, - 29125 - 11905: 0x9FF1, - 29126 - 11905: 0x9FF2, - 29127 - 11905: 0x9FF3, - 29128 - 11905: 0x9FF4, - 29129 - 11905: 0x9FF5, - 29130 - 11905: 0x9FF6, - 29131 - 11905: 0x9FF7, - 29132 - 11905: 0x9FF8, - 29133 - 11905: 0x9FF9, - 29134 - 11905: 0xC1C7, - 29135 - 11905: 0x9FFA, - 29136 - 11905: 0x9FFB, - 29137 - 11905: 0x9FFC, - 29138 - 11905: 0x9FFD, - 29139 - 11905: 0x9FFE, - 29140 - 11905: 0xECDC, - 29141 - 11905: 0xD1E0, - 29142 - 11905: 0xA040, - 29143 - 11905: 0xA041, - 29144 - 11905: 0xA042, - 29145 - 11905: 0xA043, - 29146 - 11905: 0xA044, - 29147 - 11905: 0xA045, - 29148 - 11905: 0xA046, - 29149 - 11905: 0xA047, - 29150 - 11905: 0xA048, - 29151 - 11905: 0xA049, - 29152 - 11905: 0xECDB, - 29153 - 11905: 0xA04A, - 29154 - 11905: 0xA04B, - 29155 - 11905: 0xA04C, - 29156 - 11905: 0xA04D, - 29157 - 11905: 0xD4EF, - 29158 - 11905: 0xA04E, - 29159 - 11905: 0xECDD, - 29160 - 11905: 0xA04F, - 29161 - 11905: 0xA050, - 29162 - 11905: 0xA051, - 29163 - 11905: 0xA052, - 29164 - 11905: 0xA053, - 29165 - 11905: 0xA054, - 29166 - 11905: 0xDBC6, - 29167 - 11905: 0xA055, - 29168 - 11905: 0xA056, - 29169 - 11905: 0xA057, - 29170 - 11905: 0xA058, - 29171 - 11905: 0xA059, - 29172 - 11905: 0xA05A, - 29173 - 11905: 0xA05B, - 29174 - 11905: 0xA05C, - 29175 - 11905: 0xA05D, - 29176 - 11905: 0xA05E, - 29177 - 11905: 0xECDE, - 29178 - 11905: 0xA05F, - 29179 - 11905: 0xA060, - 29180 - 11905: 0xA061, - 29181 - 11905: 0xA062, - 29182 - 11905: 0xA063, - 29183 - 11905: 0xA064, - 29184 - 11905: 0xA065, - 29185 - 11905: 0xA066, - 29186 - 11905: 0xA067, - 29187 - 11905: 0xA068, - 29188 - 11905: 0xA069, - 29189 - 11905: 0xA06A, - 29190 - 11905: 0xB1AC, - 29191 - 11905: 0xA06B, - 29192 - 11905: 0xA06C, - 29193 - 11905: 0xA06D, - 29194 - 11905: 0xA06E, - 29195 - 11905: 0xA06F, - 29196 - 11905: 0xA070, - 29197 - 11905: 0xA071, - 29198 - 11905: 0xA072, - 29199 - 11905: 0xA073, - 29200 - 11905: 0xA074, - 29201 - 11905: 0xA075, - 29202 - 11905: 0xA076, - 29203 - 11905: 0xA077, - 29204 - 11905: 0xA078, - 29205 - 11905: 0xA079, - 29206 - 11905: 0xA07A, - 29207 - 11905: 0xA07B, - 29208 - 11905: 0xA07C, - 29209 - 11905: 0xA07D, - 29210 - 11905: 0xA07E, - 29211 - 11905: 0xA080, - 29212 - 11905: 0xA081, - 29213 - 11905: 0xECDF, - 29214 - 11905: 0xA082, - 29215 - 11905: 0xA083, - 29216 - 11905: 0xA084, - 29217 - 11905: 0xA085, - 29218 - 11905: 0xA086, - 29219 - 11905: 0xA087, - 29220 - 11905: 0xA088, - 29221 - 11905: 0xA089, - 29222 - 11905: 0xA08A, - 29223 - 11905: 0xA08B, - 29224 - 11905: 0xECE0, - 29225 - 11905: 0xA08C, - 29226 - 11905: 0xD7A6, - 29227 - 11905: 0xA08D, - 29228 - 11905: 0xC5C0, - 29229 - 11905: 0xA08E, - 29230 - 11905: 0xA08F, - 29231 - 11905: 0xA090, - 29232 - 11905: 0xEBBC, - 29233 - 11905: 0xB0AE, - 29234 - 11905: 0xA091, - 29235 - 11905: 0xA092, - 29236 - 11905: 0xA093, - 29237 - 11905: 0xBEF4, - 29238 - 11905: 0xB8B8, - 29239 - 11905: 0xD2AF, - 29240 - 11905: 0xB0D6, - 29241 - 11905: 0xB5F9, - 29242 - 11905: 0xA094, - 29243 - 11905: 0xD8B3, - 29244 - 11905: 0xA095, - 29245 - 11905: 0xCBAC, - 29246 - 11905: 0xA096, - 29247 - 11905: 0xE3DD, - 29248 - 11905: 0xA097, - 29249 - 11905: 0xA098, - 29250 - 11905: 0xA099, - 29251 - 11905: 0xA09A, - 29252 - 11905: 0xA09B, - 29253 - 11905: 0xA09C, - 29254 - 11905: 0xA09D, - 29255 - 11905: 0xC6AC, - 29256 - 11905: 0xB0E6, - 29257 - 11905: 0xA09E, - 29258 - 11905: 0xA09F, - 29259 - 11905: 0xA0A0, - 29260 - 11905: 0xC5C6, - 29261 - 11905: 0xEBB9, - 29262 - 11905: 0xA0A1, - 29263 - 11905: 0xA0A2, - 29264 - 11905: 0xA0A3, - 29265 - 11905: 0xA0A4, - 29266 - 11905: 0xEBBA, - 29267 - 11905: 0xA0A5, - 29268 - 11905: 0xA0A6, - 29269 - 11905: 0xA0A7, - 29270 - 11905: 0xEBBB, - 29271 - 11905: 0xA0A8, - 29272 - 11905: 0xA0A9, - 29273 - 11905: 0xD1C0, - 29274 - 11905: 0xA0AA, - 29275 - 11905: 0xC5A3, - 29276 - 11905: 0xA0AB, - 29277 - 11905: 0xEAF2, - 29278 - 11905: 0xA0AC, - 29279 - 11905: 0xC4B2, - 29280 - 11905: 0xA0AD, - 29281 - 11905: 0xC4B5, - 29282 - 11905: 0xC0CE, - 29283 - 11905: 0xA0AE, - 29284 - 11905: 0xA0AF, - 29285 - 11905: 0xA0B0, - 29286 - 11905: 0xEAF3, - 29287 - 11905: 0xC4C1, - 29288 - 11905: 0xA0B1, - 29289 - 11905: 0xCEEF, - 29290 - 11905: 0xA0B2, - 29291 - 11905: 0xA0B3, - 29292 - 11905: 0xA0B4, - 29293 - 11905: 0xA0B5, - 29294 - 11905: 0xEAF0, - 29295 - 11905: 0xEAF4, - 29296 - 11905: 0xA0B6, - 29297 - 11905: 0xA0B7, - 29298 - 11905: 0xC9FC, - 29299 - 11905: 0xA0B8, - 29300 - 11905: 0xA0B9, - 29301 - 11905: 0xC7A3, - 29302 - 11905: 0xA0BA, - 29303 - 11905: 0xA0BB, - 29304 - 11905: 0xA0BC, - 29305 - 11905: 0xCCD8, - 29306 - 11905: 0xCEFE, - 29307 - 11905: 0xA0BD, - 29308 - 11905: 0xA0BE, - 29309 - 11905: 0xA0BF, - 29310 - 11905: 0xEAF5, - 29311 - 11905: 0xEAF6, - 29312 - 11905: 0xCFAC, - 29313 - 11905: 0xC0E7, - 29314 - 11905: 0xA0C0, - 29315 - 11905: 0xA0C1, - 29316 - 11905: 0xEAF7, - 29317 - 11905: 0xA0C2, - 29318 - 11905: 0xA0C3, - 29319 - 11905: 0xA0C4, - 29320 - 11905: 0xA0C5, - 29321 - 11905: 0xA0C6, - 29322 - 11905: 0xB6BF, - 29323 - 11905: 0xEAF8, - 29324 - 11905: 0xA0C7, - 29325 - 11905: 0xEAF9, - 29326 - 11905: 0xA0C8, - 29327 - 11905: 0xEAFA, - 29328 - 11905: 0xA0C9, - 29329 - 11905: 0xA0CA, - 29330 - 11905: 0xEAFB, - 29331 - 11905: 0xA0CB, - 29332 - 11905: 0xA0CC, - 29333 - 11905: 0xA0CD, - 29334 - 11905: 0xA0CE, - 29335 - 11905: 0xA0CF, - 29336 - 11905: 0xA0D0, - 29337 - 11905: 0xA0D1, - 29338 - 11905: 0xA0D2, - 29339 - 11905: 0xA0D3, - 29340 - 11905: 0xA0D4, - 29341 - 11905: 0xA0D5, - 29342 - 11905: 0xA0D6, - 29343 - 11905: 0xEAF1, - 29344 - 11905: 0xA0D7, - 29345 - 11905: 0xA0D8, - 29346 - 11905: 0xA0D9, - 29347 - 11905: 0xA0DA, - 29348 - 11905: 0xA0DB, - 29349 - 11905: 0xA0DC, - 29350 - 11905: 0xA0DD, - 29351 - 11905: 0xA0DE, - 29352 - 11905: 0xA0DF, - 29353 - 11905: 0xA0E0, - 29354 - 11905: 0xA0E1, - 29355 - 11905: 0xA0E2, - 29356 - 11905: 0xC8AE, - 29357 - 11905: 0xE1EB, - 29358 - 11905: 0xA0E3, - 29359 - 11905: 0xB7B8, - 29360 - 11905: 0xE1EC, - 29361 - 11905: 0xA0E4, - 29362 - 11905: 0xA0E5, - 29363 - 11905: 0xA0E6, - 29364 - 11905: 0xE1ED, - 29365 - 11905: 0xA0E7, - 29366 - 11905: 0xD7B4, - 29367 - 11905: 0xE1EE, - 29368 - 11905: 0xE1EF, - 29369 - 11905: 0xD3CC, - 29370 - 11905: 0xA0E8, - 29371 - 11905: 0xA0E9, - 29372 - 11905: 0xA0EA, - 29373 - 11905: 0xA0EB, - 29374 - 11905: 0xA0EC, - 29375 - 11905: 0xA0ED, - 29376 - 11905: 0xA0EE, - 29377 - 11905: 0xE1F1, - 29378 - 11905: 0xBFF1, - 29379 - 11905: 0xE1F0, - 29380 - 11905: 0xB5D2, - 29381 - 11905: 0xA0EF, - 29382 - 11905: 0xA0F0, - 29383 - 11905: 0xA0F1, - 29384 - 11905: 0xB1B7, - 29385 - 11905: 0xA0F2, - 29386 - 11905: 0xA0F3, - 29387 - 11905: 0xA0F4, - 29388 - 11905: 0xA0F5, - 29389 - 11905: 0xE1F3, - 29390 - 11905: 0xE1F2, - 29391 - 11905: 0xA0F6, - 29392 - 11905: 0xBAFC, - 29393 - 11905: 0xA0F7, - 29394 - 11905: 0xE1F4, - 29395 - 11905: 0xA0F8, - 29396 - 11905: 0xA0F9, - 29397 - 11905: 0xA0FA, - 29398 - 11905: 0xA0FB, - 29399 - 11905: 0xB9B7, - 29400 - 11905: 0xA0FC, - 29401 - 11905: 0xBED1, - 29402 - 11905: 0xA0FD, - 29403 - 11905: 0xA0FE, - 29404 - 11905: 0xAA40, - 29405 - 11905: 0xAA41, - 29406 - 11905: 0xC4FC, - 29407 - 11905: 0xAA42, - 29408 - 11905: 0xBADD, - 29409 - 11905: 0xBDC6, - 29410 - 11905: 0xAA43, - 29411 - 11905: 0xAA44, - 29412 - 11905: 0xAA45, - 29413 - 11905: 0xAA46, - 29414 - 11905: 0xAA47, - 29415 - 11905: 0xAA48, - 29416 - 11905: 0xE1F5, - 29417 - 11905: 0xE1F7, - 29418 - 11905: 0xAA49, - 29419 - 11905: 0xAA4A, - 29420 - 11905: 0xB6C0, - 29421 - 11905: 0xCFC1, - 29422 - 11905: 0xCAA8, - 29423 - 11905: 0xE1F6, - 29424 - 11905: 0xD5F8, - 29425 - 11905: 0xD3FC, - 29426 - 11905: 0xE1F8, - 29427 - 11905: 0xE1FC, - 29428 - 11905: 0xE1F9, - 29429 - 11905: 0xAA4B, - 29430 - 11905: 0xAA4C, - 29431 - 11905: 0xE1FA, - 29432 - 11905: 0xC0EA, - 29433 - 11905: 0xAA4D, - 29434 - 11905: 0xE1FE, - 29435 - 11905: 0xE2A1, - 29436 - 11905: 0xC0C7, - 29437 - 11905: 0xAA4E, - 29438 - 11905: 0xAA4F, - 29439 - 11905: 0xAA50, - 29440 - 11905: 0xAA51, - 29441 - 11905: 0xE1FB, - 29442 - 11905: 0xAA52, - 29443 - 11905: 0xE1FD, - 29444 - 11905: 0xAA53, - 29445 - 11905: 0xAA54, - 29446 - 11905: 0xAA55, - 29447 - 11905: 0xAA56, - 29448 - 11905: 0xAA57, - 29449 - 11905: 0xAA58, - 29450 - 11905: 0xE2A5, - 29451 - 11905: 0xAA59, - 29452 - 11905: 0xAA5A, - 29453 - 11905: 0xAA5B, - 29454 - 11905: 0xC1D4, - 29455 - 11905: 0xAA5C, - 29456 - 11905: 0xAA5D, - 29457 - 11905: 0xAA5E, - 29458 - 11905: 0xAA5F, - 29459 - 11905: 0xE2A3, - 29460 - 11905: 0xAA60, - 29461 - 11905: 0xE2A8, - 29462 - 11905: 0xB2FE, - 29463 - 11905: 0xE2A2, - 29464 - 11905: 0xAA61, - 29465 - 11905: 0xAA62, - 29466 - 11905: 0xAA63, - 29467 - 11905: 0xC3CD, - 29468 - 11905: 0xB2C2, - 29469 - 11905: 0xE2A7, - 29470 - 11905: 0xE2A6, - 29471 - 11905: 0xAA64, - 29472 - 11905: 0xAA65, - 29473 - 11905: 0xE2A4, - 29474 - 11905: 0xE2A9, - 29475 - 11905: 0xAA66, - 29476 - 11905: 0xAA67, - 29477 - 11905: 0xE2AB, - 29478 - 11905: 0xAA68, - 29479 - 11905: 0xAA69, - 29480 - 11905: 0xAA6A, - 29481 - 11905: 0xD0C9, - 29482 - 11905: 0xD6ED, - 29483 - 11905: 0xC3A8, - 29484 - 11905: 0xE2AC, - 29485 - 11905: 0xAA6B, - 29486 - 11905: 0xCFD7, - 29487 - 11905: 0xAA6C, - 29488 - 11905: 0xAA6D, - 29489 - 11905: 0xE2AE, - 29490 - 11905: 0xAA6E, - 29491 - 11905: 0xAA6F, - 29492 - 11905: 0xBAEF, - 29493 - 11905: 0xAA70, - 29494 - 11905: 0xAA71, - 29495 - 11905: 0xE9E0, - 29496 - 11905: 0xE2AD, - 29497 - 11905: 0xE2AA, - 29498 - 11905: 0xAA72, - 29499 - 11905: 0xAA73, - 29500 - 11905: 0xAA74, - 29501 - 11905: 0xAA75, - 29502 - 11905: 0xBBAB, - 29503 - 11905: 0xD4B3, - 29504 - 11905: 0xAA76, - 29505 - 11905: 0xAA77, - 29506 - 11905: 0xAA78, - 29507 - 11905: 0xAA79, - 29508 - 11905: 0xAA7A, - 29509 - 11905: 0xAA7B, - 29510 - 11905: 0xAA7C, - 29511 - 11905: 0xAA7D, - 29512 - 11905: 0xAA7E, - 29513 - 11905: 0xAA80, - 29514 - 11905: 0xAA81, - 29515 - 11905: 0xAA82, - 29516 - 11905: 0xAA83, - 29517 - 11905: 0xE2B0, - 29518 - 11905: 0xAA84, - 29519 - 11905: 0xAA85, - 29520 - 11905: 0xE2AF, - 29521 - 11905: 0xAA86, - 29522 - 11905: 0xE9E1, - 29523 - 11905: 0xAA87, - 29524 - 11905: 0xAA88, - 29525 - 11905: 0xAA89, - 29526 - 11905: 0xAA8A, - 29527 - 11905: 0xE2B1, - 29528 - 11905: 0xAA8B, - 29529 - 11905: 0xAA8C, - 29530 - 11905: 0xAA8D, - 29531 - 11905: 0xAA8E, - 29532 - 11905: 0xAA8F, - 29533 - 11905: 0xAA90, - 29534 - 11905: 0xAA91, - 29535 - 11905: 0xAA92, - 29536 - 11905: 0xE2B2, - 29537 - 11905: 0xAA93, - 29538 - 11905: 0xAA94, - 29539 - 11905: 0xAA95, - 29540 - 11905: 0xAA96, - 29541 - 11905: 0xAA97, - 29542 - 11905: 0xAA98, - 29543 - 11905: 0xAA99, - 29544 - 11905: 0xAA9A, - 29545 - 11905: 0xAA9B, - 29546 - 11905: 0xAA9C, - 29547 - 11905: 0xAA9D, - 29548 - 11905: 0xE2B3, - 29549 - 11905: 0xCCA1, - 29550 - 11905: 0xAA9E, - 29551 - 11905: 0xE2B4, - 29552 - 11905: 0xAA9F, - 29553 - 11905: 0xAAA0, - 29554 - 11905: 0xAB40, - 29555 - 11905: 0xAB41, - 29556 - 11905: 0xAB42, - 29557 - 11905: 0xAB43, - 29558 - 11905: 0xAB44, - 29559 - 11905: 0xAB45, - 29560 - 11905: 0xAB46, - 29561 - 11905: 0xAB47, - 29562 - 11905: 0xAB48, - 29563 - 11905: 0xAB49, - 29564 - 11905: 0xAB4A, - 29565 - 11905: 0xAB4B, - 29566 - 11905: 0xE2B5, - 29567 - 11905: 0xAB4C, - 29568 - 11905: 0xAB4D, - 29569 - 11905: 0xAB4E, - 29570 - 11905: 0xAB4F, - 29571 - 11905: 0xAB50, - 29572 - 11905: 0xD0FE, - 29573 - 11905: 0xAB51, - 29574 - 11905: 0xAB52, - 29575 - 11905: 0xC2CA, - 29576 - 11905: 0xAB53, - 29577 - 11905: 0xD3F1, - 29578 - 11905: 0xAB54, - 29579 - 11905: 0xCDF5, - 29580 - 11905: 0xAB55, - 29581 - 11905: 0xAB56, - 29582 - 11905: 0xE7E0, - 29583 - 11905: 0xAB57, - 29584 - 11905: 0xAB58, - 29585 - 11905: 0xE7E1, - 29586 - 11905: 0xAB59, - 29587 - 11905: 0xAB5A, - 29588 - 11905: 0xAB5B, - 29589 - 11905: 0xAB5C, - 29590 - 11905: 0xBEC1, - 29591 - 11905: 0xAB5D, - 29592 - 11905: 0xAB5E, - 29593 - 11905: 0xAB5F, - 29594 - 11905: 0xAB60, - 29595 - 11905: 0xC2EA, - 29596 - 11905: 0xAB61, - 29597 - 11905: 0xAB62, - 29598 - 11905: 0xAB63, - 29599 - 11905: 0xE7E4, - 29600 - 11905: 0xAB64, - 29601 - 11905: 0xAB65, - 29602 - 11905: 0xE7E3, - 29603 - 11905: 0xAB66, - 29604 - 11905: 0xAB67, - 29605 - 11905: 0xAB68, - 29606 - 11905: 0xAB69, - 29607 - 11905: 0xAB6A, - 29608 - 11905: 0xAB6B, - 29609 - 11905: 0xCDE6, - 29610 - 11905: 0xAB6C, - 29611 - 11905: 0xC3B5, - 29612 - 11905: 0xAB6D, - 29613 - 11905: 0xAB6E, - 29614 - 11905: 0xE7E2, - 29615 - 11905: 0xBBB7, - 29616 - 11905: 0xCFD6, - 29617 - 11905: 0xAB6F, - 29618 - 11905: 0xC1E1, - 29619 - 11905: 0xE7E9, - 29620 - 11905: 0xAB70, - 29621 - 11905: 0xAB71, - 29622 - 11905: 0xAB72, - 29623 - 11905: 0xE7E8, - 29624 - 11905: 0xAB73, - 29625 - 11905: 0xAB74, - 29626 - 11905: 0xE7F4, - 29627 - 11905: 0xB2A3, - 29628 - 11905: 0xAB75, - 29629 - 11905: 0xAB76, - 29630 - 11905: 0xAB77, - 29631 - 11905: 0xAB78, - 29632 - 11905: 0xE7EA, - 29633 - 11905: 0xAB79, - 29634 - 11905: 0xE7E6, - 29635 - 11905: 0xAB7A, - 29636 - 11905: 0xAB7B, - 29637 - 11905: 0xAB7C, - 29638 - 11905: 0xAB7D, - 29639 - 11905: 0xAB7E, - 29640 - 11905: 0xE7EC, - 29641 - 11905: 0xE7EB, - 29642 - 11905: 0xC9BA, - 29643 - 11905: 0xAB80, - 29644 - 11905: 0xAB81, - 29645 - 11905: 0xD5E4, - 29646 - 11905: 0xAB82, - 29647 - 11905: 0xE7E5, - 29648 - 11905: 0xB7A9, - 29649 - 11905: 0xE7E7, - 29650 - 11905: 0xAB83, - 29651 - 11905: 0xAB84, - 29652 - 11905: 0xAB85, - 29653 - 11905: 0xAB86, - 29654 - 11905: 0xAB87, - 29655 - 11905: 0xAB88, - 29656 - 11905: 0xAB89, - 29657 - 11905: 0xE7EE, - 29658 - 11905: 0xAB8A, - 29659 - 11905: 0xAB8B, - 29660 - 11905: 0xAB8C, - 29661 - 11905: 0xAB8D, - 29662 - 11905: 0xE7F3, - 29663 - 11905: 0xAB8E, - 29664 - 11905: 0xD6E9, - 29665 - 11905: 0xAB8F, - 29666 - 11905: 0xAB90, - 29667 - 11905: 0xAB91, - 29668 - 11905: 0xAB92, - 29669 - 11905: 0xE7ED, - 29670 - 11905: 0xAB93, - 29671 - 11905: 0xE7F2, - 29672 - 11905: 0xAB94, - 29673 - 11905: 0xE7F1, - 29674 - 11905: 0xAB95, - 29675 - 11905: 0xAB96, - 29676 - 11905: 0xAB97, - 29677 - 11905: 0xB0E0, - 29678 - 11905: 0xAB98, - 29679 - 11905: 0xAB99, - 29680 - 11905: 0xAB9A, - 29681 - 11905: 0xAB9B, - 29682 - 11905: 0xE7F5, - 29683 - 11905: 0xAB9C, - 29684 - 11905: 0xAB9D, - 29685 - 11905: 0xAB9E, - 29686 - 11905: 0xAB9F, - 29687 - 11905: 0xABA0, - 29688 - 11905: 0xAC40, - 29689 - 11905: 0xAC41, - 29690 - 11905: 0xAC42, - 29691 - 11905: 0xAC43, - 29692 - 11905: 0xAC44, - 29693 - 11905: 0xAC45, - 29694 - 11905: 0xAC46, - 29695 - 11905: 0xAC47, - 29696 - 11905: 0xAC48, - 29697 - 11905: 0xAC49, - 29698 - 11905: 0xAC4A, - 29699 - 11905: 0xC7F2, - 29700 - 11905: 0xAC4B, - 29701 - 11905: 0xC0C5, - 29702 - 11905: 0xC0ED, - 29703 - 11905: 0xAC4C, - 29704 - 11905: 0xAC4D, - 29705 - 11905: 0xC1F0, - 29706 - 11905: 0xE7F0, - 29707 - 11905: 0xAC4E, - 29708 - 11905: 0xAC4F, - 29709 - 11905: 0xAC50, - 29710 - 11905: 0xAC51, - 29711 - 11905: 0xE7F6, - 29712 - 11905: 0xCBF6, - 29713 - 11905: 0xAC52, - 29714 - 11905: 0xAC53, - 29715 - 11905: 0xAC54, - 29716 - 11905: 0xAC55, - 29717 - 11905: 0xAC56, - 29718 - 11905: 0xAC57, - 29719 - 11905: 0xAC58, - 29720 - 11905: 0xAC59, - 29721 - 11905: 0xAC5A, - 29722 - 11905: 0xE8A2, - 29723 - 11905: 0xE8A1, - 29724 - 11905: 0xAC5B, - 29725 - 11905: 0xAC5C, - 29726 - 11905: 0xAC5D, - 29727 - 11905: 0xAC5E, - 29728 - 11905: 0xAC5F, - 29729 - 11905: 0xAC60, - 29730 - 11905: 0xD7C1, - 29731 - 11905: 0xAC61, - 29732 - 11905: 0xAC62, - 29733 - 11905: 0xE7FA, - 29734 - 11905: 0xE7F9, - 29735 - 11905: 0xAC63, - 29736 - 11905: 0xE7FB, - 29737 - 11905: 0xAC64, - 29738 - 11905: 0xE7F7, - 29739 - 11905: 0xAC65, - 29740 - 11905: 0xE7FE, - 29741 - 11905: 0xAC66, - 29742 - 11905: 0xE7FD, - 29743 - 11905: 0xAC67, - 29744 - 11905: 0xE7FC, - 29745 - 11905: 0xAC68, - 29746 - 11905: 0xAC69, - 29747 - 11905: 0xC1D5, - 29748 - 11905: 0xC7D9, - 29749 - 11905: 0xC5FD, - 29750 - 11905: 0xC5C3, - 29751 - 11905: 0xAC6A, - 29752 - 11905: 0xAC6B, - 29753 - 11905: 0xAC6C, - 29754 - 11905: 0xAC6D, - 29755 - 11905: 0xAC6E, - 29756 - 11905: 0xC7ED, - 29757 - 11905: 0xAC6F, - 29758 - 11905: 0xAC70, - 29759 - 11905: 0xAC71, - 29760 - 11905: 0xAC72, - 29761 - 11905: 0xE8A3, - 29762 - 11905: 0xAC73, - 29763 - 11905: 0xAC74, - 29764 - 11905: 0xAC75, - 29765 - 11905: 0xAC76, - 29766 - 11905: 0xAC77, - 29767 - 11905: 0xAC78, - 29768 - 11905: 0xAC79, - 29769 - 11905: 0xAC7A, - 29770 - 11905: 0xAC7B, - 29771 - 11905: 0xAC7C, - 29772 - 11905: 0xAC7D, - 29773 - 11905: 0xAC7E, - 29774 - 11905: 0xAC80, - 29775 - 11905: 0xAC81, - 29776 - 11905: 0xAC82, - 29777 - 11905: 0xAC83, - 29778 - 11905: 0xAC84, - 29779 - 11905: 0xAC85, - 29780 - 11905: 0xAC86, - 29781 - 11905: 0xE8A6, - 29782 - 11905: 0xAC87, - 29783 - 11905: 0xE8A5, - 29784 - 11905: 0xAC88, - 29785 - 11905: 0xE8A7, - 29786 - 11905: 0xBAF7, - 29787 - 11905: 0xE7F8, - 29788 - 11905: 0xE8A4, - 29789 - 11905: 0xAC89, - 29790 - 11905: 0xC8F0, - 29791 - 11905: 0xC9AA, - 29792 - 11905: 0xAC8A, - 29793 - 11905: 0xAC8B, - 29794 - 11905: 0xAC8C, - 29795 - 11905: 0xAC8D, - 29796 - 11905: 0xAC8E, - 29797 - 11905: 0xAC8F, - 29798 - 11905: 0xAC90, - 29799 - 11905: 0xAC91, - 29800 - 11905: 0xAC92, - 29801 - 11905: 0xAC93, - 29802 - 11905: 0xAC94, - 29803 - 11905: 0xAC95, - 29804 - 11905: 0xAC96, - 29805 - 11905: 0xE8A9, - 29806 - 11905: 0xAC97, - 29807 - 11905: 0xAC98, - 29808 - 11905: 0xB9E5, - 29809 - 11905: 0xAC99, - 29810 - 11905: 0xAC9A, - 29811 - 11905: 0xAC9B, - 29812 - 11905: 0xAC9C, - 29813 - 11905: 0xAC9D, - 29814 - 11905: 0xD1FE, - 29815 - 11905: 0xE8A8, - 29816 - 11905: 0xAC9E, - 29817 - 11905: 0xAC9F, - 29818 - 11905: 0xACA0, - 29819 - 11905: 0xAD40, - 29820 - 11905: 0xAD41, - 29821 - 11905: 0xAD42, - 29822 - 11905: 0xE8AA, - 29823 - 11905: 0xAD43, - 29824 - 11905: 0xE8AD, - 29825 - 11905: 0xE8AE, - 29826 - 11905: 0xAD44, - 29827 - 11905: 0xC1A7, - 29828 - 11905: 0xAD45, - 29829 - 11905: 0xAD46, - 29830 - 11905: 0xAD47, - 29831 - 11905: 0xE8AF, - 29832 - 11905: 0xAD48, - 29833 - 11905: 0xAD49, - 29834 - 11905: 0xAD4A, - 29835 - 11905: 0xE8B0, - 29836 - 11905: 0xAD4B, - 29837 - 11905: 0xAD4C, - 29838 - 11905: 0xE8AC, - 29839 - 11905: 0xAD4D, - 29840 - 11905: 0xE8B4, - 29841 - 11905: 0xAD4E, - 29842 - 11905: 0xAD4F, - 29843 - 11905: 0xAD50, - 29844 - 11905: 0xAD51, - 29845 - 11905: 0xAD52, - 29846 - 11905: 0xAD53, - 29847 - 11905: 0xAD54, - 29848 - 11905: 0xAD55, - 29849 - 11905: 0xAD56, - 29850 - 11905: 0xAD57, - 29851 - 11905: 0xAD58, - 29852 - 11905: 0xE8AB, - 29853 - 11905: 0xAD59, - 29854 - 11905: 0xE8B1, - 29855 - 11905: 0xAD5A, - 29856 - 11905: 0xAD5B, - 29857 - 11905: 0xAD5C, - 29858 - 11905: 0xAD5D, - 29859 - 11905: 0xAD5E, - 29860 - 11905: 0xAD5F, - 29861 - 11905: 0xAD60, - 29862 - 11905: 0xAD61, - 29863 - 11905: 0xE8B5, - 29864 - 11905: 0xE8B2, - 29865 - 11905: 0xE8B3, - 29866 - 11905: 0xAD62, - 29867 - 11905: 0xAD63, - 29868 - 11905: 0xAD64, - 29869 - 11905: 0xAD65, - 29870 - 11905: 0xAD66, - 29871 - 11905: 0xAD67, - 29872 - 11905: 0xAD68, - 29873 - 11905: 0xAD69, - 29874 - 11905: 0xAD6A, - 29875 - 11905: 0xAD6B, - 29876 - 11905: 0xAD6C, - 29877 - 11905: 0xAD6D, - 29878 - 11905: 0xAD6E, - 29879 - 11905: 0xAD6F, - 29880 - 11905: 0xAD70, - 29881 - 11905: 0xAD71, - 29882 - 11905: 0xE8B7, - 29883 - 11905: 0xAD72, - 29884 - 11905: 0xAD73, - 29885 - 11905: 0xAD74, - 29886 - 11905: 0xAD75, - 29887 - 11905: 0xAD76, - 29888 - 11905: 0xAD77, - 29889 - 11905: 0xAD78, - 29890 - 11905: 0xAD79, - 29891 - 11905: 0xAD7A, - 29892 - 11905: 0xAD7B, - 29893 - 11905: 0xAD7C, - 29894 - 11905: 0xAD7D, - 29895 - 11905: 0xAD7E, - 29896 - 11905: 0xAD80, - 29897 - 11905: 0xAD81, - 29898 - 11905: 0xAD82, - 29899 - 11905: 0xAD83, - 29900 - 11905: 0xAD84, - 29901 - 11905: 0xAD85, - 29902 - 11905: 0xAD86, - 29903 - 11905: 0xAD87, - 29904 - 11905: 0xAD88, - 29905 - 11905: 0xAD89, - 29906 - 11905: 0xE8B6, - 29907 - 11905: 0xAD8A, - 29908 - 11905: 0xAD8B, - 29909 - 11905: 0xAD8C, - 29910 - 11905: 0xAD8D, - 29911 - 11905: 0xAD8E, - 29912 - 11905: 0xAD8F, - 29913 - 11905: 0xAD90, - 29914 - 11905: 0xAD91, - 29915 - 11905: 0xAD92, - 29916 - 11905: 0xB9CF, - 29917 - 11905: 0xAD93, - 29918 - 11905: 0xF0AC, - 29919 - 11905: 0xAD94, - 29920 - 11905: 0xF0AD, - 29921 - 11905: 0xAD95, - 29922 - 11905: 0xC6B0, - 29923 - 11905: 0xB0EA, - 29924 - 11905: 0xC8BF, - 29925 - 11905: 0xAD96, - 29926 - 11905: 0xCDDF, - 29927 - 11905: 0xAD97, - 29928 - 11905: 0xAD98, - 29929 - 11905: 0xAD99, - 29930 - 11905: 0xAD9A, - 29931 - 11905: 0xAD9B, - 29932 - 11905: 0xAD9C, - 29933 - 11905: 0xAD9D, - 29934 - 11905: 0xCECD, - 29935 - 11905: 0xEAB1, - 29936 - 11905: 0xAD9E, - 29937 - 11905: 0xAD9F, - 29938 - 11905: 0xADA0, - 29939 - 11905: 0xAE40, - 29940 - 11905: 0xEAB2, - 29941 - 11905: 0xAE41, - 29942 - 11905: 0xC6BF, - 29943 - 11905: 0xB4C9, - 29944 - 11905: 0xAE42, - 29945 - 11905: 0xAE43, - 29946 - 11905: 0xAE44, - 29947 - 11905: 0xAE45, - 29948 - 11905: 0xAE46, - 29949 - 11905: 0xAE47, - 29950 - 11905: 0xAE48, - 29951 - 11905: 0xEAB3, - 29952 - 11905: 0xAE49, - 29953 - 11905: 0xAE4A, - 29954 - 11905: 0xAE4B, - 29955 - 11905: 0xAE4C, - 29956 - 11905: 0xD5E7, - 29957 - 11905: 0xAE4D, - 29958 - 11905: 0xAE4E, - 29959 - 11905: 0xAE4F, - 29960 - 11905: 0xAE50, - 29961 - 11905: 0xAE51, - 29962 - 11905: 0xAE52, - 29963 - 11905: 0xAE53, - 29964 - 11905: 0xAE54, - 29965 - 11905: 0xDDF9, - 29966 - 11905: 0xAE55, - 29967 - 11905: 0xEAB4, - 29968 - 11905: 0xAE56, - 29969 - 11905: 0xEAB5, - 29970 - 11905: 0xAE57, - 29971 - 11905: 0xEAB6, - 29972 - 11905: 0xAE58, - 29973 - 11905: 0xAE59, - 29974 - 11905: 0xAE5A, - 29975 - 11905: 0xAE5B, - 29976 - 11905: 0xB8CA, - 29977 - 11905: 0xDFB0, - 29978 - 11905: 0xC9F5, - 29979 - 11905: 0xAE5C, - 29980 - 11905: 0xCCF0, - 29981 - 11905: 0xAE5D, - 29982 - 11905: 0xAE5E, - 29983 - 11905: 0xC9FA, - 29984 - 11905: 0xAE5F, - 29985 - 11905: 0xAE60, - 29986 - 11905: 0xAE61, - 29987 - 11905: 0xAE62, - 29988 - 11905: 0xAE63, - 29989 - 11905: 0xC9FB, - 29990 - 11905: 0xAE64, - 29991 - 11905: 0xAE65, - 29992 - 11905: 0xD3C3, - 29993 - 11905: 0xCBA6, - 29994 - 11905: 0xAE66, - 29995 - 11905: 0xB8A6, - 29996 - 11905: 0xF0AE, - 29997 - 11905: 0xB1C2, - 29998 - 11905: 0xAE67, - 29999 - 11905: 0xE5B8, - 30000 - 11905: 0xCCEF, - 30001 - 11905: 0xD3C9, - 30002 - 11905: 0xBCD7, - 30003 - 11905: 0xC9EA, - 30004 - 11905: 0xAE68, - 30005 - 11905: 0xB5E7, - 30006 - 11905: 0xAE69, - 30007 - 11905: 0xC4D0, - 30008 - 11905: 0xB5E9, - 30009 - 11905: 0xAE6A, - 30010 - 11905: 0xEEAE, - 30011 - 11905: 0xBBAD, - 30012 - 11905: 0xAE6B, - 30013 - 11905: 0xAE6C, - 30014 - 11905: 0xE7DE, - 30015 - 11905: 0xAE6D, - 30016 - 11905: 0xEEAF, - 30017 - 11905: 0xAE6E, - 30018 - 11905: 0xAE6F, - 30019 - 11905: 0xAE70, - 30020 - 11905: 0xAE71, - 30021 - 11905: 0xB3A9, - 30022 - 11905: 0xAE72, - 30023 - 11905: 0xAE73, - 30024 - 11905: 0xEEB2, - 30025 - 11905: 0xAE74, - 30026 - 11905: 0xAE75, - 30027 - 11905: 0xEEB1, - 30028 - 11905: 0xBDE7, - 30029 - 11905: 0xAE76, - 30030 - 11905: 0xEEB0, - 30031 - 11905: 0xCEB7, - 30032 - 11905: 0xAE77, - 30033 - 11905: 0xAE78, - 30034 - 11905: 0xAE79, - 30035 - 11905: 0xAE7A, - 30036 - 11905: 0xC5CF, - 30037 - 11905: 0xAE7B, - 30038 - 11905: 0xAE7C, - 30039 - 11905: 0xAE7D, - 30040 - 11905: 0xAE7E, - 30041 - 11905: 0xC1F4, - 30042 - 11905: 0xDBCE, - 30043 - 11905: 0xEEB3, - 30044 - 11905: 0xD0F3, - 30045 - 11905: 0xAE80, - 30046 - 11905: 0xAE81, - 30047 - 11905: 0xAE82, - 30048 - 11905: 0xAE83, - 30049 - 11905: 0xAE84, - 30050 - 11905: 0xAE85, - 30051 - 11905: 0xAE86, - 30052 - 11905: 0xAE87, - 30053 - 11905: 0xC2D4, - 30054 - 11905: 0xC6E8, - 30055 - 11905: 0xAE88, - 30056 - 11905: 0xAE89, - 30057 - 11905: 0xAE8A, - 30058 - 11905: 0xB7AC, - 30059 - 11905: 0xAE8B, - 30060 - 11905: 0xAE8C, - 30061 - 11905: 0xAE8D, - 30062 - 11905: 0xAE8E, - 30063 - 11905: 0xAE8F, - 30064 - 11905: 0xAE90, - 30065 - 11905: 0xAE91, - 30066 - 11905: 0xEEB4, - 30067 - 11905: 0xAE92, - 30068 - 11905: 0xB3EB, - 30069 - 11905: 0xAE93, - 30070 - 11905: 0xAE94, - 30071 - 11905: 0xAE95, - 30072 - 11905: 0xBBFB, - 30073 - 11905: 0xEEB5, - 30074 - 11905: 0xAE96, - 30075 - 11905: 0xAE97, - 30076 - 11905: 0xAE98, - 30077 - 11905: 0xAE99, - 30078 - 11905: 0xAE9A, - 30079 - 11905: 0xE7DC, - 30080 - 11905: 0xAE9B, - 30081 - 11905: 0xAE9C, - 30082 - 11905: 0xAE9D, - 30083 - 11905: 0xEEB6, - 30084 - 11905: 0xAE9E, - 30085 - 11905: 0xAE9F, - 30086 - 11905: 0xBDAE, - 30087 - 11905: 0xAEA0, - 30088 - 11905: 0xAF40, - 30089 - 11905: 0xAF41, - 30090 - 11905: 0xAF42, - 30091 - 11905: 0xF1E2, - 30092 - 11905: 0xAF43, - 30093 - 11905: 0xAF44, - 30094 - 11905: 0xAF45, - 30095 - 11905: 0xCAE8, - 30096 - 11905: 0xAF46, - 30097 - 11905: 0xD2C9, - 30098 - 11905: 0xF0DA, - 30099 - 11905: 0xAF47, - 30100 - 11905: 0xF0DB, - 30101 - 11905: 0xAF48, - 30102 - 11905: 0xF0DC, - 30103 - 11905: 0xC1C6, - 30104 - 11905: 0xAF49, - 30105 - 11905: 0xB8ED, - 30106 - 11905: 0xBECE, - 30107 - 11905: 0xAF4A, - 30108 - 11905: 0xAF4B, - 30109 - 11905: 0xF0DE, - 30110 - 11905: 0xAF4C, - 30111 - 11905: 0xC5B1, - 30112 - 11905: 0xF0DD, - 30113 - 11905: 0xD1F1, - 30114 - 11905: 0xAF4D, - 30115 - 11905: 0xF0E0, - 30116 - 11905: 0xB0CC, - 30117 - 11905: 0xBDEA, - 30118 - 11905: 0xAF4E, - 30119 - 11905: 0xAF4F, - 30120 - 11905: 0xAF50, - 30121 - 11905: 0xAF51, - 30122 - 11905: 0xAF52, - 30123 - 11905: 0xD2DF, - 30124 - 11905: 0xF0DF, - 30125 - 11905: 0xAF53, - 30126 - 11905: 0xB4AF, - 30127 - 11905: 0xB7E8, - 30128 - 11905: 0xF0E6, - 30129 - 11905: 0xF0E5, - 30130 - 11905: 0xC6A3, - 30131 - 11905: 0xF0E1, - 30132 - 11905: 0xF0E2, - 30133 - 11905: 0xB4C3, - 30134 - 11905: 0xAF54, - 30135 - 11905: 0xAF55, - 30136 - 11905: 0xF0E3, - 30137 - 11905: 0xD5EE, - 30138 - 11905: 0xAF56, - 30139 - 11905: 0xAF57, - 30140 - 11905: 0xCCDB, - 30141 - 11905: 0xBED2, - 30142 - 11905: 0xBCB2, - 30143 - 11905: 0xAF58, - 30144 - 11905: 0xAF59, - 30145 - 11905: 0xAF5A, - 30146 - 11905: 0xF0E8, - 30147 - 11905: 0xF0E7, - 30148 - 11905: 0xF0E4, - 30149 - 11905: 0xB2A1, - 30150 - 11905: 0xAF5B, - 30151 - 11905: 0xD6A2, - 30152 - 11905: 0xD3B8, - 30153 - 11905: 0xBEB7, - 30154 - 11905: 0xC8AC, - 30155 - 11905: 0xAF5C, - 30156 - 11905: 0xAF5D, - 30157 - 11905: 0xF0EA, - 30158 - 11905: 0xAF5E, - 30159 - 11905: 0xAF5F, - 30160 - 11905: 0xAF60, - 30161 - 11905: 0xAF61, - 30162 - 11905: 0xD1F7, - 30163 - 11905: 0xAF62, - 30164 - 11905: 0xD6CC, - 30165 - 11905: 0xBADB, - 30166 - 11905: 0xF0E9, - 30167 - 11905: 0xAF63, - 30168 - 11905: 0xB6BB, - 30169 - 11905: 0xAF64, - 30170 - 11905: 0xAF65, - 30171 - 11905: 0xCDB4, - 30172 - 11905: 0xAF66, - 30173 - 11905: 0xAF67, - 30174 - 11905: 0xC6A6, - 30175 - 11905: 0xAF68, - 30176 - 11905: 0xAF69, - 30177 - 11905: 0xAF6A, - 30178 - 11905: 0xC1A1, - 30179 - 11905: 0xF0EB, - 30180 - 11905: 0xF0EE, - 30181 - 11905: 0xAF6B, - 30182 - 11905: 0xF0ED, - 30183 - 11905: 0xF0F0, - 30184 - 11905: 0xF0EC, - 30185 - 11905: 0xAF6C, - 30186 - 11905: 0xBBBE, - 30187 - 11905: 0xF0EF, - 30188 - 11905: 0xAF6D, - 30189 - 11905: 0xAF6E, - 30190 - 11905: 0xAF6F, - 30191 - 11905: 0xAF70, - 30192 - 11905: 0xCCB5, - 30193 - 11905: 0xF0F2, - 30194 - 11905: 0xAF71, - 30195 - 11905: 0xAF72, - 30196 - 11905: 0xB3D5, - 30197 - 11905: 0xAF73, - 30198 - 11905: 0xAF74, - 30199 - 11905: 0xAF75, - 30200 - 11905: 0xAF76, - 30201 - 11905: 0xB1D4, - 30202 - 11905: 0xAF77, - 30203 - 11905: 0xAF78, - 30204 - 11905: 0xF0F3, - 30205 - 11905: 0xAF79, - 30206 - 11905: 0xAF7A, - 30207 - 11905: 0xF0F4, - 30208 - 11905: 0xF0F6, - 30209 - 11905: 0xB4E1, - 30210 - 11905: 0xAF7B, - 30211 - 11905: 0xF0F1, - 30212 - 11905: 0xAF7C, - 30213 - 11905: 0xF0F7, - 30214 - 11905: 0xAF7D, - 30215 - 11905: 0xAF7E, - 30216 - 11905: 0xAF80, - 30217 - 11905: 0xAF81, - 30218 - 11905: 0xF0FA, - 30219 - 11905: 0xAF82, - 30220 - 11905: 0xF0F8, - 30221 - 11905: 0xAF83, - 30222 - 11905: 0xAF84, - 30223 - 11905: 0xAF85, - 30224 - 11905: 0xF0F5, - 30225 - 11905: 0xAF86, - 30226 - 11905: 0xAF87, - 30227 - 11905: 0xAF88, - 30228 - 11905: 0xAF89, - 30229 - 11905: 0xF0FD, - 30230 - 11905: 0xAF8A, - 30231 - 11905: 0xF0F9, - 30232 - 11905: 0xF0FC, - 30233 - 11905: 0xF0FE, - 30234 - 11905: 0xAF8B, - 30235 - 11905: 0xF1A1, - 30236 - 11905: 0xAF8C, - 30237 - 11905: 0xAF8D, - 30238 - 11905: 0xAF8E, - 30239 - 11905: 0xCEC1, - 30240 - 11905: 0xF1A4, - 30241 - 11905: 0xAF8F, - 30242 - 11905: 0xF1A3, - 30243 - 11905: 0xAF90, - 30244 - 11905: 0xC1F6, - 30245 - 11905: 0xF0FB, - 30246 - 11905: 0xCADD, - 30247 - 11905: 0xAF91, - 30248 - 11905: 0xAF92, - 30249 - 11905: 0xB4F1, - 30250 - 11905: 0xB1F1, - 30251 - 11905: 0xCCB1, - 30252 - 11905: 0xAF93, - 30253 - 11905: 0xF1A6, - 30254 - 11905: 0xAF94, - 30255 - 11905: 0xAF95, - 30256 - 11905: 0xF1A7, - 30257 - 11905: 0xAF96, - 30258 - 11905: 0xAF97, - 30259 - 11905: 0xF1AC, - 30260 - 11905: 0xD5CE, - 30261 - 11905: 0xF1A9, - 30262 - 11905: 0xAF98, - 30263 - 11905: 0xAF99, - 30264 - 11905: 0xC8B3, - 30265 - 11905: 0xAF9A, - 30266 - 11905: 0xAF9B, - 30267 - 11905: 0xAF9C, - 30268 - 11905: 0xF1A2, - 30269 - 11905: 0xAF9D, - 30270 - 11905: 0xF1AB, - 30271 - 11905: 0xF1A8, - 30272 - 11905: 0xF1A5, - 30273 - 11905: 0xAF9E, - 30274 - 11905: 0xAF9F, - 30275 - 11905: 0xF1AA, - 30276 - 11905: 0xAFA0, - 30277 - 11905: 0xB040, - 30278 - 11905: 0xB041, - 30279 - 11905: 0xB042, - 30280 - 11905: 0xB043, - 30281 - 11905: 0xB044, - 30282 - 11905: 0xB045, - 30283 - 11905: 0xB046, - 30284 - 11905: 0xB0A9, - 30285 - 11905: 0xF1AD, - 30286 - 11905: 0xB047, - 30287 - 11905: 0xB048, - 30288 - 11905: 0xB049, - 30289 - 11905: 0xB04A, - 30290 - 11905: 0xB04B, - 30291 - 11905: 0xB04C, - 30292 - 11905: 0xF1AF, - 30293 - 11905: 0xB04D, - 30294 - 11905: 0xF1B1, - 30295 - 11905: 0xB04E, - 30296 - 11905: 0xB04F, - 30297 - 11905: 0xB050, - 30298 - 11905: 0xB051, - 30299 - 11905: 0xB052, - 30300 - 11905: 0xF1B0, - 30301 - 11905: 0xB053, - 30302 - 11905: 0xF1AE, - 30303 - 11905: 0xB054, - 30304 - 11905: 0xB055, - 30305 - 11905: 0xB056, - 30306 - 11905: 0xB057, - 30307 - 11905: 0xD1A2, - 30308 - 11905: 0xB058, - 30309 - 11905: 0xB059, - 30310 - 11905: 0xB05A, - 30311 - 11905: 0xB05B, - 30312 - 11905: 0xB05C, - 30313 - 11905: 0xB05D, - 30314 - 11905: 0xB05E, - 30315 - 11905: 0xF1B2, - 30316 - 11905: 0xB05F, - 30317 - 11905: 0xB060, - 30318 - 11905: 0xB061, - 30319 - 11905: 0xF1B3, - 30320 - 11905: 0xB062, - 30321 - 11905: 0xB063, - 30322 - 11905: 0xB064, - 30323 - 11905: 0xB065, - 30324 - 11905: 0xB066, - 30325 - 11905: 0xB067, - 30326 - 11905: 0xB068, - 30327 - 11905: 0xB069, - 30328 - 11905: 0xB9EF, - 30329 - 11905: 0xB06A, - 30330 - 11905: 0xB06B, - 30331 - 11905: 0xB5C7, - 30332 - 11905: 0xB06C, - 30333 - 11905: 0xB0D7, - 30334 - 11905: 0xB0D9, - 30335 - 11905: 0xB06D, - 30336 - 11905: 0xB06E, - 30337 - 11905: 0xB06F, - 30338 - 11905: 0xD4ED, - 30339 - 11905: 0xB070, - 30340 - 11905: 0xB5C4, - 30341 - 11905: 0xB071, - 30342 - 11905: 0xBDD4, - 30343 - 11905: 0xBBCA, - 30344 - 11905: 0xF0A7, - 30345 - 11905: 0xB072, - 30346 - 11905: 0xB073, - 30347 - 11905: 0xB8DE, - 30348 - 11905: 0xB074, - 30349 - 11905: 0xB075, - 30350 - 11905: 0xF0A8, - 30351 - 11905: 0xB076, - 30352 - 11905: 0xB077, - 30353 - 11905: 0xB0A8, - 30354 - 11905: 0xB078, - 30355 - 11905: 0xF0A9, - 30356 - 11905: 0xB079, - 30357 - 11905: 0xB07A, - 30358 - 11905: 0xCDEE, - 30359 - 11905: 0xB07B, - 30360 - 11905: 0xB07C, - 30361 - 11905: 0xF0AA, - 30362 - 11905: 0xB07D, - 30363 - 11905: 0xB07E, - 30364 - 11905: 0xB080, - 30365 - 11905: 0xB081, - 30366 - 11905: 0xB082, - 30367 - 11905: 0xB083, - 30368 - 11905: 0xB084, - 30369 - 11905: 0xB085, - 30370 - 11905: 0xB086, - 30371 - 11905: 0xB087, - 30372 - 11905: 0xF0AB, - 30373 - 11905: 0xB088, - 30374 - 11905: 0xB089, - 30375 - 11905: 0xB08A, - 30376 - 11905: 0xB08B, - 30377 - 11905: 0xB08C, - 30378 - 11905: 0xB08D, - 30379 - 11905: 0xB08E, - 30380 - 11905: 0xB08F, - 30381 - 11905: 0xB090, - 30382 - 11905: 0xC6A4, - 30383 - 11905: 0xB091, - 30384 - 11905: 0xB092, - 30385 - 11905: 0xD6E5, - 30386 - 11905: 0xF1E4, - 30387 - 11905: 0xB093, - 30388 - 11905: 0xF1E5, - 30389 - 11905: 0xB094, - 30390 - 11905: 0xB095, - 30391 - 11905: 0xB096, - 30392 - 11905: 0xB097, - 30393 - 11905: 0xB098, - 30394 - 11905: 0xB099, - 30395 - 11905: 0xB09A, - 30396 - 11905: 0xB09B, - 30397 - 11905: 0xB09C, - 30398 - 11905: 0xB09D, - 30399 - 11905: 0xC3F3, - 30400 - 11905: 0xB09E, - 30401 - 11905: 0xB09F, - 30402 - 11905: 0xD3DB, - 30403 - 11905: 0xB0A0, - 30404 - 11905: 0xB140, - 30405 - 11905: 0xD6D1, - 30406 - 11905: 0xC5E8, - 30407 - 11905: 0xB141, - 30408 - 11905: 0xD3AF, - 30409 - 11905: 0xB142, - 30410 - 11905: 0xD2E6, - 30411 - 11905: 0xB143, - 30412 - 11905: 0xB144, - 30413 - 11905: 0xEEC1, - 30414 - 11905: 0xB0BB, - 30415 - 11905: 0xD5B5, - 30416 - 11905: 0xD1CE, - 30417 - 11905: 0xBCE0, - 30418 - 11905: 0xBAD0, - 30419 - 11905: 0xB145, - 30420 - 11905: 0xBFF8, - 30421 - 11905: 0xB146, - 30422 - 11905: 0xB8C7, - 30423 - 11905: 0xB5C1, - 30424 - 11905: 0xC5CC, - 30425 - 11905: 0xB147, - 30426 - 11905: 0xB148, - 30427 - 11905: 0xCAA2, - 30428 - 11905: 0xB149, - 30429 - 11905: 0xB14A, - 30430 - 11905: 0xB14B, - 30431 - 11905: 0xC3CB, - 30432 - 11905: 0xB14C, - 30433 - 11905: 0xB14D, - 30434 - 11905: 0xB14E, - 30435 - 11905: 0xB14F, - 30436 - 11905: 0xB150, - 30437 - 11905: 0xEEC2, - 30438 - 11905: 0xB151, - 30439 - 11905: 0xB152, - 30440 - 11905: 0xB153, - 30441 - 11905: 0xB154, - 30442 - 11905: 0xB155, - 30443 - 11905: 0xB156, - 30444 - 11905: 0xB157, - 30445 - 11905: 0xB158, - 30446 - 11905: 0xC4BF, - 30447 - 11905: 0xB6A2, - 30448 - 11905: 0xB159, - 30449 - 11905: 0xEDEC, - 30450 - 11905: 0xC3A4, - 30451 - 11905: 0xB15A, - 30452 - 11905: 0xD6B1, - 30453 - 11905: 0xB15B, - 30454 - 11905: 0xB15C, - 30455 - 11905: 0xB15D, - 30456 - 11905: 0xCFE0, - 30457 - 11905: 0xEDEF, - 30458 - 11905: 0xB15E, - 30459 - 11905: 0xB15F, - 30460 - 11905: 0xC5CE, - 30461 - 11905: 0xB160, - 30462 - 11905: 0xB6DC, - 30463 - 11905: 0xB161, - 30464 - 11905: 0xB162, - 30465 - 11905: 0xCAA1, - 30466 - 11905: 0xB163, - 30467 - 11905: 0xB164, - 30468 - 11905: 0xEDED, - 30469 - 11905: 0xB165, - 30470 - 11905: 0xB166, - 30471 - 11905: 0xEDF0, - 30472 - 11905: 0xEDF1, - 30473 - 11905: 0xC3BC, - 30474 - 11905: 0xB167, - 30475 - 11905: 0xBFB4, - 30476 - 11905: 0xB168, - 30477 - 11905: 0xEDEE, - 30478 - 11905: 0xB169, - 30479 - 11905: 0xB16A, - 30480 - 11905: 0xB16B, - 30481 - 11905: 0xB16C, - 30482 - 11905: 0xB16D, - 30483 - 11905: 0xB16E, - 30484 - 11905: 0xB16F, - 30485 - 11905: 0xB170, - 30486 - 11905: 0xB171, - 30487 - 11905: 0xB172, - 30488 - 11905: 0xB173, - 30489 - 11905: 0xEDF4, - 30490 - 11905: 0xEDF2, - 30491 - 11905: 0xB174, - 30492 - 11905: 0xB175, - 30493 - 11905: 0xB176, - 30494 - 11905: 0xB177, - 30495 - 11905: 0xD5E6, - 30496 - 11905: 0xC3DF, - 30497 - 11905: 0xB178, - 30498 - 11905: 0xEDF3, - 30499 - 11905: 0xB179, - 30500 - 11905: 0xB17A, - 30501 - 11905: 0xB17B, - 30502 - 11905: 0xEDF6, - 30503 - 11905: 0xB17C, - 30504 - 11905: 0xD5A3, - 30505 - 11905: 0xD1A3, - 30506 - 11905: 0xB17D, - 30507 - 11905: 0xB17E, - 30508 - 11905: 0xB180, - 30509 - 11905: 0xEDF5, - 30510 - 11905: 0xB181, - 30511 - 11905: 0xC3D0, - 30512 - 11905: 0xB182, - 30513 - 11905: 0xB183, - 30514 - 11905: 0xB184, - 30515 - 11905: 0xB185, - 30516 - 11905: 0xB186, - 30517 - 11905: 0xEDF7, - 30518 - 11905: 0xBFF4, - 30519 - 11905: 0xBEEC, - 30520 - 11905: 0xEDF8, - 30521 - 11905: 0xB187, - 30522 - 11905: 0xCCF7, - 30523 - 11905: 0xB188, - 30524 - 11905: 0xD1DB, - 30525 - 11905: 0xB189, - 30526 - 11905: 0xB18A, - 30527 - 11905: 0xB18B, - 30528 - 11905: 0xD7C5, - 30529 - 11905: 0xD5F6, - 30530 - 11905: 0xB18C, - 30531 - 11905: 0xEDFC, - 30532 - 11905: 0xB18D, - 30533 - 11905: 0xB18E, - 30534 - 11905: 0xB18F, - 30535 - 11905: 0xEDFB, - 30536 - 11905: 0xB190, - 30537 - 11905: 0xB191, - 30538 - 11905: 0xB192, - 30539 - 11905: 0xB193, - 30540 - 11905: 0xB194, - 30541 - 11905: 0xB195, - 30542 - 11905: 0xB196, - 30543 - 11905: 0xB197, - 30544 - 11905: 0xEDF9, - 30545 - 11905: 0xEDFA, - 30546 - 11905: 0xB198, - 30547 - 11905: 0xB199, - 30548 - 11905: 0xB19A, - 30549 - 11905: 0xB19B, - 30550 - 11905: 0xB19C, - 30551 - 11905: 0xB19D, - 30552 - 11905: 0xB19E, - 30553 - 11905: 0xB19F, - 30554 - 11905: 0xEDFD, - 30555 - 11905: 0xBEA6, - 30556 - 11905: 0xB1A0, - 30557 - 11905: 0xB240, - 30558 - 11905: 0xB241, - 30559 - 11905: 0xB242, - 30560 - 11905: 0xB243, - 30561 - 11905: 0xCBAF, - 30562 - 11905: 0xEEA1, - 30563 - 11905: 0xB6BD, - 30564 - 11905: 0xB244, - 30565 - 11905: 0xEEA2, - 30566 - 11905: 0xC4C0, - 30567 - 11905: 0xB245, - 30568 - 11905: 0xEDFE, - 30569 - 11905: 0xB246, - 30570 - 11905: 0xB247, - 30571 - 11905: 0xBDDE, - 30572 - 11905: 0xB2C7, - 30573 - 11905: 0xB248, - 30574 - 11905: 0xB249, - 30575 - 11905: 0xB24A, - 30576 - 11905: 0xB24B, - 30577 - 11905: 0xB24C, - 30578 - 11905: 0xB24D, - 30579 - 11905: 0xB24E, - 30580 - 11905: 0xB24F, - 30581 - 11905: 0xB250, - 30582 - 11905: 0xB251, - 30583 - 11905: 0xB252, - 30584 - 11905: 0xB253, - 30585 - 11905: 0xB6C3, - 30586 - 11905: 0xB254, - 30587 - 11905: 0xB255, - 30588 - 11905: 0xB256, - 30589 - 11905: 0xEEA5, - 30590 - 11905: 0xD8BA, - 30591 - 11905: 0xEEA3, - 30592 - 11905: 0xEEA6, - 30593 - 11905: 0xB257, - 30594 - 11905: 0xB258, - 30595 - 11905: 0xB259, - 30596 - 11905: 0xC3E9, - 30597 - 11905: 0xB3F2, - 30598 - 11905: 0xB25A, - 30599 - 11905: 0xB25B, - 30600 - 11905: 0xB25C, - 30601 - 11905: 0xB25D, - 30602 - 11905: 0xB25E, - 30603 - 11905: 0xB25F, - 30604 - 11905: 0xEEA7, - 30605 - 11905: 0xEEA4, - 30606 - 11905: 0xCFB9, - 30607 - 11905: 0xB260, - 30608 - 11905: 0xB261, - 30609 - 11905: 0xEEA8, - 30610 - 11905: 0xC2F7, - 30611 - 11905: 0xB262, - 30612 - 11905: 0xB263, - 30613 - 11905: 0xB264, - 30614 - 11905: 0xB265, - 30615 - 11905: 0xB266, - 30616 - 11905: 0xB267, - 30617 - 11905: 0xB268, - 30618 - 11905: 0xB269, - 30619 - 11905: 0xB26A, - 30620 - 11905: 0xB26B, - 30621 - 11905: 0xB26C, - 30622 - 11905: 0xB26D, - 30623 - 11905: 0xEEA9, - 30624 - 11905: 0xEEAA, - 30625 - 11905: 0xB26E, - 30626 - 11905: 0xDEAB, - 30627 - 11905: 0xB26F, - 30628 - 11905: 0xB270, - 30629 - 11905: 0xC6B3, - 30630 - 11905: 0xB271, - 30631 - 11905: 0xC7C6, - 30632 - 11905: 0xB272, - 30633 - 11905: 0xD6F5, - 30634 - 11905: 0xB5C9, - 30635 - 11905: 0xB273, - 30636 - 11905: 0xCBB2, - 30637 - 11905: 0xB274, - 30638 - 11905: 0xB275, - 30639 - 11905: 0xB276, - 30640 - 11905: 0xEEAB, - 30641 - 11905: 0xB277, - 30642 - 11905: 0xB278, - 30643 - 11905: 0xCDAB, - 30644 - 11905: 0xB279, - 30645 - 11905: 0xEEAC, - 30646 - 11905: 0xB27A, - 30647 - 11905: 0xB27B, - 30648 - 11905: 0xB27C, - 30649 - 11905: 0xB27D, - 30650 - 11905: 0xB27E, - 30651 - 11905: 0xD5B0, - 30652 - 11905: 0xB280, - 30653 - 11905: 0xEEAD, - 30654 - 11905: 0xB281, - 30655 - 11905: 0xF6C4, - 30656 - 11905: 0xB282, - 30657 - 11905: 0xB283, - 30658 - 11905: 0xB284, - 30659 - 11905: 0xB285, - 30660 - 11905: 0xB286, - 30661 - 11905: 0xB287, - 30662 - 11905: 0xB288, - 30663 - 11905: 0xB289, - 30664 - 11905: 0xB28A, - 30665 - 11905: 0xB28B, - 30666 - 11905: 0xB28C, - 30667 - 11905: 0xB28D, - 30668 - 11905: 0xB28E, - 30669 - 11905: 0xDBC7, - 30670 - 11905: 0xB28F, - 30671 - 11905: 0xB290, - 30672 - 11905: 0xB291, - 30673 - 11905: 0xB292, - 30674 - 11905: 0xB293, - 30675 - 11905: 0xB294, - 30676 - 11905: 0xB295, - 30677 - 11905: 0xB296, - 30678 - 11905: 0xB297, - 30679 - 11905: 0xB4A3, - 30680 - 11905: 0xB298, - 30681 - 11905: 0xB299, - 30682 - 11905: 0xB29A, - 30683 - 11905: 0xC3AC, - 30684 - 11905: 0xF1E6, - 30685 - 11905: 0xB29B, - 30686 - 11905: 0xB29C, - 30687 - 11905: 0xB29D, - 30688 - 11905: 0xB29E, - 30689 - 11905: 0xB29F, - 30690 - 11905: 0xCAB8, - 30691 - 11905: 0xD2D3, - 30692 - 11905: 0xB2A0, - 30693 - 11905: 0xD6AA, - 30694 - 11905: 0xB340, - 30695 - 11905: 0xEFF2, - 30696 - 11905: 0xB341, - 30697 - 11905: 0xBED8, - 30698 - 11905: 0xB342, - 30699 - 11905: 0xBDC3, - 30700 - 11905: 0xEFF3, - 30701 - 11905: 0xB6CC, - 30702 - 11905: 0xB0AB, - 30703 - 11905: 0xB343, - 30704 - 11905: 0xB344, - 30705 - 11905: 0xB345, - 30706 - 11905: 0xB346, - 30707 - 11905: 0xCAAF, - 30708 - 11905: 0xB347, - 30709 - 11905: 0xB348, - 30710 - 11905: 0xEDB6, - 30711 - 11905: 0xB349, - 30712 - 11905: 0xEDB7, - 30713 - 11905: 0xB34A, - 30714 - 11905: 0xB34B, - 30715 - 11905: 0xB34C, - 30716 - 11905: 0xB34D, - 30717 - 11905: 0xCEF9, - 30718 - 11905: 0xB7AF, - 30719 - 11905: 0xBFF3, - 30720 - 11905: 0xEDB8, - 30721 - 11905: 0xC2EB, - 30722 - 11905: 0xC9B0, - 30723 - 11905: 0xB34E, - 30724 - 11905: 0xB34F, - 30725 - 11905: 0xB350, - 30726 - 11905: 0xB351, - 30727 - 11905: 0xB352, - 30728 - 11905: 0xB353, - 30729 - 11905: 0xEDB9, - 30730 - 11905: 0xB354, - 30731 - 11905: 0xB355, - 30732 - 11905: 0xC6F6, - 30733 - 11905: 0xBFB3, - 30734 - 11905: 0xB356, - 30735 - 11905: 0xB357, - 30736 - 11905: 0xB358, - 30737 - 11905: 0xEDBC, - 30738 - 11905: 0xC5F8, - 30739 - 11905: 0xB359, - 30740 - 11905: 0xD1D0, - 30741 - 11905: 0xB35A, - 30742 - 11905: 0xD7A9, - 30743 - 11905: 0xEDBA, - 30744 - 11905: 0xEDBB, - 30745 - 11905: 0xB35B, - 30746 - 11905: 0xD1E2, - 30747 - 11905: 0xB35C, - 30748 - 11905: 0xEDBF, - 30749 - 11905: 0xEDC0, - 30750 - 11905: 0xB35D, - 30751 - 11905: 0xEDC4, - 30752 - 11905: 0xB35E, - 30753 - 11905: 0xB35F, - 30754 - 11905: 0xB360, - 30755 - 11905: 0xEDC8, - 30756 - 11905: 0xB361, - 30757 - 11905: 0xEDC6, - 30758 - 11905: 0xEDCE, - 30759 - 11905: 0xD5E8, - 30760 - 11905: 0xB362, - 30761 - 11905: 0xEDC9, - 30762 - 11905: 0xB363, - 30763 - 11905: 0xB364, - 30764 - 11905: 0xEDC7, - 30765 - 11905: 0xEDBE, - 30766 - 11905: 0xB365, - 30767 - 11905: 0xB366, - 30768 - 11905: 0xC5E9, - 30769 - 11905: 0xB367, - 30770 - 11905: 0xB368, - 30771 - 11905: 0xB369, - 30772 - 11905: 0xC6C6, - 30773 - 11905: 0xB36A, - 30774 - 11905: 0xB36B, - 30775 - 11905: 0xC9E9, - 30776 - 11905: 0xD4D2, - 30777 - 11905: 0xEDC1, - 30778 - 11905: 0xEDC2, - 30779 - 11905: 0xEDC3, - 30780 - 11905: 0xEDC5, - 30781 - 11905: 0xB36C, - 30782 - 11905: 0xC0F9, - 30783 - 11905: 0xB36D, - 30784 - 11905: 0xB4A1, - 30785 - 11905: 0xB36E, - 30786 - 11905: 0xB36F, - 30787 - 11905: 0xB370, - 30788 - 11905: 0xB371, - 30789 - 11905: 0xB9E8, - 30790 - 11905: 0xB372, - 30791 - 11905: 0xEDD0, - 30792 - 11905: 0xB373, - 30793 - 11905: 0xB374, - 30794 - 11905: 0xB375, - 30795 - 11905: 0xB376, - 30796 - 11905: 0xEDD1, - 30797 - 11905: 0xB377, - 30798 - 11905: 0xEDCA, - 30799 - 11905: 0xB378, - 30800 - 11905: 0xEDCF, - 30801 - 11905: 0xB379, - 30802 - 11905: 0xCEF8, - 30803 - 11905: 0xB37A, - 30804 - 11905: 0xB37B, - 30805 - 11905: 0xCBB6, - 30806 - 11905: 0xEDCC, - 30807 - 11905: 0xEDCD, - 30808 - 11905: 0xB37C, - 30809 - 11905: 0xB37D, - 30810 - 11905: 0xB37E, - 30811 - 11905: 0xB380, - 30812 - 11905: 0xB381, - 30813 - 11905: 0xCFF5, - 30814 - 11905: 0xB382, - 30815 - 11905: 0xB383, - 30816 - 11905: 0xB384, - 30817 - 11905: 0xB385, - 30818 - 11905: 0xB386, - 30819 - 11905: 0xB387, - 30820 - 11905: 0xB388, - 30821 - 11905: 0xB389, - 30822 - 11905: 0xB38A, - 30823 - 11905: 0xB38B, - 30824 - 11905: 0xB38C, - 30825 - 11905: 0xB38D, - 30826 - 11905: 0xEDD2, - 30827 - 11905: 0xC1F2, - 30828 - 11905: 0xD3B2, - 30829 - 11905: 0xEDCB, - 30830 - 11905: 0xC8B7, - 30831 - 11905: 0xB38E, - 30832 - 11905: 0xB38F, - 30833 - 11905: 0xB390, - 30834 - 11905: 0xB391, - 30835 - 11905: 0xB392, - 30836 - 11905: 0xB393, - 30837 - 11905: 0xB394, - 30838 - 11905: 0xB395, - 30839 - 11905: 0xBCEF, - 30840 - 11905: 0xB396, - 30841 - 11905: 0xB397, - 30842 - 11905: 0xB398, - 30843 - 11905: 0xB399, - 30844 - 11905: 0xC5F0, - 30845 - 11905: 0xB39A, - 30846 - 11905: 0xB39B, - 30847 - 11905: 0xB39C, - 30848 - 11905: 0xB39D, - 30849 - 11905: 0xB39E, - 30850 - 11905: 0xB39F, - 30851 - 11905: 0xB3A0, - 30852 - 11905: 0xB440, - 30853 - 11905: 0xB441, - 30854 - 11905: 0xB442, - 30855 - 11905: 0xEDD6, - 30856 - 11905: 0xB443, - 30857 - 11905: 0xB5EF, - 30858 - 11905: 0xB444, - 30859 - 11905: 0xB445, - 30860 - 11905: 0xC2B5, - 30861 - 11905: 0xB0AD, - 30862 - 11905: 0xCBE9, - 30863 - 11905: 0xB446, - 30864 - 11905: 0xB447, - 30865 - 11905: 0xB1AE, - 30866 - 11905: 0xB448, - 30867 - 11905: 0xEDD4, - 30868 - 11905: 0xB449, - 30869 - 11905: 0xB44A, - 30870 - 11905: 0xB44B, - 30871 - 11905: 0xCDEB, - 30872 - 11905: 0xB5E2, - 30873 - 11905: 0xB44C, - 30874 - 11905: 0xEDD5, - 30875 - 11905: 0xEDD3, - 30876 - 11905: 0xEDD7, - 30877 - 11905: 0xB44D, - 30878 - 11905: 0xB44E, - 30879 - 11905: 0xB5FA, - 30880 - 11905: 0xB44F, - 30881 - 11905: 0xEDD8, - 30882 - 11905: 0xB450, - 30883 - 11905: 0xEDD9, - 30884 - 11905: 0xB451, - 30885 - 11905: 0xEDDC, - 30886 - 11905: 0xB452, - 30887 - 11905: 0xB1CC, - 30888 - 11905: 0xB453, - 30889 - 11905: 0xB454, - 30890 - 11905: 0xB455, - 30891 - 11905: 0xB456, - 30892 - 11905: 0xB457, - 30893 - 11905: 0xB458, - 30894 - 11905: 0xB459, - 30895 - 11905: 0xB45A, - 30896 - 11905: 0xC5F6, - 30897 - 11905: 0xBCEE, - 30898 - 11905: 0xEDDA, - 30899 - 11905: 0xCCBC, - 30900 - 11905: 0xB2EA, - 30901 - 11905: 0xB45B, - 30902 - 11905: 0xB45C, - 30903 - 11905: 0xB45D, - 30904 - 11905: 0xB45E, - 30905 - 11905: 0xEDDB, - 30906 - 11905: 0xB45F, - 30907 - 11905: 0xB460, - 30908 - 11905: 0xB461, - 30909 - 11905: 0xB462, - 30910 - 11905: 0xC4EB, - 30911 - 11905: 0xB463, - 30912 - 11905: 0xB464, - 30913 - 11905: 0xB4C5, - 30914 - 11905: 0xB465, - 30915 - 11905: 0xB466, - 30916 - 11905: 0xB467, - 30917 - 11905: 0xB0F5, - 30918 - 11905: 0xB468, - 30919 - 11905: 0xB469, - 30920 - 11905: 0xB46A, - 30921 - 11905: 0xEDDF, - 30922 - 11905: 0xC0DA, - 30923 - 11905: 0xB4E8, - 30924 - 11905: 0xB46B, - 30925 - 11905: 0xB46C, - 30926 - 11905: 0xB46D, - 30927 - 11905: 0xB46E, - 30928 - 11905: 0xC5CD, - 30929 - 11905: 0xB46F, - 30930 - 11905: 0xB470, - 30931 - 11905: 0xB471, - 30932 - 11905: 0xEDDD, - 30933 - 11905: 0xBFC4, - 30934 - 11905: 0xB472, - 30935 - 11905: 0xB473, - 30936 - 11905: 0xB474, - 30937 - 11905: 0xEDDE, - 30938 - 11905: 0xB475, - 30939 - 11905: 0xB476, - 30940 - 11905: 0xB477, - 30941 - 11905: 0xB478, - 30942 - 11905: 0xB479, - 30943 - 11905: 0xB47A, - 30944 - 11905: 0xB47B, - 30945 - 11905: 0xB47C, - 30946 - 11905: 0xB47D, - 30947 - 11905: 0xB47E, - 30948 - 11905: 0xB480, - 30949 - 11905: 0xB481, - 30950 - 11905: 0xB482, - 30951 - 11905: 0xB483, - 30952 - 11905: 0xC4A5, - 30953 - 11905: 0xB484, - 30954 - 11905: 0xB485, - 30955 - 11905: 0xB486, - 30956 - 11905: 0xEDE0, - 30957 - 11905: 0xB487, - 30958 - 11905: 0xB488, - 30959 - 11905: 0xB489, - 30960 - 11905: 0xB48A, - 30961 - 11905: 0xB48B, - 30962 - 11905: 0xEDE1, - 30963 - 11905: 0xB48C, - 30964 - 11905: 0xEDE3, - 30965 - 11905: 0xB48D, - 30966 - 11905: 0xB48E, - 30967 - 11905: 0xC1D7, - 30968 - 11905: 0xB48F, - 30969 - 11905: 0xB490, - 30970 - 11905: 0xBBC7, - 30971 - 11905: 0xB491, - 30972 - 11905: 0xB492, - 30973 - 11905: 0xB493, - 30974 - 11905: 0xB494, - 30975 - 11905: 0xB495, - 30976 - 11905: 0xB496, - 30977 - 11905: 0xBDB8, - 30978 - 11905: 0xB497, - 30979 - 11905: 0xB498, - 30980 - 11905: 0xB499, - 30981 - 11905: 0xEDE2, - 30982 - 11905: 0xB49A, - 30983 - 11905: 0xB49B, - 30984 - 11905: 0xB49C, - 30985 - 11905: 0xB49D, - 30986 - 11905: 0xB49E, - 30987 - 11905: 0xB49F, - 30988 - 11905: 0xB4A0, - 30989 - 11905: 0xB540, - 30990 - 11905: 0xB541, - 30991 - 11905: 0xB542, - 30992 - 11905: 0xB543, - 30993 - 11905: 0xB544, - 30994 - 11905: 0xB545, - 30995 - 11905: 0xEDE4, - 30996 - 11905: 0xB546, - 30997 - 11905: 0xB547, - 30998 - 11905: 0xB548, - 30999 - 11905: 0xB549, - 31000 - 11905: 0xB54A, - 31001 - 11905: 0xB54B, - 31002 - 11905: 0xB54C, - 31003 - 11905: 0xB54D, - 31004 - 11905: 0xB54E, - 31005 - 11905: 0xB54F, - 31006 - 11905: 0xEDE6, - 31007 - 11905: 0xB550, - 31008 - 11905: 0xB551, - 31009 - 11905: 0xB552, - 31010 - 11905: 0xB553, - 31011 - 11905: 0xB554, - 31012 - 11905: 0xEDE5, - 31013 - 11905: 0xB555, - 31014 - 11905: 0xB556, - 31015 - 11905: 0xB557, - 31016 - 11905: 0xB558, - 31017 - 11905: 0xB559, - 31018 - 11905: 0xB55A, - 31019 - 11905: 0xB55B, - 31020 - 11905: 0xB55C, - 31021 - 11905: 0xB55D, - 31022 - 11905: 0xB55E, - 31023 - 11905: 0xB55F, - 31024 - 11905: 0xB560, - 31025 - 11905: 0xB561, - 31026 - 11905: 0xB562, - 31027 - 11905: 0xB563, - 31028 - 11905: 0xEDE7, - 31029 - 11905: 0xB564, - 31030 - 11905: 0xB565, - 31031 - 11905: 0xB566, - 31032 - 11905: 0xB567, - 31033 - 11905: 0xB568, - 31034 - 11905: 0xCABE, - 31035 - 11905: 0xECEA, - 31036 - 11905: 0xC0F1, - 31037 - 11905: 0xB569, - 31038 - 11905: 0xC9E7, - 31039 - 11905: 0xB56A, - 31040 - 11905: 0xECEB, - 31041 - 11905: 0xC6EE, - 31042 - 11905: 0xB56B, - 31043 - 11905: 0xB56C, - 31044 - 11905: 0xB56D, - 31045 - 11905: 0xB56E, - 31046 - 11905: 0xECEC, - 31047 - 11905: 0xB56F, - 31048 - 11905: 0xC6ED, - 31049 - 11905: 0xECED, - 31050 - 11905: 0xB570, - 31051 - 11905: 0xB571, - 31052 - 11905: 0xB572, - 31053 - 11905: 0xB573, - 31054 - 11905: 0xB574, - 31055 - 11905: 0xB575, - 31056 - 11905: 0xB576, - 31057 - 11905: 0xB577, - 31058 - 11905: 0xB578, - 31059 - 11905: 0xECF0, - 31060 - 11905: 0xB579, - 31061 - 11905: 0xB57A, - 31062 - 11905: 0xD7E6, - 31063 - 11905: 0xECF3, - 31064 - 11905: 0xB57B, - 31065 - 11905: 0xB57C, - 31066 - 11905: 0xECF1, - 31067 - 11905: 0xECEE, - 31068 - 11905: 0xECEF, - 31069 - 11905: 0xD7A3, - 31070 - 11905: 0xC9F1, - 31071 - 11905: 0xCBEE, - 31072 - 11905: 0xECF4, - 31073 - 11905: 0xB57D, - 31074 - 11905: 0xECF2, - 31075 - 11905: 0xB57E, - 31076 - 11905: 0xB580, - 31077 - 11905: 0xCFE9, - 31078 - 11905: 0xB581, - 31079 - 11905: 0xECF6, - 31080 - 11905: 0xC6B1, - 31081 - 11905: 0xB582, - 31082 - 11905: 0xB583, - 31083 - 11905: 0xB584, - 31084 - 11905: 0xB585, - 31085 - 11905: 0xBCC0, - 31086 - 11905: 0xB586, - 31087 - 11905: 0xECF5, - 31088 - 11905: 0xB587, - 31089 - 11905: 0xB588, - 31090 - 11905: 0xB589, - 31091 - 11905: 0xB58A, - 31092 - 11905: 0xB58B, - 31093 - 11905: 0xB58C, - 31094 - 11905: 0xB58D, - 31095 - 11905: 0xB5BB, - 31096 - 11905: 0xBBF6, - 31097 - 11905: 0xB58E, - 31098 - 11905: 0xECF7, - 31099 - 11905: 0xB58F, - 31100 - 11905: 0xB590, - 31101 - 11905: 0xB591, - 31102 - 11905: 0xB592, - 31103 - 11905: 0xB593, - 31104 - 11905: 0xD9F7, - 31105 - 11905: 0xBDFB, - 31106 - 11905: 0xB594, - 31107 - 11905: 0xB595, - 31108 - 11905: 0xC2BB, - 31109 - 11905: 0xECF8, - 31110 - 11905: 0xB596, - 31111 - 11905: 0xB597, - 31112 - 11905: 0xB598, - 31113 - 11905: 0xB599, - 31114 - 11905: 0xECF9, - 31115 - 11905: 0xB59A, - 31116 - 11905: 0xB59B, - 31117 - 11905: 0xB59C, - 31118 - 11905: 0xB59D, - 31119 - 11905: 0xB8A3, - 31120 - 11905: 0xB59E, - 31121 - 11905: 0xB59F, - 31122 - 11905: 0xB5A0, - 31123 - 11905: 0xB640, - 31124 - 11905: 0xB641, - 31125 - 11905: 0xB642, - 31126 - 11905: 0xB643, - 31127 - 11905: 0xB644, - 31128 - 11905: 0xB645, - 31129 - 11905: 0xB646, - 31130 - 11905: 0xECFA, - 31131 - 11905: 0xB647, - 31132 - 11905: 0xB648, - 31133 - 11905: 0xB649, - 31134 - 11905: 0xB64A, - 31135 - 11905: 0xB64B, - 31136 - 11905: 0xB64C, - 31137 - 11905: 0xB64D, - 31138 - 11905: 0xB64E, - 31139 - 11905: 0xB64F, - 31140 - 11905: 0xB650, - 31141 - 11905: 0xB651, - 31142 - 11905: 0xB652, - 31143 - 11905: 0xECFB, - 31144 - 11905: 0xB653, - 31145 - 11905: 0xB654, - 31146 - 11905: 0xB655, - 31147 - 11905: 0xB656, - 31148 - 11905: 0xB657, - 31149 - 11905: 0xB658, - 31150 - 11905: 0xB659, - 31151 - 11905: 0xB65A, - 31152 - 11905: 0xB65B, - 31153 - 11905: 0xB65C, - 31154 - 11905: 0xB65D, - 31155 - 11905: 0xECFC, - 31156 - 11905: 0xB65E, - 31157 - 11905: 0xB65F, - 31158 - 11905: 0xB660, - 31159 - 11905: 0xB661, - 31160 - 11905: 0xB662, - 31161 - 11905: 0xD3ED, - 31162 - 11905: 0xD8AE, - 31163 - 11905: 0xC0EB, - 31164 - 11905: 0xB663, - 31165 - 11905: 0xC7DD, - 31166 - 11905: 0xBACC, - 31167 - 11905: 0xB664, - 31168 - 11905: 0xD0E3, - 31169 - 11905: 0xCBBD, - 31170 - 11905: 0xB665, - 31171 - 11905: 0xCDBA, - 31172 - 11905: 0xB666, - 31173 - 11905: 0xB667, - 31174 - 11905: 0xB8D1, - 31175 - 11905: 0xB668, - 31176 - 11905: 0xB669, - 31177 - 11905: 0xB1FC, - 31178 - 11905: 0xB66A, - 31179 - 11905: 0xC7EF, - 31180 - 11905: 0xB66B, - 31181 - 11905: 0xD6D6, - 31182 - 11905: 0xB66C, - 31183 - 11905: 0xB66D, - 31184 - 11905: 0xB66E, - 31185 - 11905: 0xBFC6, - 31186 - 11905: 0xC3EB, - 31187 - 11905: 0xB66F, - 31188 - 11905: 0xB670, - 31189 - 11905: 0xEFF5, - 31190 - 11905: 0xB671, - 31191 - 11905: 0xB672, - 31192 - 11905: 0xC3D8, - 31193 - 11905: 0xB673, - 31194 - 11905: 0xB674, - 31195 - 11905: 0xB675, - 31196 - 11905: 0xB676, - 31197 - 11905: 0xB677, - 31198 - 11905: 0xB678, - 31199 - 11905: 0xD7E2, - 31200 - 11905: 0xB679, - 31201 - 11905: 0xB67A, - 31202 - 11905: 0xB67B, - 31203 - 11905: 0xEFF7, - 31204 - 11905: 0xB3D3, - 31205 - 11905: 0xB67C, - 31206 - 11905: 0xC7D8, - 31207 - 11905: 0xD1ED, - 31208 - 11905: 0xB67D, - 31209 - 11905: 0xD6C8, - 31210 - 11905: 0xB67E, - 31211 - 11905: 0xEFF8, - 31212 - 11905: 0xB680, - 31213 - 11905: 0xEFF6, - 31214 - 11905: 0xB681, - 31215 - 11905: 0xBBFD, - 31216 - 11905: 0xB3C6, - 31217 - 11905: 0xB682, - 31218 - 11905: 0xB683, - 31219 - 11905: 0xB684, - 31220 - 11905: 0xB685, - 31221 - 11905: 0xB686, - 31222 - 11905: 0xB687, - 31223 - 11905: 0xB688, - 31224 - 11905: 0xBDD5, - 31225 - 11905: 0xB689, - 31226 - 11905: 0xB68A, - 31227 - 11905: 0xD2C6, - 31228 - 11905: 0xB68B, - 31229 - 11905: 0xBBE0, - 31230 - 11905: 0xB68C, - 31231 - 11905: 0xB68D, - 31232 - 11905: 0xCFA1, - 31233 - 11905: 0xB68E, - 31234 - 11905: 0xEFFC, - 31235 - 11905: 0xEFFB, - 31236 - 11905: 0xB68F, - 31237 - 11905: 0xB690, - 31238 - 11905: 0xEFF9, - 31239 - 11905: 0xB691, - 31240 - 11905: 0xB692, - 31241 - 11905: 0xB693, - 31242 - 11905: 0xB694, - 31243 - 11905: 0xB3CC, - 31244 - 11905: 0xB695, - 31245 - 11905: 0xC9D4, - 31246 - 11905: 0xCBB0, - 31247 - 11905: 0xB696, - 31248 - 11905: 0xB697, - 31249 - 11905: 0xB698, - 31250 - 11905: 0xB699, - 31251 - 11905: 0xB69A, - 31252 - 11905: 0xEFFE, - 31253 - 11905: 0xB69B, - 31254 - 11905: 0xB69C, - 31255 - 11905: 0xB0DE, - 31256 - 11905: 0xB69D, - 31257 - 11905: 0xB69E, - 31258 - 11905: 0xD6C9, - 31259 - 11905: 0xB69F, - 31260 - 11905: 0xB6A0, - 31261 - 11905: 0xB740, - 31262 - 11905: 0xEFFD, - 31263 - 11905: 0xB741, - 31264 - 11905: 0xB3ED, - 31265 - 11905: 0xB742, - 31266 - 11905: 0xB743, - 31267 - 11905: 0xF6D5, - 31268 - 11905: 0xB744, - 31269 - 11905: 0xB745, - 31270 - 11905: 0xB746, - 31271 - 11905: 0xB747, - 31272 - 11905: 0xB748, - 31273 - 11905: 0xB749, - 31274 - 11905: 0xB74A, - 31275 - 11905: 0xB74B, - 31276 - 11905: 0xB74C, - 31277 - 11905: 0xB74D, - 31278 - 11905: 0xB74E, - 31279 - 11905: 0xB74F, - 31280 - 11905: 0xB750, - 31281 - 11905: 0xB751, - 31282 - 11905: 0xB752, - 31283 - 11905: 0xCEC8, - 31284 - 11905: 0xB753, - 31285 - 11905: 0xB754, - 31286 - 11905: 0xB755, - 31287 - 11905: 0xF0A2, - 31288 - 11905: 0xB756, - 31289 - 11905: 0xF0A1, - 31290 - 11905: 0xB757, - 31291 - 11905: 0xB5BE, - 31292 - 11905: 0xBCDA, - 31293 - 11905: 0xBBFC, - 31294 - 11905: 0xB758, - 31295 - 11905: 0xB8E5, - 31296 - 11905: 0xB759, - 31297 - 11905: 0xB75A, - 31298 - 11905: 0xB75B, - 31299 - 11905: 0xB75C, - 31300 - 11905: 0xB75D, - 31301 - 11905: 0xB75E, - 31302 - 11905: 0xC4C2, - 31303 - 11905: 0xB75F, - 31304 - 11905: 0xB760, - 31305 - 11905: 0xB761, - 31306 - 11905: 0xB762, - 31307 - 11905: 0xB763, - 31308 - 11905: 0xB764, - 31309 - 11905: 0xB765, - 31310 - 11905: 0xB766, - 31311 - 11905: 0xB767, - 31312 - 11905: 0xB768, - 31313 - 11905: 0xF0A3, - 31314 - 11905: 0xB769, - 31315 - 11905: 0xB76A, - 31316 - 11905: 0xB76B, - 31317 - 11905: 0xB76C, - 31318 - 11905: 0xB76D, - 31319 - 11905: 0xCBEB, - 31320 - 11905: 0xB76E, - 31321 - 11905: 0xB76F, - 31322 - 11905: 0xB770, - 31323 - 11905: 0xB771, - 31324 - 11905: 0xB772, - 31325 - 11905: 0xB773, - 31326 - 11905: 0xB774, - 31327 - 11905: 0xB775, - 31328 - 11905: 0xB776, - 31329 - 11905: 0xB777, - 31330 - 11905: 0xB778, - 31331 - 11905: 0xB779, - 31332 - 11905: 0xB77A, - 31333 - 11905: 0xB77B, - 31334 - 11905: 0xB77C, - 31335 - 11905: 0xB77D, - 31336 - 11905: 0xB77E, - 31337 - 11905: 0xB780, - 31338 - 11905: 0xB781, - 31339 - 11905: 0xB782, - 31340 - 11905: 0xB783, - 31341 - 11905: 0xB784, - 31342 - 11905: 0xB785, - 31343 - 11905: 0xB786, - 31344 - 11905: 0xF0A6, - 31345 - 11905: 0xB787, - 31346 - 11905: 0xB788, - 31347 - 11905: 0xB789, - 31348 - 11905: 0xD1A8, - 31349 - 11905: 0xB78A, - 31350 - 11905: 0xBEBF, - 31351 - 11905: 0xC7EE, - 31352 - 11905: 0xF1B6, - 31353 - 11905: 0xF1B7, - 31354 - 11905: 0xBFD5, - 31355 - 11905: 0xB78B, - 31356 - 11905: 0xB78C, - 31357 - 11905: 0xB78D, - 31358 - 11905: 0xB78E, - 31359 - 11905: 0xB4A9, - 31360 - 11905: 0xF1B8, - 31361 - 11905: 0xCDBB, - 31362 - 11905: 0xB78F, - 31363 - 11905: 0xC7D4, - 31364 - 11905: 0xD5AD, - 31365 - 11905: 0xB790, - 31366 - 11905: 0xF1B9, - 31367 - 11905: 0xB791, - 31368 - 11905: 0xF1BA, - 31369 - 11905: 0xB792, - 31370 - 11905: 0xB793, - 31371 - 11905: 0xB794, - 31372 - 11905: 0xB795, - 31373 - 11905: 0xC7CF, - 31374 - 11905: 0xB796, - 31375 - 11905: 0xB797, - 31376 - 11905: 0xB798, - 31377 - 11905: 0xD2A4, - 31378 - 11905: 0xD6CF, - 31379 - 11905: 0xB799, - 31380 - 11905: 0xB79A, - 31381 - 11905: 0xF1BB, - 31382 - 11905: 0xBDD1, - 31383 - 11905: 0xB4B0, - 31384 - 11905: 0xBEBD, - 31385 - 11905: 0xB79B, - 31386 - 11905: 0xB79C, - 31387 - 11905: 0xB79D, - 31388 - 11905: 0xB4DC, - 31389 - 11905: 0xCED1, - 31390 - 11905: 0xB79E, - 31391 - 11905: 0xBFDF, - 31392 - 11905: 0xF1BD, - 31393 - 11905: 0xB79F, - 31394 - 11905: 0xB7A0, - 31395 - 11905: 0xB840, - 31396 - 11905: 0xB841, - 31397 - 11905: 0xBFFA, - 31398 - 11905: 0xF1BC, - 31399 - 11905: 0xB842, - 31400 - 11905: 0xF1BF, - 31401 - 11905: 0xB843, - 31402 - 11905: 0xB844, - 31403 - 11905: 0xB845, - 31404 - 11905: 0xF1BE, - 31405 - 11905: 0xF1C0, - 31406 - 11905: 0xB846, - 31407 - 11905: 0xB847, - 31408 - 11905: 0xB848, - 31409 - 11905: 0xB849, - 31410 - 11905: 0xB84A, - 31411 - 11905: 0xF1C1, - 31412 - 11905: 0xB84B, - 31413 - 11905: 0xB84C, - 31414 - 11905: 0xB84D, - 31415 - 11905: 0xB84E, - 31416 - 11905: 0xB84F, - 31417 - 11905: 0xB850, - 31418 - 11905: 0xB851, - 31419 - 11905: 0xB852, - 31420 - 11905: 0xB853, - 31421 - 11905: 0xB854, - 31422 - 11905: 0xB855, - 31423 - 11905: 0xC1FE, - 31424 - 11905: 0xB856, - 31425 - 11905: 0xB857, - 31426 - 11905: 0xB858, - 31427 - 11905: 0xB859, - 31428 - 11905: 0xB85A, - 31429 - 11905: 0xB85B, - 31430 - 11905: 0xB85C, - 31431 - 11905: 0xB85D, - 31432 - 11905: 0xB85E, - 31433 - 11905: 0xB85F, - 31434 - 11905: 0xB860, - 31435 - 11905: 0xC1A2, - 31436 - 11905: 0xB861, - 31437 - 11905: 0xB862, - 31438 - 11905: 0xB863, - 31439 - 11905: 0xB864, - 31440 - 11905: 0xB865, - 31441 - 11905: 0xB866, - 31442 - 11905: 0xB867, - 31443 - 11905: 0xB868, - 31444 - 11905: 0xB869, - 31445 - 11905: 0xB86A, - 31446 - 11905: 0xCAFA, - 31447 - 11905: 0xB86B, - 31448 - 11905: 0xB86C, - 31449 - 11905: 0xD5BE, - 31450 - 11905: 0xB86D, - 31451 - 11905: 0xB86E, - 31452 - 11905: 0xB86F, - 31453 - 11905: 0xB870, - 31454 - 11905: 0xBEBA, - 31455 - 11905: 0xBEB9, - 31456 - 11905: 0xD5C2, - 31457 - 11905: 0xB871, - 31458 - 11905: 0xB872, - 31459 - 11905: 0xBFA2, - 31460 - 11905: 0xB873, - 31461 - 11905: 0xCDAF, - 31462 - 11905: 0xF1B5, - 31463 - 11905: 0xB874, - 31464 - 11905: 0xB875, - 31465 - 11905: 0xB876, - 31466 - 11905: 0xB877, - 31467 - 11905: 0xB878, - 31468 - 11905: 0xB879, - 31469 - 11905: 0xBDDF, - 31470 - 11905: 0xB87A, - 31471 - 11905: 0xB6CB, - 31472 - 11905: 0xB87B, - 31473 - 11905: 0xB87C, - 31474 - 11905: 0xB87D, - 31475 - 11905: 0xB87E, - 31476 - 11905: 0xB880, - 31477 - 11905: 0xB881, - 31478 - 11905: 0xB882, - 31479 - 11905: 0xB883, - 31480 - 11905: 0xB884, - 31481 - 11905: 0xD6F1, - 31482 - 11905: 0xF3C3, - 31483 - 11905: 0xB885, - 31484 - 11905: 0xB886, - 31485 - 11905: 0xF3C4, - 31486 - 11905: 0xB887, - 31487 - 11905: 0xB8CD, - 31488 - 11905: 0xB888, - 31489 - 11905: 0xB889, - 31490 - 11905: 0xB88A, - 31491 - 11905: 0xF3C6, - 31492 - 11905: 0xF3C7, - 31493 - 11905: 0xB88B, - 31494 - 11905: 0xB0CA, - 31495 - 11905: 0xB88C, - 31496 - 11905: 0xF3C5, - 31497 - 11905: 0xB88D, - 31498 - 11905: 0xF3C9, - 31499 - 11905: 0xCBF1, - 31500 - 11905: 0xB88E, - 31501 - 11905: 0xB88F, - 31502 - 11905: 0xB890, - 31503 - 11905: 0xF3CB, - 31504 - 11905: 0xB891, - 31505 - 11905: 0xD0A6, - 31506 - 11905: 0xB892, - 31507 - 11905: 0xB893, - 31508 - 11905: 0xB1CA, - 31509 - 11905: 0xF3C8, - 31510 - 11905: 0xB894, - 31511 - 11905: 0xB895, - 31512 - 11905: 0xB896, - 31513 - 11905: 0xF3CF, - 31514 - 11905: 0xB897, - 31515 - 11905: 0xB5D1, - 31516 - 11905: 0xB898, - 31517 - 11905: 0xB899, - 31518 - 11905: 0xF3D7, - 31519 - 11905: 0xB89A, - 31520 - 11905: 0xF3D2, - 31521 - 11905: 0xB89B, - 31522 - 11905: 0xB89C, - 31523 - 11905: 0xB89D, - 31524 - 11905: 0xF3D4, - 31525 - 11905: 0xF3D3, - 31526 - 11905: 0xB7FB, - 31527 - 11905: 0xB89E, - 31528 - 11905: 0xB1BF, - 31529 - 11905: 0xB89F, - 31530 - 11905: 0xF3CE, - 31531 - 11905: 0xF3CA, - 31532 - 11905: 0xB5DA, - 31533 - 11905: 0xB8A0, - 31534 - 11905: 0xF3D0, - 31535 - 11905: 0xB940, - 31536 - 11905: 0xB941, - 31537 - 11905: 0xF3D1, - 31538 - 11905: 0xB942, - 31539 - 11905: 0xF3D5, - 31540 - 11905: 0xB943, - 31541 - 11905: 0xB944, - 31542 - 11905: 0xB945, - 31543 - 11905: 0xB946, - 31544 - 11905: 0xF3CD, - 31545 - 11905: 0xB947, - 31546 - 11905: 0xBCE3, - 31547 - 11905: 0xB948, - 31548 - 11905: 0xC1FD, - 31549 - 11905: 0xB949, - 31550 - 11905: 0xF3D6, - 31551 - 11905: 0xB94A, - 31552 - 11905: 0xB94B, - 31553 - 11905: 0xB94C, - 31554 - 11905: 0xB94D, - 31555 - 11905: 0xB94E, - 31556 - 11905: 0xB94F, - 31557 - 11905: 0xF3DA, - 31558 - 11905: 0xB950, - 31559 - 11905: 0xF3CC, - 31560 - 11905: 0xB951, - 31561 - 11905: 0xB5C8, - 31562 - 11905: 0xB952, - 31563 - 11905: 0xBDEE, - 31564 - 11905: 0xF3DC, - 31565 - 11905: 0xB953, - 31566 - 11905: 0xB954, - 31567 - 11905: 0xB7A4, - 31568 - 11905: 0xBFF0, - 31569 - 11905: 0xD6FE, - 31570 - 11905: 0xCDB2, - 31571 - 11905: 0xB955, - 31572 - 11905: 0xB4F0, - 31573 - 11905: 0xB956, - 31574 - 11905: 0xB2DF, - 31575 - 11905: 0xB957, - 31576 - 11905: 0xF3D8, - 31577 - 11905: 0xB958, - 31578 - 11905: 0xF3D9, - 31579 - 11905: 0xC9B8, - 31580 - 11905: 0xB959, - 31581 - 11905: 0xF3DD, - 31582 - 11905: 0xB95A, - 31583 - 11905: 0xB95B, - 31584 - 11905: 0xF3DE, - 31585 - 11905: 0xB95C, - 31586 - 11905: 0xF3E1, - 31587 - 11905: 0xB95D, - 31588 - 11905: 0xB95E, - 31589 - 11905: 0xB95F, - 31590 - 11905: 0xB960, - 31591 - 11905: 0xB961, - 31592 - 11905: 0xB962, - 31593 - 11905: 0xB963, - 31594 - 11905: 0xB964, - 31595 - 11905: 0xB965, - 31596 - 11905: 0xB966, - 31597 - 11905: 0xB967, - 31598 - 11905: 0xF3DF, - 31599 - 11905: 0xB968, - 31600 - 11905: 0xB969, - 31601 - 11905: 0xF3E3, - 31602 - 11905: 0xF3E2, - 31603 - 11905: 0xB96A, - 31604 - 11905: 0xB96B, - 31605 - 11905: 0xF3DB, - 31606 - 11905: 0xB96C, - 31607 - 11905: 0xBFEA, - 31608 - 11905: 0xB96D, - 31609 - 11905: 0xB3EF, - 31610 - 11905: 0xB96E, - 31611 - 11905: 0xF3E0, - 31612 - 11905: 0xB96F, - 31613 - 11905: 0xB970, - 31614 - 11905: 0xC7A9, - 31615 - 11905: 0xB971, - 31616 - 11905: 0xBCF2, - 31617 - 11905: 0xB972, - 31618 - 11905: 0xB973, - 31619 - 11905: 0xB974, - 31620 - 11905: 0xB975, - 31621 - 11905: 0xF3EB, - 31622 - 11905: 0xB976, - 31623 - 11905: 0xB977, - 31624 - 11905: 0xB978, - 31625 - 11905: 0xB979, - 31626 - 11905: 0xB97A, - 31627 - 11905: 0xB97B, - 31628 - 11905: 0xB97C, - 31629 - 11905: 0xB9BF, - 31630 - 11905: 0xB97D, - 31631 - 11905: 0xB97E, - 31632 - 11905: 0xF3E4, - 31633 - 11905: 0xB980, - 31634 - 11905: 0xB981, - 31635 - 11905: 0xB982, - 31636 - 11905: 0xB2AD, - 31637 - 11905: 0xBBFE, - 31638 - 11905: 0xB983, - 31639 - 11905: 0xCBE3, - 31640 - 11905: 0xB984, - 31641 - 11905: 0xB985, - 31642 - 11905: 0xB986, - 31643 - 11905: 0xB987, - 31644 - 11905: 0xF3ED, - 31645 - 11905: 0xF3E9, - 31646 - 11905: 0xB988, - 31647 - 11905: 0xB989, - 31648 - 11905: 0xB98A, - 31649 - 11905: 0xB9DC, - 31650 - 11905: 0xF3EE, - 31651 - 11905: 0xB98B, - 31652 - 11905: 0xB98C, - 31653 - 11905: 0xB98D, - 31654 - 11905: 0xF3E5, - 31655 - 11905: 0xF3E6, - 31656 - 11905: 0xF3EA, - 31657 - 11905: 0xC2E1, - 31658 - 11905: 0xF3EC, - 31659 - 11905: 0xF3EF, - 31660 - 11905: 0xF3E8, - 31661 - 11905: 0xBCFD, - 31662 - 11905: 0xB98E, - 31663 - 11905: 0xB98F, - 31664 - 11905: 0xB990, - 31665 - 11905: 0xCFE4, - 31666 - 11905: 0xB991, - 31667 - 11905: 0xB992, - 31668 - 11905: 0xF3F0, - 31669 - 11905: 0xB993, - 31670 - 11905: 0xB994, - 31671 - 11905: 0xB995, - 31672 - 11905: 0xF3E7, - 31673 - 11905: 0xB996, - 31674 - 11905: 0xB997, - 31675 - 11905: 0xB998, - 31676 - 11905: 0xB999, - 31677 - 11905: 0xB99A, - 31678 - 11905: 0xB99B, - 31679 - 11905: 0xB99C, - 31680 - 11905: 0xB99D, - 31681 - 11905: 0xF3F2, - 31682 - 11905: 0xB99E, - 31683 - 11905: 0xB99F, - 31684 - 11905: 0xB9A0, - 31685 - 11905: 0xBA40, - 31686 - 11905: 0xD7AD, - 31687 - 11905: 0xC6AA, - 31688 - 11905: 0xBA41, - 31689 - 11905: 0xBA42, - 31690 - 11905: 0xBA43, - 31691 - 11905: 0xBA44, - 31692 - 11905: 0xF3F3, - 31693 - 11905: 0xBA45, - 31694 - 11905: 0xBA46, - 31695 - 11905: 0xBA47, - 31696 - 11905: 0xBA48, - 31697 - 11905: 0xF3F1, - 31698 - 11905: 0xBA49, - 31699 - 11905: 0xC2A8, - 31700 - 11905: 0xBA4A, - 31701 - 11905: 0xBA4B, - 31702 - 11905: 0xBA4C, - 31703 - 11905: 0xBA4D, - 31704 - 11905: 0xBA4E, - 31705 - 11905: 0xB8DD, - 31706 - 11905: 0xF3F5, - 31707 - 11905: 0xBA4F, - 31708 - 11905: 0xBA50, - 31709 - 11905: 0xF3F4, - 31710 - 11905: 0xBA51, - 31711 - 11905: 0xBA52, - 31712 - 11905: 0xBA53, - 31713 - 11905: 0xB4DB, - 31714 - 11905: 0xBA54, - 31715 - 11905: 0xBA55, - 31716 - 11905: 0xBA56, - 31717 - 11905: 0xF3F6, - 31718 - 11905: 0xF3F7, - 31719 - 11905: 0xBA57, - 31720 - 11905: 0xBA58, - 31721 - 11905: 0xBA59, - 31722 - 11905: 0xF3F8, - 31723 - 11905: 0xBA5A, - 31724 - 11905: 0xBA5B, - 31725 - 11905: 0xBA5C, - 31726 - 11905: 0xC0BA, - 31727 - 11905: 0xBA5D, - 31728 - 11905: 0xBA5E, - 31729 - 11905: 0xC0E9, - 31730 - 11905: 0xBA5F, - 31731 - 11905: 0xBA60, - 31732 - 11905: 0xBA61, - 31733 - 11905: 0xBA62, - 31734 - 11905: 0xBA63, - 31735 - 11905: 0xC5F1, - 31736 - 11905: 0xBA64, - 31737 - 11905: 0xBA65, - 31738 - 11905: 0xBA66, - 31739 - 11905: 0xBA67, - 31740 - 11905: 0xF3FB, - 31741 - 11905: 0xBA68, - 31742 - 11905: 0xF3FA, - 31743 - 11905: 0xBA69, - 31744 - 11905: 0xBA6A, - 31745 - 11905: 0xBA6B, - 31746 - 11905: 0xBA6C, - 31747 - 11905: 0xBA6D, - 31748 - 11905: 0xBA6E, - 31749 - 11905: 0xBA6F, - 31750 - 11905: 0xBA70, - 31751 - 11905: 0xB4D8, - 31752 - 11905: 0xBA71, - 31753 - 11905: 0xBA72, - 31754 - 11905: 0xBA73, - 31755 - 11905: 0xF3FE, - 31756 - 11905: 0xF3F9, - 31757 - 11905: 0xBA74, - 31758 - 11905: 0xBA75, - 31759 - 11905: 0xF3FC, - 31760 - 11905: 0xBA76, - 31761 - 11905: 0xBA77, - 31762 - 11905: 0xBA78, - 31763 - 11905: 0xBA79, - 31764 - 11905: 0xBA7A, - 31765 - 11905: 0xBA7B, - 31766 - 11905: 0xF3FD, - 31767 - 11905: 0xBA7C, - 31768 - 11905: 0xBA7D, - 31769 - 11905: 0xBA7E, - 31770 - 11905: 0xBA80, - 31771 - 11905: 0xBA81, - 31772 - 11905: 0xBA82, - 31773 - 11905: 0xBA83, - 31774 - 11905: 0xBA84, - 31775 - 11905: 0xF4A1, - 31776 - 11905: 0xBA85, - 31777 - 11905: 0xBA86, - 31778 - 11905: 0xBA87, - 31779 - 11905: 0xBA88, - 31780 - 11905: 0xBA89, - 31781 - 11905: 0xBA8A, - 31782 - 11905: 0xF4A3, - 31783 - 11905: 0xBBC9, - 31784 - 11905: 0xBA8B, - 31785 - 11905: 0xBA8C, - 31786 - 11905: 0xF4A2, - 31787 - 11905: 0xBA8D, - 31788 - 11905: 0xBA8E, - 31789 - 11905: 0xBA8F, - 31790 - 11905: 0xBA90, - 31791 - 11905: 0xBA91, - 31792 - 11905: 0xBA92, - 31793 - 11905: 0xBA93, - 31794 - 11905: 0xBA94, - 31795 - 11905: 0xBA95, - 31796 - 11905: 0xBA96, - 31797 - 11905: 0xBA97, - 31798 - 11905: 0xBA98, - 31799 - 11905: 0xBA99, - 31800 - 11905: 0xF4A4, - 31801 - 11905: 0xBA9A, - 31802 - 11905: 0xBA9B, - 31803 - 11905: 0xBA9C, - 31804 - 11905: 0xBA9D, - 31805 - 11905: 0xBA9E, - 31806 - 11905: 0xBA9F, - 31807 - 11905: 0xB2BE, - 31808 - 11905: 0xF4A6, - 31809 - 11905: 0xF4A5, - 31810 - 11905: 0xBAA0, - 31811 - 11905: 0xBB40, - 31812 - 11905: 0xBB41, - 31813 - 11905: 0xBB42, - 31814 - 11905: 0xBB43, - 31815 - 11905: 0xBB44, - 31816 - 11905: 0xBB45, - 31817 - 11905: 0xBB46, - 31818 - 11905: 0xBB47, - 31819 - 11905: 0xBB48, - 31820 - 11905: 0xBB49, - 31821 - 11905: 0xBCAE, - 31822 - 11905: 0xBB4A, - 31823 - 11905: 0xBB4B, - 31824 - 11905: 0xBB4C, - 31825 - 11905: 0xBB4D, - 31826 - 11905: 0xBB4E, - 31827 - 11905: 0xBB4F, - 31828 - 11905: 0xBB50, - 31829 - 11905: 0xBB51, - 31830 - 11905: 0xBB52, - 31831 - 11905: 0xBB53, - 31832 - 11905: 0xBB54, - 31833 - 11905: 0xBB55, - 31834 - 11905: 0xBB56, - 31835 - 11905: 0xBB57, - 31836 - 11905: 0xBB58, - 31837 - 11905: 0xBB59, - 31838 - 11905: 0xBB5A, - 31839 - 11905: 0xBB5B, - 31840 - 11905: 0xBB5C, - 31841 - 11905: 0xBB5D, - 31842 - 11905: 0xBB5E, - 31843 - 11905: 0xBB5F, - 31844 - 11905: 0xBB60, - 31845 - 11905: 0xBB61, - 31846 - 11905: 0xBB62, - 31847 - 11905: 0xBB63, - 31848 - 11905: 0xBB64, - 31849 - 11905: 0xBB65, - 31850 - 11905: 0xBB66, - 31851 - 11905: 0xBB67, - 31852 - 11905: 0xBB68, - 31853 - 11905: 0xBB69, - 31854 - 11905: 0xBB6A, - 31855 - 11905: 0xBB6B, - 31856 - 11905: 0xBB6C, - 31857 - 11905: 0xBB6D, - 31858 - 11905: 0xBB6E, - 31859 - 11905: 0xC3D7, - 31860 - 11905: 0xD9E1, - 31861 - 11905: 0xBB6F, - 31862 - 11905: 0xBB70, - 31863 - 11905: 0xBB71, - 31864 - 11905: 0xBB72, - 31865 - 11905: 0xBB73, - 31866 - 11905: 0xBB74, - 31867 - 11905: 0xC0E0, - 31868 - 11905: 0xF4CC, - 31869 - 11905: 0xD7D1, - 31870 - 11905: 0xBB75, - 31871 - 11905: 0xBB76, - 31872 - 11905: 0xBB77, - 31873 - 11905: 0xBB78, - 31874 - 11905: 0xBB79, - 31875 - 11905: 0xBB7A, - 31876 - 11905: 0xBB7B, - 31877 - 11905: 0xBB7C, - 31878 - 11905: 0xBB7D, - 31879 - 11905: 0xBB7E, - 31880 - 11905: 0xBB80, - 31881 - 11905: 0xB7DB, - 31882 - 11905: 0xBB81, - 31883 - 11905: 0xBB82, - 31884 - 11905: 0xBB83, - 31885 - 11905: 0xBB84, - 31886 - 11905: 0xBB85, - 31887 - 11905: 0xBB86, - 31888 - 11905: 0xBB87, - 31889 - 11905: 0xF4CE, - 31890 - 11905: 0xC1A3, - 31891 - 11905: 0xBB88, - 31892 - 11905: 0xBB89, - 31893 - 11905: 0xC6C9, - 31894 - 11905: 0xBB8A, - 31895 - 11905: 0xB4D6, - 31896 - 11905: 0xD5B3, - 31897 - 11905: 0xBB8B, - 31898 - 11905: 0xBB8C, - 31899 - 11905: 0xBB8D, - 31900 - 11905: 0xF4D0, - 31901 - 11905: 0xF4CF, - 31902 - 11905: 0xF4D1, - 31903 - 11905: 0xCBDA, - 31904 - 11905: 0xBB8E, - 31905 - 11905: 0xBB8F, - 31906 - 11905: 0xF4D2, - 31907 - 11905: 0xBB90, - 31908 - 11905: 0xD4C1, - 31909 - 11905: 0xD6E0, - 31910 - 11905: 0xBB91, - 31911 - 11905: 0xBB92, - 31912 - 11905: 0xBB93, - 31913 - 11905: 0xBB94, - 31914 - 11905: 0xB7E0, - 31915 - 11905: 0xBB95, - 31916 - 11905: 0xBB96, - 31917 - 11905: 0xBB97, - 31918 - 11905: 0xC1B8, - 31919 - 11905: 0xBB98, - 31920 - 11905: 0xBB99, - 31921 - 11905: 0xC1BB, - 31922 - 11905: 0xF4D3, - 31923 - 11905: 0xBEAC, - 31924 - 11905: 0xBB9A, - 31925 - 11905: 0xBB9B, - 31926 - 11905: 0xBB9C, - 31927 - 11905: 0xBB9D, - 31928 - 11905: 0xBB9E, - 31929 - 11905: 0xB4E2, - 31930 - 11905: 0xBB9F, - 31931 - 11905: 0xBBA0, - 31932 - 11905: 0xF4D4, - 31933 - 11905: 0xF4D5, - 31934 - 11905: 0xBEAB, - 31935 - 11905: 0xBC40, - 31936 - 11905: 0xBC41, - 31937 - 11905: 0xF4D6, - 31938 - 11905: 0xBC42, - 31939 - 11905: 0xBC43, - 31940 - 11905: 0xBC44, - 31941 - 11905: 0xF4DB, - 31942 - 11905: 0xBC45, - 31943 - 11905: 0xF4D7, - 31944 - 11905: 0xF4DA, - 31945 - 11905: 0xBC46, - 31946 - 11905: 0xBAFD, - 31947 - 11905: 0xBC47, - 31948 - 11905: 0xF4D8, - 31949 - 11905: 0xF4D9, - 31950 - 11905: 0xBC48, - 31951 - 11905: 0xBC49, - 31952 - 11905: 0xBC4A, - 31953 - 11905: 0xBC4B, - 31954 - 11905: 0xBC4C, - 31955 - 11905: 0xBC4D, - 31956 - 11905: 0xBC4E, - 31957 - 11905: 0xB8E2, - 31958 - 11905: 0xCCC7, - 31959 - 11905: 0xF4DC, - 31960 - 11905: 0xBC4F, - 31961 - 11905: 0xB2DA, - 31962 - 11905: 0xBC50, - 31963 - 11905: 0xBC51, - 31964 - 11905: 0xC3D3, - 31965 - 11905: 0xBC52, - 31966 - 11905: 0xBC53, - 31967 - 11905: 0xD4E3, - 31968 - 11905: 0xBFB7, - 31969 - 11905: 0xBC54, - 31970 - 11905: 0xBC55, - 31971 - 11905: 0xBC56, - 31972 - 11905: 0xBC57, - 31973 - 11905: 0xBC58, - 31974 - 11905: 0xBC59, - 31975 - 11905: 0xBC5A, - 31976 - 11905: 0xF4DD, - 31977 - 11905: 0xBC5B, - 31978 - 11905: 0xBC5C, - 31979 - 11905: 0xBC5D, - 31980 - 11905: 0xBC5E, - 31981 - 11905: 0xBC5F, - 31982 - 11905: 0xBC60, - 31983 - 11905: 0xC5B4, - 31984 - 11905: 0xBC61, - 31985 - 11905: 0xBC62, - 31986 - 11905: 0xBC63, - 31987 - 11905: 0xBC64, - 31988 - 11905: 0xBC65, - 31989 - 11905: 0xBC66, - 31990 - 11905: 0xBC67, - 31991 - 11905: 0xBC68, - 31992 - 11905: 0xF4E9, - 31993 - 11905: 0xBC69, - 31994 - 11905: 0xBC6A, - 31995 - 11905: 0xCFB5, - 31996 - 11905: 0xBC6B, - 31997 - 11905: 0xBC6C, - 31998 - 11905: 0xBC6D, - 31999 - 11905: 0xBC6E, - 32000 - 11905: 0xBC6F, - 32001 - 11905: 0xBC70, - 32002 - 11905: 0xBC71, - 32003 - 11905: 0xBC72, - 32004 - 11905: 0xBC73, - 32005 - 11905: 0xBC74, - 32006 - 11905: 0xBC75, - 32007 - 11905: 0xBC76, - 32008 - 11905: 0xBC77, - 32009 - 11905: 0xBC78, - 32010 - 11905: 0xCEC9, - 32011 - 11905: 0xBC79, - 32012 - 11905: 0xBC7A, - 32013 - 11905: 0xBC7B, - 32014 - 11905: 0xBC7C, - 32015 - 11905: 0xBC7D, - 32016 - 11905: 0xBC7E, - 32017 - 11905: 0xBC80, - 32018 - 11905: 0xBC81, - 32019 - 11905: 0xBC82, - 32020 - 11905: 0xBC83, - 32021 - 11905: 0xBC84, - 32022 - 11905: 0xBC85, - 32023 - 11905: 0xBC86, - 32024 - 11905: 0xBC87, - 32025 - 11905: 0xBC88, - 32026 - 11905: 0xBC89, - 32027 - 11905: 0xBC8A, - 32028 - 11905: 0xBC8B, - 32029 - 11905: 0xBC8C, - 32030 - 11905: 0xBC8D, - 32031 - 11905: 0xBC8E, - 32032 - 11905: 0xCBD8, - 32033 - 11905: 0xBC8F, - 32034 - 11905: 0xCBF7, - 32035 - 11905: 0xBC90, - 32036 - 11905: 0xBC91, - 32037 - 11905: 0xBC92, - 32038 - 11905: 0xBC93, - 32039 - 11905: 0xBDF4, - 32040 - 11905: 0xBC94, - 32041 - 11905: 0xBC95, - 32042 - 11905: 0xBC96, - 32043 - 11905: 0xD7CF, - 32044 - 11905: 0xBC97, - 32045 - 11905: 0xBC98, - 32046 - 11905: 0xBC99, - 32047 - 11905: 0xC0DB, - 32048 - 11905: 0xBC9A, - 32049 - 11905: 0xBC9B, - 32050 - 11905: 0xBC9C, - 32051 - 11905: 0xBC9D, - 32052 - 11905: 0xBC9E, - 32053 - 11905: 0xBC9F, - 32054 - 11905: 0xBCA0, - 32055 - 11905: 0xBD40, - 32056 - 11905: 0xBD41, - 32057 - 11905: 0xBD42, - 32058 - 11905: 0xBD43, - 32059 - 11905: 0xBD44, - 32060 - 11905: 0xBD45, - 32061 - 11905: 0xBD46, - 32062 - 11905: 0xBD47, - 32063 - 11905: 0xBD48, - 32064 - 11905: 0xBD49, - 32065 - 11905: 0xBD4A, - 32066 - 11905: 0xBD4B, - 32067 - 11905: 0xBD4C, - 32068 - 11905: 0xBD4D, - 32069 - 11905: 0xBD4E, - 32070 - 11905: 0xBD4F, - 32071 - 11905: 0xBD50, - 32072 - 11905: 0xBD51, - 32073 - 11905: 0xBD52, - 32074 - 11905: 0xBD53, - 32075 - 11905: 0xBD54, - 32076 - 11905: 0xBD55, - 32077 - 11905: 0xBD56, - 32078 - 11905: 0xBD57, - 32079 - 11905: 0xBD58, - 32080 - 11905: 0xBD59, - 32081 - 11905: 0xBD5A, - 32082 - 11905: 0xBD5B, - 32083 - 11905: 0xBD5C, - 32084 - 11905: 0xBD5D, - 32085 - 11905: 0xBD5E, - 32086 - 11905: 0xBD5F, - 32087 - 11905: 0xBD60, - 32088 - 11905: 0xBD61, - 32089 - 11905: 0xBD62, - 32090 - 11905: 0xBD63, - 32091 - 11905: 0xBD64, - 32092 - 11905: 0xBD65, - 32093 - 11905: 0xBD66, - 32094 - 11905: 0xBD67, - 32095 - 11905: 0xBD68, - 32096 - 11905: 0xBD69, - 32097 - 11905: 0xBD6A, - 32098 - 11905: 0xBD6B, - 32099 - 11905: 0xBD6C, - 32100 - 11905: 0xBD6D, - 32101 - 11905: 0xBD6E, - 32102 - 11905: 0xBD6F, - 32103 - 11905: 0xBD70, - 32104 - 11905: 0xBD71, - 32105 - 11905: 0xBD72, - 32106 - 11905: 0xBD73, - 32107 - 11905: 0xBD74, - 32108 - 11905: 0xBD75, - 32109 - 11905: 0xBD76, - 32110 - 11905: 0xD0F5, - 32111 - 11905: 0xBD77, - 32112 - 11905: 0xBD78, - 32113 - 11905: 0xBD79, - 32114 - 11905: 0xBD7A, - 32115 - 11905: 0xBD7B, - 32116 - 11905: 0xBD7C, - 32117 - 11905: 0xBD7D, - 32118 - 11905: 0xBD7E, - 32119 - 11905: 0xF4EA, - 32120 - 11905: 0xBD80, - 32121 - 11905: 0xBD81, - 32122 - 11905: 0xBD82, - 32123 - 11905: 0xBD83, - 32124 - 11905: 0xBD84, - 32125 - 11905: 0xBD85, - 32126 - 11905: 0xBD86, - 32127 - 11905: 0xBD87, - 32128 - 11905: 0xBD88, - 32129 - 11905: 0xBD89, - 32130 - 11905: 0xBD8A, - 32131 - 11905: 0xBD8B, - 32132 - 11905: 0xBD8C, - 32133 - 11905: 0xBD8D, - 32134 - 11905: 0xBD8E, - 32135 - 11905: 0xBD8F, - 32136 - 11905: 0xBD90, - 32137 - 11905: 0xBD91, - 32138 - 11905: 0xBD92, - 32139 - 11905: 0xBD93, - 32140 - 11905: 0xBD94, - 32141 - 11905: 0xBD95, - 32142 - 11905: 0xBD96, - 32143 - 11905: 0xBD97, - 32144 - 11905: 0xBD98, - 32145 - 11905: 0xBD99, - 32146 - 11905: 0xBD9A, - 32147 - 11905: 0xBD9B, - 32148 - 11905: 0xBD9C, - 32149 - 11905: 0xBD9D, - 32150 - 11905: 0xBD9E, - 32151 - 11905: 0xBD9F, - 32152 - 11905: 0xBDA0, - 32153 - 11905: 0xBE40, - 32154 - 11905: 0xBE41, - 32155 - 11905: 0xBE42, - 32156 - 11905: 0xBE43, - 32157 - 11905: 0xBE44, - 32158 - 11905: 0xBE45, - 32159 - 11905: 0xBE46, - 32160 - 11905: 0xBE47, - 32161 - 11905: 0xBE48, - 32162 - 11905: 0xBE49, - 32163 - 11905: 0xBE4A, - 32164 - 11905: 0xBE4B, - 32165 - 11905: 0xBE4C, - 32166 - 11905: 0xF4EB, - 32167 - 11905: 0xBE4D, - 32168 - 11905: 0xBE4E, - 32169 - 11905: 0xBE4F, - 32170 - 11905: 0xBE50, - 32171 - 11905: 0xBE51, - 32172 - 11905: 0xBE52, - 32173 - 11905: 0xBE53, - 32174 - 11905: 0xF4EC, - 32175 - 11905: 0xBE54, - 32176 - 11905: 0xBE55, - 32177 - 11905: 0xBE56, - 32178 - 11905: 0xBE57, - 32179 - 11905: 0xBE58, - 32180 - 11905: 0xBE59, - 32181 - 11905: 0xBE5A, - 32182 - 11905: 0xBE5B, - 32183 - 11905: 0xBE5C, - 32184 - 11905: 0xBE5D, - 32185 - 11905: 0xBE5E, - 32186 - 11905: 0xBE5F, - 32187 - 11905: 0xBE60, - 32188 - 11905: 0xBE61, - 32189 - 11905: 0xBE62, - 32190 - 11905: 0xBE63, - 32191 - 11905: 0xBE64, - 32192 - 11905: 0xBE65, - 32193 - 11905: 0xBE66, - 32194 - 11905: 0xBE67, - 32195 - 11905: 0xBE68, - 32196 - 11905: 0xBE69, - 32197 - 11905: 0xBE6A, - 32198 - 11905: 0xBE6B, - 32199 - 11905: 0xBE6C, - 32200 - 11905: 0xBE6D, - 32201 - 11905: 0xBE6E, - 32202 - 11905: 0xBE6F, - 32203 - 11905: 0xBE70, - 32204 - 11905: 0xBE71, - 32205 - 11905: 0xBE72, - 32206 - 11905: 0xBE73, - 32207 - 11905: 0xBE74, - 32208 - 11905: 0xBE75, - 32209 - 11905: 0xBE76, - 32210 - 11905: 0xBE77, - 32211 - 11905: 0xBE78, - 32212 - 11905: 0xBE79, - 32213 - 11905: 0xBE7A, - 32214 - 11905: 0xBE7B, - 32215 - 11905: 0xBE7C, - 32216 - 11905: 0xBE7D, - 32217 - 11905: 0xBE7E, - 32218 - 11905: 0xBE80, - 32219 - 11905: 0xBE81, - 32220 - 11905: 0xBE82, - 32221 - 11905: 0xBE83, - 32222 - 11905: 0xBE84, - 32223 - 11905: 0xBE85, - 32224 - 11905: 0xBE86, - 32225 - 11905: 0xBE87, - 32226 - 11905: 0xBE88, - 32227 - 11905: 0xBE89, - 32228 - 11905: 0xBE8A, - 32229 - 11905: 0xBE8B, - 32230 - 11905: 0xBE8C, - 32231 - 11905: 0xBE8D, - 32232 - 11905: 0xBE8E, - 32233 - 11905: 0xBE8F, - 32234 - 11905: 0xBE90, - 32235 - 11905: 0xBE91, - 32236 - 11905: 0xBE92, - 32237 - 11905: 0xBE93, - 32238 - 11905: 0xBE94, - 32239 - 11905: 0xBE95, - 32240 - 11905: 0xBE96, - 32241 - 11905: 0xBE97, - 32242 - 11905: 0xBE98, - 32243 - 11905: 0xBE99, - 32244 - 11905: 0xBE9A, - 32245 - 11905: 0xBE9B, - 32246 - 11905: 0xBE9C, - 32247 - 11905: 0xBE9D, - 32248 - 11905: 0xBE9E, - 32249 - 11905: 0xBE9F, - 32250 - 11905: 0xBEA0, - 32251 - 11905: 0xBF40, - 32252 - 11905: 0xBF41, - 32253 - 11905: 0xBF42, - 32254 - 11905: 0xBF43, - 32255 - 11905: 0xBF44, - 32256 - 11905: 0xBF45, - 32257 - 11905: 0xBF46, - 32258 - 11905: 0xBF47, - 32259 - 11905: 0xBF48, - 32260 - 11905: 0xBF49, - 32261 - 11905: 0xBF4A, - 32262 - 11905: 0xBF4B, - 32263 - 11905: 0xBF4C, - 32264 - 11905: 0xBF4D, - 32265 - 11905: 0xBF4E, - 32266 - 11905: 0xBF4F, - 32267 - 11905: 0xBF50, - 32268 - 11905: 0xBF51, - 32269 - 11905: 0xBF52, - 32270 - 11905: 0xBF53, - 32271 - 11905: 0xBF54, - 32272 - 11905: 0xBF55, - 32273 - 11905: 0xBF56, - 32274 - 11905: 0xBF57, - 32275 - 11905: 0xBF58, - 32276 - 11905: 0xBF59, - 32277 - 11905: 0xBF5A, - 32278 - 11905: 0xBF5B, - 32279 - 11905: 0xBF5C, - 32280 - 11905: 0xBF5D, - 32281 - 11905: 0xBF5E, - 32282 - 11905: 0xBF5F, - 32283 - 11905: 0xBF60, - 32284 - 11905: 0xBF61, - 32285 - 11905: 0xBF62, - 32286 - 11905: 0xBF63, - 32287 - 11905: 0xBF64, - 32288 - 11905: 0xBF65, - 32289 - 11905: 0xBF66, - 32290 - 11905: 0xBF67, - 32291 - 11905: 0xBF68, - 32292 - 11905: 0xBF69, - 32293 - 11905: 0xBF6A, - 32294 - 11905: 0xBF6B, - 32295 - 11905: 0xBF6C, - 32296 - 11905: 0xBF6D, - 32297 - 11905: 0xBF6E, - 32298 - 11905: 0xBF6F, - 32299 - 11905: 0xBF70, - 32300 - 11905: 0xBF71, - 32301 - 11905: 0xBF72, - 32302 - 11905: 0xBF73, - 32303 - 11905: 0xBF74, - 32304 - 11905: 0xBF75, - 32305 - 11905: 0xBF76, - 32306 - 11905: 0xBF77, - 32307 - 11905: 0xBF78, - 32308 - 11905: 0xBF79, - 32309 - 11905: 0xBF7A, - 32310 - 11905: 0xBF7B, - 32311 - 11905: 0xBF7C, - 32312 - 11905: 0xBF7D, - 32313 - 11905: 0xBF7E, - 32314 - 11905: 0xBF80, - 32315 - 11905: 0xF7E3, - 32316 - 11905: 0xBF81, - 32317 - 11905: 0xBF82, - 32318 - 11905: 0xBF83, - 32319 - 11905: 0xBF84, - 32320 - 11905: 0xBF85, - 32321 - 11905: 0xB7B1, - 32322 - 11905: 0xBF86, - 32323 - 11905: 0xBF87, - 32324 - 11905: 0xBF88, - 32325 - 11905: 0xBF89, - 32326 - 11905: 0xBF8A, - 32327 - 11905: 0xF4ED, - 32328 - 11905: 0xBF8B, - 32329 - 11905: 0xBF8C, - 32330 - 11905: 0xBF8D, - 32331 - 11905: 0xBF8E, - 32332 - 11905: 0xBF8F, - 32333 - 11905: 0xBF90, - 32334 - 11905: 0xBF91, - 32335 - 11905: 0xBF92, - 32336 - 11905: 0xBF93, - 32337 - 11905: 0xBF94, - 32338 - 11905: 0xBF95, - 32339 - 11905: 0xBF96, - 32340 - 11905: 0xBF97, - 32341 - 11905: 0xBF98, - 32342 - 11905: 0xBF99, - 32343 - 11905: 0xBF9A, - 32344 - 11905: 0xBF9B, - 32345 - 11905: 0xBF9C, - 32346 - 11905: 0xBF9D, - 32347 - 11905: 0xBF9E, - 32348 - 11905: 0xBF9F, - 32349 - 11905: 0xBFA0, - 32350 - 11905: 0xC040, - 32351 - 11905: 0xC041, - 32352 - 11905: 0xC042, - 32353 - 11905: 0xC043, - 32354 - 11905: 0xC044, - 32355 - 11905: 0xC045, - 32356 - 11905: 0xC046, - 32357 - 11905: 0xC047, - 32358 - 11905: 0xC048, - 32359 - 11905: 0xC049, - 32360 - 11905: 0xC04A, - 32361 - 11905: 0xC04B, - 32362 - 11905: 0xC04C, - 32363 - 11905: 0xC04D, - 32364 - 11905: 0xC04E, - 32365 - 11905: 0xC04F, - 32366 - 11905: 0xC050, - 32367 - 11905: 0xC051, - 32368 - 11905: 0xC052, - 32369 - 11905: 0xC053, - 32370 - 11905: 0xC054, - 32371 - 11905: 0xC055, - 32372 - 11905: 0xC056, - 32373 - 11905: 0xC057, - 32374 - 11905: 0xC058, - 32375 - 11905: 0xC059, - 32376 - 11905: 0xC05A, - 32377 - 11905: 0xC05B, - 32378 - 11905: 0xC05C, - 32379 - 11905: 0xC05D, - 32380 - 11905: 0xC05E, - 32381 - 11905: 0xC05F, - 32382 - 11905: 0xC060, - 32383 - 11905: 0xC061, - 32384 - 11905: 0xC062, - 32385 - 11905: 0xC063, - 32386 - 11905: 0xD7EB, - 32387 - 11905: 0xC064, - 32388 - 11905: 0xC065, - 32389 - 11905: 0xC066, - 32390 - 11905: 0xC067, - 32391 - 11905: 0xC068, - 32392 - 11905: 0xC069, - 32393 - 11905: 0xC06A, - 32394 - 11905: 0xC06B, - 32395 - 11905: 0xC06C, - 32396 - 11905: 0xC06D, - 32397 - 11905: 0xC06E, - 32398 - 11905: 0xC06F, - 32399 - 11905: 0xC070, - 32400 - 11905: 0xC071, - 32401 - 11905: 0xC072, - 32402 - 11905: 0xC073, - 32403 - 11905: 0xC074, - 32404 - 11905: 0xC075, - 32405 - 11905: 0xC076, - 32406 - 11905: 0xC077, - 32407 - 11905: 0xC078, - 32408 - 11905: 0xC079, - 32409 - 11905: 0xC07A, - 32410 - 11905: 0xC07B, - 32411 - 11905: 0xF4EE, - 32412 - 11905: 0xC07C, - 32413 - 11905: 0xC07D, - 32414 - 11905: 0xC07E, - 32415 - 11905: 0xE6F9, - 32416 - 11905: 0xBEC0, - 32417 - 11905: 0xE6FA, - 32418 - 11905: 0xBAEC, - 32419 - 11905: 0xE6FB, - 32420 - 11905: 0xCFCB, - 32421 - 11905: 0xE6FC, - 32422 - 11905: 0xD4BC, - 32423 - 11905: 0xBCB6, - 32424 - 11905: 0xE6FD, - 32425 - 11905: 0xE6FE, - 32426 - 11905: 0xBCCD, - 32427 - 11905: 0xC8D2, - 32428 - 11905: 0xCEB3, - 32429 - 11905: 0xE7A1, - 32430 - 11905: 0xC080, - 32431 - 11905: 0xB4BF, - 32432 - 11905: 0xE7A2, - 32433 - 11905: 0xC9B4, - 32434 - 11905: 0xB8D9, - 32435 - 11905: 0xC4C9, - 32436 - 11905: 0xC081, - 32437 - 11905: 0xD7DD, - 32438 - 11905: 0xC2DA, - 32439 - 11905: 0xB7D7, - 32440 - 11905: 0xD6BD, - 32441 - 11905: 0xCEC6, - 32442 - 11905: 0xB7C4, - 32443 - 11905: 0xC082, - 32444 - 11905: 0xC083, - 32445 - 11905: 0xC5A6, - 32446 - 11905: 0xE7A3, - 32447 - 11905: 0xCFDF, - 32448 - 11905: 0xE7A4, - 32449 - 11905: 0xE7A5, - 32450 - 11905: 0xE7A6, - 32451 - 11905: 0xC1B7, - 32452 - 11905: 0xD7E9, - 32453 - 11905: 0xC9F0, - 32454 - 11905: 0xCFB8, - 32455 - 11905: 0xD6AF, - 32456 - 11905: 0xD6D5, - 32457 - 11905: 0xE7A7, - 32458 - 11905: 0xB0ED, - 32459 - 11905: 0xE7A8, - 32460 - 11905: 0xE7A9, - 32461 - 11905: 0xC9DC, - 32462 - 11905: 0xD2EF, - 32463 - 11905: 0xBEAD, - 32464 - 11905: 0xE7AA, - 32465 - 11905: 0xB0F3, - 32466 - 11905: 0xC8DE, - 32467 - 11905: 0xBDE1, - 32468 - 11905: 0xE7AB, - 32469 - 11905: 0xC8C6, - 32470 - 11905: 0xC084, - 32471 - 11905: 0xE7AC, - 32472 - 11905: 0xBBE6, - 32473 - 11905: 0xB8F8, - 32474 - 11905: 0xD1A4, - 32475 - 11905: 0xE7AD, - 32476 - 11905: 0xC2E7, - 32477 - 11905: 0xBEF8, - 32478 - 11905: 0xBDCA, - 32479 - 11905: 0xCDB3, - 32480 - 11905: 0xE7AE, - 32481 - 11905: 0xE7AF, - 32482 - 11905: 0xBEEE, - 32483 - 11905: 0xD0E5, - 32484 - 11905: 0xC085, - 32485 - 11905: 0xCBE7, - 32486 - 11905: 0xCCD0, - 32487 - 11905: 0xBCCC, - 32488 - 11905: 0xE7B0, - 32489 - 11905: 0xBCA8, - 32490 - 11905: 0xD0F7, - 32491 - 11905: 0xE7B1, - 32492 - 11905: 0xC086, - 32493 - 11905: 0xD0F8, - 32494 - 11905: 0xE7B2, - 32495 - 11905: 0xE7B3, - 32496 - 11905: 0xB4C2, - 32497 - 11905: 0xE7B4, - 32498 - 11905: 0xE7B5, - 32499 - 11905: 0xC9FE, - 32500 - 11905: 0xCEAC, - 32501 - 11905: 0xC3E0, - 32502 - 11905: 0xE7B7, - 32503 - 11905: 0xB1C1, - 32504 - 11905: 0xB3F1, - 32505 - 11905: 0xC087, - 32506 - 11905: 0xE7B8, - 32507 - 11905: 0xE7B9, - 32508 - 11905: 0xD7DB, - 32509 - 11905: 0xD5C0, - 32510 - 11905: 0xE7BA, - 32511 - 11905: 0xC2CC, - 32512 - 11905: 0xD7BA, - 32513 - 11905: 0xE7BB, - 32514 - 11905: 0xE7BC, - 32515 - 11905: 0xE7BD, - 32516 - 11905: 0xBCEA, - 32517 - 11905: 0xC3E5, - 32518 - 11905: 0xC0C2, - 32519 - 11905: 0xE7BE, - 32520 - 11905: 0xE7BF, - 32521 - 11905: 0xBCA9, - 32522 - 11905: 0xC088, - 32523 - 11905: 0xE7C0, - 32524 - 11905: 0xE7C1, - 32525 - 11905: 0xE7B6, - 32526 - 11905: 0xB6D0, - 32527 - 11905: 0xE7C2, - 32528 - 11905: 0xC089, - 32529 - 11905: 0xE7C3, - 32530 - 11905: 0xE7C4, - 32531 - 11905: 0xBBBA, - 32532 - 11905: 0xB5DE, - 32533 - 11905: 0xC2C6, - 32534 - 11905: 0xB1E0, - 32535 - 11905: 0xE7C5, - 32536 - 11905: 0xD4B5, - 32537 - 11905: 0xE7C6, - 32538 - 11905: 0xB8BF, - 32539 - 11905: 0xE7C8, - 32540 - 11905: 0xE7C7, - 32541 - 11905: 0xB7EC, - 32542 - 11905: 0xC08A, - 32543 - 11905: 0xE7C9, - 32544 - 11905: 0xB2F8, - 32545 - 11905: 0xE7CA, - 32546 - 11905: 0xE7CB, - 32547 - 11905: 0xE7CC, - 32548 - 11905: 0xE7CD, - 32549 - 11905: 0xE7CE, - 32550 - 11905: 0xE7CF, - 32551 - 11905: 0xE7D0, - 32552 - 11905: 0xD3A7, - 32553 - 11905: 0xCBF5, - 32554 - 11905: 0xE7D1, - 32555 - 11905: 0xE7D2, - 32556 - 11905: 0xE7D3, - 32557 - 11905: 0xE7D4, - 32558 - 11905: 0xC9C9, - 32559 - 11905: 0xE7D5, - 32560 - 11905: 0xE7D6, - 32561 - 11905: 0xE7D7, - 32562 - 11905: 0xE7D8, - 32563 - 11905: 0xE7D9, - 32564 - 11905: 0xBDC9, - 32565 - 11905: 0xE7DA, - 32566 - 11905: 0xF3BE, - 32567 - 11905: 0xC08B, - 32568 - 11905: 0xB8D7, - 32569 - 11905: 0xC08C, - 32570 - 11905: 0xC8B1, - 32571 - 11905: 0xC08D, - 32572 - 11905: 0xC08E, - 32573 - 11905: 0xC08F, - 32574 - 11905: 0xC090, - 32575 - 11905: 0xC091, - 32576 - 11905: 0xC092, - 32577 - 11905: 0xC093, - 32578 - 11905: 0xF3BF, - 32579 - 11905: 0xC094, - 32580 - 11905: 0xF3C0, - 32581 - 11905: 0xF3C1, - 32582 - 11905: 0xC095, - 32583 - 11905: 0xC096, - 32584 - 11905: 0xC097, - 32585 - 11905: 0xC098, - 32586 - 11905: 0xC099, - 32587 - 11905: 0xC09A, - 32588 - 11905: 0xC09B, - 32589 - 11905: 0xC09C, - 32590 - 11905: 0xC09D, - 32591 - 11905: 0xC09E, - 32592 - 11905: 0xB9DE, - 32593 - 11905: 0xCDF8, - 32594 - 11905: 0xC09F, - 32595 - 11905: 0xC0A0, - 32596 - 11905: 0xD8E8, - 32597 - 11905: 0xBAB1, - 32598 - 11905: 0xC140, - 32599 - 11905: 0xC2DE, - 32600 - 11905: 0xEEB7, - 32601 - 11905: 0xC141, - 32602 - 11905: 0xB7A3, - 32603 - 11905: 0xC142, - 32604 - 11905: 0xC143, - 32605 - 11905: 0xC144, - 32606 - 11905: 0xC145, - 32607 - 11905: 0xEEB9, - 32608 - 11905: 0xC146, - 32609 - 11905: 0xEEB8, - 32610 - 11905: 0xB0D5, - 32611 - 11905: 0xC147, - 32612 - 11905: 0xC148, - 32613 - 11905: 0xC149, - 32614 - 11905: 0xC14A, - 32615 - 11905: 0xC14B, - 32616 - 11905: 0xEEBB, - 32617 - 11905: 0xD5D6, - 32618 - 11905: 0xD7EF, - 32619 - 11905: 0xC14C, - 32620 - 11905: 0xC14D, - 32621 - 11905: 0xC14E, - 32622 - 11905: 0xD6C3, - 32623 - 11905: 0xC14F, - 32624 - 11905: 0xC150, - 32625 - 11905: 0xEEBD, - 32626 - 11905: 0xCAF0, - 32627 - 11905: 0xC151, - 32628 - 11905: 0xEEBC, - 32629 - 11905: 0xC152, - 32630 - 11905: 0xC153, - 32631 - 11905: 0xC154, - 32632 - 11905: 0xC155, - 32633 - 11905: 0xEEBE, - 32634 - 11905: 0xC156, - 32635 - 11905: 0xC157, - 32636 - 11905: 0xC158, - 32637 - 11905: 0xC159, - 32638 - 11905: 0xEEC0, - 32639 - 11905: 0xC15A, - 32640 - 11905: 0xC15B, - 32641 - 11905: 0xEEBF, - 32642 - 11905: 0xC15C, - 32643 - 11905: 0xC15D, - 32644 - 11905: 0xC15E, - 32645 - 11905: 0xC15F, - 32646 - 11905: 0xC160, - 32647 - 11905: 0xC161, - 32648 - 11905: 0xC162, - 32649 - 11905: 0xC163, - 32650 - 11905: 0xD1F2, - 32651 - 11905: 0xC164, - 32652 - 11905: 0xC7BC, - 32653 - 11905: 0xC165, - 32654 - 11905: 0xC3C0, - 32655 - 11905: 0xC166, - 32656 - 11905: 0xC167, - 32657 - 11905: 0xC168, - 32658 - 11905: 0xC169, - 32659 - 11905: 0xC16A, - 32660 - 11905: 0xB8E1, - 32661 - 11905: 0xC16B, - 32662 - 11905: 0xC16C, - 32663 - 11905: 0xC16D, - 32664 - 11905: 0xC16E, - 32665 - 11905: 0xC16F, - 32666 - 11905: 0xC1E7, - 32667 - 11905: 0xC170, - 32668 - 11905: 0xC171, - 32669 - 11905: 0xF4C6, - 32670 - 11905: 0xD0DF, - 32671 - 11905: 0xF4C7, - 32672 - 11905: 0xC172, - 32673 - 11905: 0xCFDB, - 32674 - 11905: 0xC173, - 32675 - 11905: 0xC174, - 32676 - 11905: 0xC8BA, - 32677 - 11905: 0xC175, - 32678 - 11905: 0xC176, - 32679 - 11905: 0xF4C8, - 32680 - 11905: 0xC177, - 32681 - 11905: 0xC178, - 32682 - 11905: 0xC179, - 32683 - 11905: 0xC17A, - 32684 - 11905: 0xC17B, - 32685 - 11905: 0xC17C, - 32686 - 11905: 0xC17D, - 32687 - 11905: 0xF4C9, - 32688 - 11905: 0xF4CA, - 32689 - 11905: 0xC17E, - 32690 - 11905: 0xF4CB, - 32691 - 11905: 0xC180, - 32692 - 11905: 0xC181, - 32693 - 11905: 0xC182, - 32694 - 11905: 0xC183, - 32695 - 11905: 0xC184, - 32696 - 11905: 0xD9FA, - 32697 - 11905: 0xB8FE, - 32698 - 11905: 0xC185, - 32699 - 11905: 0xC186, - 32700 - 11905: 0xE5F1, - 32701 - 11905: 0xD3F0, - 32702 - 11905: 0xC187, - 32703 - 11905: 0xF4E0, - 32704 - 11905: 0xC188, - 32705 - 11905: 0xCECC, - 32706 - 11905: 0xC189, - 32707 - 11905: 0xC18A, - 32708 - 11905: 0xC18B, - 32709 - 11905: 0xB3E1, - 32710 - 11905: 0xC18C, - 32711 - 11905: 0xC18D, - 32712 - 11905: 0xC18E, - 32713 - 11905: 0xC18F, - 32714 - 11905: 0xF1B4, - 32715 - 11905: 0xC190, - 32716 - 11905: 0xD2EE, - 32717 - 11905: 0xC191, - 32718 - 11905: 0xF4E1, - 32719 - 11905: 0xC192, - 32720 - 11905: 0xC193, - 32721 - 11905: 0xC194, - 32722 - 11905: 0xC195, - 32723 - 11905: 0xC196, - 32724 - 11905: 0xCFE8, - 32725 - 11905: 0xF4E2, - 32726 - 11905: 0xC197, - 32727 - 11905: 0xC198, - 32728 - 11905: 0xC7CC, - 32729 - 11905: 0xC199, - 32730 - 11905: 0xC19A, - 32731 - 11905: 0xC19B, - 32732 - 11905: 0xC19C, - 32733 - 11905: 0xC19D, - 32734 - 11905: 0xC19E, - 32735 - 11905: 0xB5D4, - 32736 - 11905: 0xB4E4, - 32737 - 11905: 0xF4E4, - 32738 - 11905: 0xC19F, - 32739 - 11905: 0xC1A0, - 32740 - 11905: 0xC240, - 32741 - 11905: 0xF4E3, - 32742 - 11905: 0xF4E5, - 32743 - 11905: 0xC241, - 32744 - 11905: 0xC242, - 32745 - 11905: 0xF4E6, - 32746 - 11905: 0xC243, - 32747 - 11905: 0xC244, - 32748 - 11905: 0xC245, - 32749 - 11905: 0xC246, - 32750 - 11905: 0xF4E7, - 32751 - 11905: 0xC247, - 32752 - 11905: 0xBAB2, - 32753 - 11905: 0xB0BF, - 32754 - 11905: 0xC248, - 32755 - 11905: 0xF4E8, - 32756 - 11905: 0xC249, - 32757 - 11905: 0xC24A, - 32758 - 11905: 0xC24B, - 32759 - 11905: 0xC24C, - 32760 - 11905: 0xC24D, - 32761 - 11905: 0xC24E, - 32762 - 11905: 0xC24F, - 32763 - 11905: 0xB7AD, - 32764 - 11905: 0xD2ED, - 32765 - 11905: 0xC250, - 32766 - 11905: 0xC251, - 32767 - 11905: 0xC252, - 32768 - 11905: 0xD2AB, - 32769 - 11905: 0xC0CF, - 32770 - 11905: 0xC253, - 32771 - 11905: 0xBFBC, - 32772 - 11905: 0xEBA3, - 32773 - 11905: 0xD5DF, - 32774 - 11905: 0xEAC8, - 32775 - 11905: 0xC254, - 32776 - 11905: 0xC255, - 32777 - 11905: 0xC256, - 32778 - 11905: 0xC257, - 32779 - 11905: 0xF1F3, - 32780 - 11905: 0xB6F8, - 32781 - 11905: 0xCBA3, - 32782 - 11905: 0xC258, - 32783 - 11905: 0xC259, - 32784 - 11905: 0xC4CD, - 32785 - 11905: 0xC25A, - 32786 - 11905: 0xF1E7, - 32787 - 11905: 0xC25B, - 32788 - 11905: 0xF1E8, - 32789 - 11905: 0xB8FB, - 32790 - 11905: 0xF1E9, - 32791 - 11905: 0xBAC4, - 32792 - 11905: 0xD4C5, - 32793 - 11905: 0xB0D2, - 32794 - 11905: 0xC25C, - 32795 - 11905: 0xC25D, - 32796 - 11905: 0xF1EA, - 32797 - 11905: 0xC25E, - 32798 - 11905: 0xC25F, - 32799 - 11905: 0xC260, - 32800 - 11905: 0xF1EB, - 32801 - 11905: 0xC261, - 32802 - 11905: 0xF1EC, - 32803 - 11905: 0xC262, - 32804 - 11905: 0xC263, - 32805 - 11905: 0xF1ED, - 32806 - 11905: 0xF1EE, - 32807 - 11905: 0xF1EF, - 32808 - 11905: 0xF1F1, - 32809 - 11905: 0xF1F0, - 32810 - 11905: 0xC5D5, - 32811 - 11905: 0xC264, - 32812 - 11905: 0xC265, - 32813 - 11905: 0xC266, - 32814 - 11905: 0xC267, - 32815 - 11905: 0xC268, - 32816 - 11905: 0xC269, - 32817 - 11905: 0xF1F2, - 32818 - 11905: 0xC26A, - 32819 - 11905: 0xB6FA, - 32820 - 11905: 0xC26B, - 32821 - 11905: 0xF1F4, - 32822 - 11905: 0xD2AE, - 32823 - 11905: 0xDEC7, - 32824 - 11905: 0xCBCA, - 32825 - 11905: 0xC26C, - 32826 - 11905: 0xC26D, - 32827 - 11905: 0xB3DC, - 32828 - 11905: 0xC26E, - 32829 - 11905: 0xB5A2, - 32830 - 11905: 0xC26F, - 32831 - 11905: 0xB9A2, - 32832 - 11905: 0xC270, - 32833 - 11905: 0xC271, - 32834 - 11905: 0xC4F4, - 32835 - 11905: 0xF1F5, - 32836 - 11905: 0xC272, - 32837 - 11905: 0xC273, - 32838 - 11905: 0xF1F6, - 32839 - 11905: 0xC274, - 32840 - 11905: 0xC275, - 32841 - 11905: 0xC276, - 32842 - 11905: 0xC1C4, - 32843 - 11905: 0xC1FB, - 32844 - 11905: 0xD6B0, - 32845 - 11905: 0xF1F7, - 32846 - 11905: 0xC277, - 32847 - 11905: 0xC278, - 32848 - 11905: 0xC279, - 32849 - 11905: 0xC27A, - 32850 - 11905: 0xF1F8, - 32851 - 11905: 0xC27B, - 32852 - 11905: 0xC1AA, - 32853 - 11905: 0xC27C, - 32854 - 11905: 0xC27D, - 32855 - 11905: 0xC27E, - 32856 - 11905: 0xC6B8, - 32857 - 11905: 0xC280, - 32858 - 11905: 0xBEDB, - 32859 - 11905: 0xC281, - 32860 - 11905: 0xC282, - 32861 - 11905: 0xC283, - 32862 - 11905: 0xC284, - 32863 - 11905: 0xC285, - 32864 - 11905: 0xC286, - 32865 - 11905: 0xC287, - 32866 - 11905: 0xC288, - 32867 - 11905: 0xC289, - 32868 - 11905: 0xC28A, - 32869 - 11905: 0xC28B, - 32870 - 11905: 0xC28C, - 32871 - 11905: 0xC28D, - 32872 - 11905: 0xC28E, - 32873 - 11905: 0xF1F9, - 32874 - 11905: 0xB4CF, - 32875 - 11905: 0xC28F, - 32876 - 11905: 0xC290, - 32877 - 11905: 0xC291, - 32878 - 11905: 0xC292, - 32879 - 11905: 0xC293, - 32880 - 11905: 0xC294, - 32881 - 11905: 0xF1FA, - 32882 - 11905: 0xC295, - 32883 - 11905: 0xC296, - 32884 - 11905: 0xC297, - 32885 - 11905: 0xC298, - 32886 - 11905: 0xC299, - 32887 - 11905: 0xC29A, - 32888 - 11905: 0xC29B, - 32889 - 11905: 0xC29C, - 32890 - 11905: 0xC29D, - 32891 - 11905: 0xC29E, - 32892 - 11905: 0xC29F, - 32893 - 11905: 0xC2A0, - 32894 - 11905: 0xC340, - 32895 - 11905: 0xEDB2, - 32896 - 11905: 0xEDB1, - 32897 - 11905: 0xC341, - 32898 - 11905: 0xC342, - 32899 - 11905: 0xCBE0, - 32900 - 11905: 0xD2DE, - 32901 - 11905: 0xC343, - 32902 - 11905: 0xCBC1, - 32903 - 11905: 0xD5D8, - 32904 - 11905: 0xC344, - 32905 - 11905: 0xC8E2, - 32906 - 11905: 0xC345, - 32907 - 11905: 0xC0DF, - 32908 - 11905: 0xBCA1, - 32909 - 11905: 0xC346, - 32910 - 11905: 0xC347, - 32911 - 11905: 0xC348, - 32912 - 11905: 0xC349, - 32913 - 11905: 0xC34A, - 32914 - 11905: 0xC34B, - 32915 - 11905: 0xEBC1, - 32916 - 11905: 0xC34C, - 32917 - 11905: 0xC34D, - 32918 - 11905: 0xD0A4, - 32919 - 11905: 0xC34E, - 32920 - 11905: 0xD6E2, - 32921 - 11905: 0xC34F, - 32922 - 11905: 0xB6C7, - 32923 - 11905: 0xB8D8, - 32924 - 11905: 0xEBC0, - 32925 - 11905: 0xB8CE, - 32926 - 11905: 0xC350, - 32927 - 11905: 0xEBBF, - 32928 - 11905: 0xB3A6, - 32929 - 11905: 0xB9C9, - 32930 - 11905: 0xD6AB, - 32931 - 11905: 0xC351, - 32932 - 11905: 0xB7F4, - 32933 - 11905: 0xB7CA, - 32934 - 11905: 0xC352, - 32935 - 11905: 0xC353, - 32936 - 11905: 0xC354, - 32937 - 11905: 0xBCE7, - 32938 - 11905: 0xB7BE, - 32939 - 11905: 0xEBC6, - 32940 - 11905: 0xC355, - 32941 - 11905: 0xEBC7, - 32942 - 11905: 0xB0B9, - 32943 - 11905: 0xBFCF, - 32944 - 11905: 0xC356, - 32945 - 11905: 0xEBC5, - 32946 - 11905: 0xD3FD, - 32947 - 11905: 0xC357, - 32948 - 11905: 0xEBC8, - 32949 - 11905: 0xC358, - 32950 - 11905: 0xC359, - 32951 - 11905: 0xEBC9, - 32952 - 11905: 0xC35A, - 32953 - 11905: 0xC35B, - 32954 - 11905: 0xB7CE, - 32955 - 11905: 0xC35C, - 32956 - 11905: 0xEBC2, - 32957 - 11905: 0xEBC4, - 32958 - 11905: 0xC9F6, - 32959 - 11905: 0xD6D7, - 32960 - 11905: 0xD5CD, - 32961 - 11905: 0xD0B2, - 32962 - 11905: 0xEBCF, - 32963 - 11905: 0xCEB8, - 32964 - 11905: 0xEBD0, - 32965 - 11905: 0xC35D, - 32966 - 11905: 0xB5A8, - 32967 - 11905: 0xC35E, - 32968 - 11905: 0xC35F, - 32969 - 11905: 0xC360, - 32970 - 11905: 0xC361, - 32971 - 11905: 0xC362, - 32972 - 11905: 0xB1B3, - 32973 - 11905: 0xEBD2, - 32974 - 11905: 0xCCA5, - 32975 - 11905: 0xC363, - 32976 - 11905: 0xC364, - 32977 - 11905: 0xC365, - 32978 - 11905: 0xC366, - 32979 - 11905: 0xC367, - 32980 - 11905: 0xC368, - 32981 - 11905: 0xC369, - 32982 - 11905: 0xC5D6, - 32983 - 11905: 0xEBD3, - 32984 - 11905: 0xC36A, - 32985 - 11905: 0xEBD1, - 32986 - 11905: 0xC5DF, - 32987 - 11905: 0xEBCE, - 32988 - 11905: 0xCAA4, - 32989 - 11905: 0xEBD5, - 32990 - 11905: 0xB0FB, - 32991 - 11905: 0xC36B, - 32992 - 11905: 0xC36C, - 32993 - 11905: 0xBAFA, - 32994 - 11905: 0xC36D, - 32995 - 11905: 0xC36E, - 32996 - 11905: 0xD8B7, - 32997 - 11905: 0xF1E3, - 32998 - 11905: 0xC36F, - 32999 - 11905: 0xEBCA, - 33000 - 11905: 0xEBCB, - 33001 - 11905: 0xEBCC, - 33002 - 11905: 0xEBCD, - 33003 - 11905: 0xEBD6, - 33004 - 11905: 0xE6C0, - 33005 - 11905: 0xEBD9, - 33006 - 11905: 0xC370, - 33007 - 11905: 0xBFE8, - 33008 - 11905: 0xD2C8, - 33009 - 11905: 0xEBD7, - 33010 - 11905: 0xEBDC, - 33011 - 11905: 0xB8EC, - 33012 - 11905: 0xEBD8, - 33013 - 11905: 0xC371, - 33014 - 11905: 0xBDBA, - 33015 - 11905: 0xC372, - 33016 - 11905: 0xD0D8, - 33017 - 11905: 0xC373, - 33018 - 11905: 0xB0B7, - 33019 - 11905: 0xC374, - 33020 - 11905: 0xEBDD, - 33021 - 11905: 0xC4DC, - 33022 - 11905: 0xC375, - 33023 - 11905: 0xC376, - 33024 - 11905: 0xC377, - 33025 - 11905: 0xC378, - 33026 - 11905: 0xD6AC, - 33027 - 11905: 0xC379, - 33028 - 11905: 0xC37A, - 33029 - 11905: 0xC37B, - 33030 - 11905: 0xB4E0, - 33031 - 11905: 0xC37C, - 33032 - 11905: 0xC37D, - 33033 - 11905: 0xC2F6, - 33034 - 11905: 0xBCB9, - 33035 - 11905: 0xC37E, - 33036 - 11905: 0xC380, - 33037 - 11905: 0xEBDA, - 33038 - 11905: 0xEBDB, - 33039 - 11905: 0xD4E0, - 33040 - 11905: 0xC6EA, - 33041 - 11905: 0xC4D4, - 33042 - 11905: 0xEBDF, - 33043 - 11905: 0xC5A7, - 33044 - 11905: 0xD9F5, - 33045 - 11905: 0xC381, - 33046 - 11905: 0xB2B1, - 33047 - 11905: 0xC382, - 33048 - 11905: 0xEBE4, - 33049 - 11905: 0xC383, - 33050 - 11905: 0xBDC5, - 33051 - 11905: 0xC384, - 33052 - 11905: 0xC385, - 33053 - 11905: 0xC386, - 33054 - 11905: 0xEBE2, - 33055 - 11905: 0xC387, - 33056 - 11905: 0xC388, - 33057 - 11905: 0xC389, - 33058 - 11905: 0xC38A, - 33059 - 11905: 0xC38B, - 33060 - 11905: 0xC38C, - 33061 - 11905: 0xC38D, - 33062 - 11905: 0xC38E, - 33063 - 11905: 0xC38F, - 33064 - 11905: 0xC390, - 33065 - 11905: 0xC391, - 33066 - 11905: 0xC392, - 33067 - 11905: 0xC393, - 33068 - 11905: 0xEBE3, - 33069 - 11905: 0xC394, - 33070 - 11905: 0xC395, - 33071 - 11905: 0xB8AC, - 33072 - 11905: 0xC396, - 33073 - 11905: 0xCDD1, - 33074 - 11905: 0xEBE5, - 33075 - 11905: 0xC397, - 33076 - 11905: 0xC398, - 33077 - 11905: 0xC399, - 33078 - 11905: 0xEBE1, - 33079 - 11905: 0xC39A, - 33080 - 11905: 0xC1B3, - 33081 - 11905: 0xC39B, - 33082 - 11905: 0xC39C, - 33083 - 11905: 0xC39D, - 33084 - 11905: 0xC39E, - 33085 - 11905: 0xC39F, - 33086 - 11905: 0xC6A2, - 33087 - 11905: 0xC3A0, - 33088 - 11905: 0xC440, - 33089 - 11905: 0xC441, - 33090 - 11905: 0xC442, - 33091 - 11905: 0xC443, - 33092 - 11905: 0xC444, - 33093 - 11905: 0xC445, - 33094 - 11905: 0xCCF3, - 33095 - 11905: 0xC446, - 33096 - 11905: 0xEBE6, - 33097 - 11905: 0xC447, - 33098 - 11905: 0xC0B0, - 33099 - 11905: 0xD2B8, - 33100 - 11905: 0xEBE7, - 33101 - 11905: 0xC448, - 33102 - 11905: 0xC449, - 33103 - 11905: 0xC44A, - 33104 - 11905: 0xB8AF, - 33105 - 11905: 0xB8AD, - 33106 - 11905: 0xC44B, - 33107 - 11905: 0xEBE8, - 33108 - 11905: 0xC7BB, - 33109 - 11905: 0xCDF3, - 33110 - 11905: 0xC44C, - 33111 - 11905: 0xC44D, - 33112 - 11905: 0xC44E, - 33113 - 11905: 0xEBEA, - 33114 - 11905: 0xEBEB, - 33115 - 11905: 0xC44F, - 33116 - 11905: 0xC450, - 33117 - 11905: 0xC451, - 33118 - 11905: 0xC452, - 33119 - 11905: 0xC453, - 33120 - 11905: 0xEBED, - 33121 - 11905: 0xC454, - 33122 - 11905: 0xC455, - 33123 - 11905: 0xC456, - 33124 - 11905: 0xC457, - 33125 - 11905: 0xD0C8, - 33126 - 11905: 0xC458, - 33127 - 11905: 0xEBF2, - 33128 - 11905: 0xC459, - 33129 - 11905: 0xEBEE, - 33130 - 11905: 0xC45A, - 33131 - 11905: 0xC45B, - 33132 - 11905: 0xC45C, - 33133 - 11905: 0xEBF1, - 33134 - 11905: 0xC8F9, - 33135 - 11905: 0xC45D, - 33136 - 11905: 0xD1FC, - 33137 - 11905: 0xEBEC, - 33138 - 11905: 0xC45E, - 33139 - 11905: 0xC45F, - 33140 - 11905: 0xEBE9, - 33141 - 11905: 0xC460, - 33142 - 11905: 0xC461, - 33143 - 11905: 0xC462, - 33144 - 11905: 0xC463, - 33145 - 11905: 0xB8B9, - 33146 - 11905: 0xCFD9, - 33147 - 11905: 0xC4E5, - 33148 - 11905: 0xEBEF, - 33149 - 11905: 0xEBF0, - 33150 - 11905: 0xCCDA, - 33151 - 11905: 0xCDC8, - 33152 - 11905: 0xB0F2, - 33153 - 11905: 0xC464, - 33154 - 11905: 0xEBF6, - 33155 - 11905: 0xC465, - 33156 - 11905: 0xC466, - 33157 - 11905: 0xC467, - 33158 - 11905: 0xC468, - 33159 - 11905: 0xC469, - 33160 - 11905: 0xEBF5, - 33161 - 11905: 0xC46A, - 33162 - 11905: 0xB2B2, - 33163 - 11905: 0xC46B, - 33164 - 11905: 0xC46C, - 33165 - 11905: 0xC46D, - 33166 - 11905: 0xC46E, - 33167 - 11905: 0xB8E0, - 33168 - 11905: 0xC46F, - 33169 - 11905: 0xEBF7, - 33170 - 11905: 0xC470, - 33171 - 11905: 0xC471, - 33172 - 11905: 0xC472, - 33173 - 11905: 0xC473, - 33174 - 11905: 0xC474, - 33175 - 11905: 0xC475, - 33176 - 11905: 0xB1EC, - 33177 - 11905: 0xC476, - 33178 - 11905: 0xC477, - 33179 - 11905: 0xCCC5, - 33180 - 11905: 0xC4A4, - 33181 - 11905: 0xCFA5, - 33182 - 11905: 0xC478, - 33183 - 11905: 0xC479, - 33184 - 11905: 0xC47A, - 33185 - 11905: 0xC47B, - 33186 - 11905: 0xC47C, - 33187 - 11905: 0xEBF9, - 33188 - 11905: 0xC47D, - 33189 - 11905: 0xC47E, - 33190 - 11905: 0xECA2, - 33191 - 11905: 0xC480, - 33192 - 11905: 0xC5F2, - 33193 - 11905: 0xC481, - 33194 - 11905: 0xEBFA, - 33195 - 11905: 0xC482, - 33196 - 11905: 0xC483, - 33197 - 11905: 0xC484, - 33198 - 11905: 0xC485, - 33199 - 11905: 0xC486, - 33200 - 11905: 0xC487, - 33201 - 11905: 0xC488, - 33202 - 11905: 0xC489, - 33203 - 11905: 0xC9C5, - 33204 - 11905: 0xC48A, - 33205 - 11905: 0xC48B, - 33206 - 11905: 0xC48C, - 33207 - 11905: 0xC48D, - 33208 - 11905: 0xC48E, - 33209 - 11905: 0xC48F, - 33210 - 11905: 0xE2DF, - 33211 - 11905: 0xEBFE, - 33212 - 11905: 0xC490, - 33213 - 11905: 0xC491, - 33214 - 11905: 0xC492, - 33215 - 11905: 0xC493, - 33216 - 11905: 0xCDCE, - 33217 - 11905: 0xECA1, - 33218 - 11905: 0xB1DB, - 33219 - 11905: 0xD3B7, - 33220 - 11905: 0xC494, - 33221 - 11905: 0xC495, - 33222 - 11905: 0xD2DC, - 33223 - 11905: 0xC496, - 33224 - 11905: 0xC497, - 33225 - 11905: 0xC498, - 33226 - 11905: 0xEBFD, - 33227 - 11905: 0xC499, - 33228 - 11905: 0xEBFB, - 33229 - 11905: 0xC49A, - 33230 - 11905: 0xC49B, - 33231 - 11905: 0xC49C, - 33232 - 11905: 0xC49D, - 33233 - 11905: 0xC49E, - 33234 - 11905: 0xC49F, - 33235 - 11905: 0xC4A0, - 33236 - 11905: 0xC540, - 33237 - 11905: 0xC541, - 33238 - 11905: 0xC542, - 33239 - 11905: 0xC543, - 33240 - 11905: 0xC544, - 33241 - 11905: 0xC545, - 33242 - 11905: 0xC546, - 33243 - 11905: 0xC547, - 33244 - 11905: 0xC548, - 33245 - 11905: 0xC549, - 33246 - 11905: 0xC54A, - 33247 - 11905: 0xC54B, - 33248 - 11905: 0xC54C, - 33249 - 11905: 0xC54D, - 33250 - 11905: 0xC54E, - 33251 - 11905: 0xB3BC, - 33252 - 11905: 0xC54F, - 33253 - 11905: 0xC550, - 33254 - 11905: 0xC551, - 33255 - 11905: 0xEAB0, - 33256 - 11905: 0xC552, - 33257 - 11905: 0xC553, - 33258 - 11905: 0xD7D4, - 33259 - 11905: 0xC554, - 33260 - 11905: 0xF4AB, - 33261 - 11905: 0xB3F4, - 33262 - 11905: 0xC555, - 33263 - 11905: 0xC556, - 33264 - 11905: 0xC557, - 33265 - 11905: 0xC558, - 33266 - 11905: 0xC559, - 33267 - 11905: 0xD6C1, - 33268 - 11905: 0xD6C2, - 33269 - 11905: 0xC55A, - 33270 - 11905: 0xC55B, - 33271 - 11905: 0xC55C, - 33272 - 11905: 0xC55D, - 33273 - 11905: 0xC55E, - 33274 - 11905: 0xC55F, - 33275 - 11905: 0xD5E9, - 33276 - 11905: 0xBECA, - 33277 - 11905: 0xC560, - 33278 - 11905: 0xF4A7, - 33279 - 11905: 0xC561, - 33280 - 11905: 0xD2A8, - 33281 - 11905: 0xF4A8, - 33282 - 11905: 0xF4A9, - 33283 - 11905: 0xC562, - 33284 - 11905: 0xF4AA, - 33285 - 11905: 0xBECB, - 33286 - 11905: 0xD3DF, - 33287 - 11905: 0xC563, - 33288 - 11905: 0xC564, - 33289 - 11905: 0xC565, - 33290 - 11905: 0xC566, - 33291 - 11905: 0xC567, - 33292 - 11905: 0xC9E0, - 33293 - 11905: 0xC9E1, - 33294 - 11905: 0xC568, - 33295 - 11905: 0xC569, - 33296 - 11905: 0xF3C2, - 33297 - 11905: 0xC56A, - 33298 - 11905: 0xCAE6, - 33299 - 11905: 0xC56B, - 33300 - 11905: 0xCCF2, - 33301 - 11905: 0xC56C, - 33302 - 11905: 0xC56D, - 33303 - 11905: 0xC56E, - 33304 - 11905: 0xC56F, - 33305 - 11905: 0xC570, - 33306 - 11905: 0xC571, - 33307 - 11905: 0xE2B6, - 33308 - 11905: 0xCBB4, - 33309 - 11905: 0xC572, - 33310 - 11905: 0xCEE8, - 33311 - 11905: 0xD6DB, - 33312 - 11905: 0xC573, - 33313 - 11905: 0xF4AD, - 33314 - 11905: 0xF4AE, - 33315 - 11905: 0xF4AF, - 33316 - 11905: 0xC574, - 33317 - 11905: 0xC575, - 33318 - 11905: 0xC576, - 33319 - 11905: 0xC577, - 33320 - 11905: 0xF4B2, - 33321 - 11905: 0xC578, - 33322 - 11905: 0xBABD, - 33323 - 11905: 0xF4B3, - 33324 - 11905: 0xB0E3, - 33325 - 11905: 0xF4B0, - 33326 - 11905: 0xC579, - 33327 - 11905: 0xF4B1, - 33328 - 11905: 0xBDA2, - 33329 - 11905: 0xB2D5, - 33330 - 11905: 0xC57A, - 33331 - 11905: 0xF4B6, - 33332 - 11905: 0xF4B7, - 33333 - 11905: 0xB6E6, - 33334 - 11905: 0xB2B0, - 33335 - 11905: 0xCFCF, - 33336 - 11905: 0xF4B4, - 33337 - 11905: 0xB4AC, - 33338 - 11905: 0xC57B, - 33339 - 11905: 0xF4B5, - 33340 - 11905: 0xC57C, - 33341 - 11905: 0xC57D, - 33342 - 11905: 0xF4B8, - 33343 - 11905: 0xC57E, - 33344 - 11905: 0xC580, - 33345 - 11905: 0xC581, - 33346 - 11905: 0xC582, - 33347 - 11905: 0xC583, - 33348 - 11905: 0xF4B9, - 33349 - 11905: 0xC584, - 33350 - 11905: 0xC585, - 33351 - 11905: 0xCDA7, - 33352 - 11905: 0xC586, - 33353 - 11905: 0xF4BA, - 33354 - 11905: 0xC587, - 33355 - 11905: 0xF4BB, - 33356 - 11905: 0xC588, - 33357 - 11905: 0xC589, - 33358 - 11905: 0xC58A, - 33359 - 11905: 0xF4BC, - 33360 - 11905: 0xC58B, - 33361 - 11905: 0xC58C, - 33362 - 11905: 0xC58D, - 33363 - 11905: 0xC58E, - 33364 - 11905: 0xC58F, - 33365 - 11905: 0xC590, - 33366 - 11905: 0xC591, - 33367 - 11905: 0xC592, - 33368 - 11905: 0xCBD2, - 33369 - 11905: 0xC593, - 33370 - 11905: 0xF4BD, - 33371 - 11905: 0xC594, - 33372 - 11905: 0xC595, - 33373 - 11905: 0xC596, - 33374 - 11905: 0xC597, - 33375 - 11905: 0xF4BE, - 33376 - 11905: 0xC598, - 33377 - 11905: 0xC599, - 33378 - 11905: 0xC59A, - 33379 - 11905: 0xC59B, - 33380 - 11905: 0xC59C, - 33381 - 11905: 0xC59D, - 33382 - 11905: 0xC59E, - 33383 - 11905: 0xC59F, - 33384 - 11905: 0xF4BF, - 33385 - 11905: 0xC5A0, - 33386 - 11905: 0xC640, - 33387 - 11905: 0xC641, - 33388 - 11905: 0xC642, - 33389 - 11905: 0xC643, - 33390 - 11905: 0xF4DE, - 33391 - 11905: 0xC1BC, - 33392 - 11905: 0xBCE8, - 33393 - 11905: 0xC644, - 33394 - 11905: 0xC9AB, - 33395 - 11905: 0xD1DE, - 33396 - 11905: 0xE5F5, - 33397 - 11905: 0xC645, - 33398 - 11905: 0xC646, - 33399 - 11905: 0xC647, - 33400 - 11905: 0xC648, - 33401 - 11905: 0xDCB3, - 33402 - 11905: 0xD2D5, - 33403 - 11905: 0xC649, - 33404 - 11905: 0xC64A, - 33405 - 11905: 0xDCB4, - 33406 - 11905: 0xB0AC, - 33407 - 11905: 0xDCB5, - 33408 - 11905: 0xC64B, - 33409 - 11905: 0xC64C, - 33410 - 11905: 0xBDDA, - 33411 - 11905: 0xC64D, - 33412 - 11905: 0xDCB9, - 33413 - 11905: 0xC64E, - 33414 - 11905: 0xC64F, - 33415 - 11905: 0xC650, - 33416 - 11905: 0xD8C2, - 33417 - 11905: 0xC651, - 33418 - 11905: 0xDCB7, - 33419 - 11905: 0xD3F3, - 33420 - 11905: 0xC652, - 33421 - 11905: 0xC9D6, - 33422 - 11905: 0xDCBA, - 33423 - 11905: 0xDCB6, - 33424 - 11905: 0xC653, - 33425 - 11905: 0xDCBB, - 33426 - 11905: 0xC3A2, - 33427 - 11905: 0xC654, - 33428 - 11905: 0xC655, - 33429 - 11905: 0xC656, - 33430 - 11905: 0xC657, - 33431 - 11905: 0xDCBC, - 33432 - 11905: 0xDCC5, - 33433 - 11905: 0xDCBD, - 33434 - 11905: 0xC658, - 33435 - 11905: 0xC659, - 33436 - 11905: 0xCEDF, - 33437 - 11905: 0xD6A5, - 33438 - 11905: 0xC65A, - 33439 - 11905: 0xDCCF, - 33440 - 11905: 0xC65B, - 33441 - 11905: 0xDCCD, - 33442 - 11905: 0xC65C, - 33443 - 11905: 0xC65D, - 33444 - 11905: 0xDCD2, - 33445 - 11905: 0xBDE6, - 33446 - 11905: 0xC2AB, - 33447 - 11905: 0xC65E, - 33448 - 11905: 0xDCB8, - 33449 - 11905: 0xDCCB, - 33450 - 11905: 0xDCCE, - 33451 - 11905: 0xDCBE, - 33452 - 11905: 0xB7D2, - 33453 - 11905: 0xB0C5, - 33454 - 11905: 0xDCC7, - 33455 - 11905: 0xD0BE, - 33456 - 11905: 0xDCC1, - 33457 - 11905: 0xBBA8, - 33458 - 11905: 0xC65F, - 33459 - 11905: 0xB7BC, - 33460 - 11905: 0xDCCC, - 33461 - 11905: 0xC660, - 33462 - 11905: 0xC661, - 33463 - 11905: 0xDCC6, - 33464 - 11905: 0xDCBF, - 33465 - 11905: 0xC7DB, - 33466 - 11905: 0xC662, - 33467 - 11905: 0xC663, - 33468 - 11905: 0xC664, - 33469 - 11905: 0xD1BF, - 33470 - 11905: 0xDCC0, - 33471 - 11905: 0xC665, - 33472 - 11905: 0xC666, - 33473 - 11905: 0xDCCA, - 33474 - 11905: 0xC667, - 33475 - 11905: 0xC668, - 33476 - 11905: 0xDCD0, - 33477 - 11905: 0xC669, - 33478 - 11905: 0xC66A, - 33479 - 11905: 0xCEAD, - 33480 - 11905: 0xDCC2, - 33481 - 11905: 0xC66B, - 33482 - 11905: 0xDCC3, - 33483 - 11905: 0xDCC8, - 33484 - 11905: 0xDCC9, - 33485 - 11905: 0xB2D4, - 33486 - 11905: 0xDCD1, - 33487 - 11905: 0xCBD5, - 33488 - 11905: 0xC66C, - 33489 - 11905: 0xD4B7, - 33490 - 11905: 0xDCDB, - 33491 - 11905: 0xDCDF, - 33492 - 11905: 0xCCA6, - 33493 - 11905: 0xDCE6, - 33494 - 11905: 0xC66D, - 33495 - 11905: 0xC3E7, - 33496 - 11905: 0xDCDC, - 33497 - 11905: 0xC66E, - 33498 - 11905: 0xC66F, - 33499 - 11905: 0xBFC1, - 33500 - 11905: 0xDCD9, - 33501 - 11905: 0xC670, - 33502 - 11905: 0xB0FA, - 33503 - 11905: 0xB9B6, - 33504 - 11905: 0xDCE5, - 33505 - 11905: 0xDCD3, - 33506 - 11905: 0xC671, - 33507 - 11905: 0xDCC4, - 33508 - 11905: 0xDCD6, - 33509 - 11905: 0xC8F4, - 33510 - 11905: 0xBFE0, - 33511 - 11905: 0xC672, - 33512 - 11905: 0xC673, - 33513 - 11905: 0xC674, - 33514 - 11905: 0xC675, - 33515 - 11905: 0xC9BB, - 33516 - 11905: 0xC676, - 33517 - 11905: 0xC677, - 33518 - 11905: 0xC678, - 33519 - 11905: 0xB1BD, - 33520 - 11905: 0xC679, - 33521 - 11905: 0xD3A2, - 33522 - 11905: 0xC67A, - 33523 - 11905: 0xC67B, - 33524 - 11905: 0xDCDA, - 33525 - 11905: 0xC67C, - 33526 - 11905: 0xC67D, - 33527 - 11905: 0xDCD5, - 33528 - 11905: 0xC67E, - 33529 - 11905: 0xC6BB, - 33530 - 11905: 0xC680, - 33531 - 11905: 0xDCDE, - 33532 - 11905: 0xC681, - 33533 - 11905: 0xC682, - 33534 - 11905: 0xC683, - 33535 - 11905: 0xC684, - 33536 - 11905: 0xC685, - 33537 - 11905: 0xD7C2, - 33538 - 11905: 0xC3AF, - 33539 - 11905: 0xB7B6, - 33540 - 11905: 0xC7D1, - 33541 - 11905: 0xC3A9, - 33542 - 11905: 0xDCE2, - 33543 - 11905: 0xDCD8, - 33544 - 11905: 0xDCEB, - 33545 - 11905: 0xDCD4, - 33546 - 11905: 0xC686, - 33547 - 11905: 0xC687, - 33548 - 11905: 0xDCDD, - 33549 - 11905: 0xC688, - 33550 - 11905: 0xBEA5, - 33551 - 11905: 0xDCD7, - 33552 - 11905: 0xC689, - 33553 - 11905: 0xDCE0, - 33554 - 11905: 0xC68A, - 33555 - 11905: 0xC68B, - 33556 - 11905: 0xDCE3, - 33557 - 11905: 0xDCE4, - 33558 - 11905: 0xC68C, - 33559 - 11905: 0xDCF8, - 33560 - 11905: 0xC68D, - 33561 - 11905: 0xC68E, - 33562 - 11905: 0xDCE1, - 33563 - 11905: 0xDDA2, - 33564 - 11905: 0xDCE7, - 33565 - 11905: 0xC68F, - 33566 - 11905: 0xC690, - 33567 - 11905: 0xC691, - 33568 - 11905: 0xC692, - 33569 - 11905: 0xC693, - 33570 - 11905: 0xC694, - 33571 - 11905: 0xC695, - 33572 - 11905: 0xC696, - 33573 - 11905: 0xC697, - 33574 - 11905: 0xC698, - 33575 - 11905: 0xBCEB, - 33576 - 11905: 0xB4C4, - 33577 - 11905: 0xC699, - 33578 - 11905: 0xC69A, - 33579 - 11905: 0xC3A3, - 33580 - 11905: 0xB2E7, - 33581 - 11905: 0xDCFA, - 33582 - 11905: 0xC69B, - 33583 - 11905: 0xDCF2, - 33584 - 11905: 0xC69C, - 33585 - 11905: 0xDCEF, - 33586 - 11905: 0xC69D, - 33587 - 11905: 0xDCFC, - 33588 - 11905: 0xDCEE, - 33589 - 11905: 0xD2F0, - 33590 - 11905: 0xB2E8, - 33591 - 11905: 0xC69E, - 33592 - 11905: 0xC8D7, - 33593 - 11905: 0xC8E3, - 33594 - 11905: 0xDCFB, - 33595 - 11905: 0xC69F, - 33596 - 11905: 0xDCED, - 33597 - 11905: 0xC6A0, - 33598 - 11905: 0xC740, - 33599 - 11905: 0xC741, - 33600 - 11905: 0xDCF7, - 33601 - 11905: 0xC742, - 33602 - 11905: 0xC743, - 33603 - 11905: 0xDCF5, - 33604 - 11905: 0xC744, - 33605 - 11905: 0xC745, - 33606 - 11905: 0xBEA3, - 33607 - 11905: 0xDCF4, - 33608 - 11905: 0xC746, - 33609 - 11905: 0xB2DD, - 33610 - 11905: 0xC747, - 33611 - 11905: 0xC748, - 33612 - 11905: 0xC749, - 33613 - 11905: 0xC74A, - 33614 - 11905: 0xC74B, - 33615 - 11905: 0xDCF3, - 33616 - 11905: 0xBCF6, - 33617 - 11905: 0xDCE8, - 33618 - 11905: 0xBBC4, - 33619 - 11905: 0xC74C, - 33620 - 11905: 0xC0F3, - 33621 - 11905: 0xC74D, - 33622 - 11905: 0xC74E, - 33623 - 11905: 0xC74F, - 33624 - 11905: 0xC750, - 33625 - 11905: 0xC751, - 33626 - 11905: 0xBCD4, - 33627 - 11905: 0xDCE9, - 33628 - 11905: 0xDCEA, - 33629 - 11905: 0xC752, - 33630 - 11905: 0xDCF1, - 33631 - 11905: 0xDCF6, - 33632 - 11905: 0xDCF9, - 33633 - 11905: 0xB5B4, - 33634 - 11905: 0xC753, - 33635 - 11905: 0xC8D9, - 33636 - 11905: 0xBBE7, - 33637 - 11905: 0xDCFE, - 33638 - 11905: 0xDCFD, - 33639 - 11905: 0xD3AB, - 33640 - 11905: 0xDDA1, - 33641 - 11905: 0xDDA3, - 33642 - 11905: 0xDDA5, - 33643 - 11905: 0xD2F1, - 33644 - 11905: 0xDDA4, - 33645 - 11905: 0xDDA6, - 33646 - 11905: 0xDDA7, - 33647 - 11905: 0xD2A9, - 33648 - 11905: 0xC754, - 33649 - 11905: 0xC755, - 33650 - 11905: 0xC756, - 33651 - 11905: 0xC757, - 33652 - 11905: 0xC758, - 33653 - 11905: 0xC759, - 33654 - 11905: 0xC75A, - 33655 - 11905: 0xBAC9, - 33656 - 11905: 0xDDA9, - 33657 - 11905: 0xC75B, - 33658 - 11905: 0xC75C, - 33659 - 11905: 0xDDB6, - 33660 - 11905: 0xDDB1, - 33661 - 11905: 0xDDB4, - 33662 - 11905: 0xC75D, - 33663 - 11905: 0xC75E, - 33664 - 11905: 0xC75F, - 33665 - 11905: 0xC760, - 33666 - 11905: 0xC761, - 33667 - 11905: 0xC762, - 33668 - 11905: 0xC763, - 33669 - 11905: 0xDDB0, - 33670 - 11905: 0xC6CE, - 33671 - 11905: 0xC764, - 33672 - 11905: 0xC765, - 33673 - 11905: 0xC0F2, - 33674 - 11905: 0xC766, - 33675 - 11905: 0xC767, - 33676 - 11905: 0xC768, - 33677 - 11905: 0xC769, - 33678 - 11905: 0xC9AF, - 33679 - 11905: 0xC76A, - 33680 - 11905: 0xC76B, - 33681 - 11905: 0xC76C, - 33682 - 11905: 0xDCEC, - 33683 - 11905: 0xDDAE, - 33684 - 11905: 0xC76D, - 33685 - 11905: 0xC76E, - 33686 - 11905: 0xC76F, - 33687 - 11905: 0xC770, - 33688 - 11905: 0xDDB7, - 33689 - 11905: 0xC771, - 33690 - 11905: 0xC772, - 33691 - 11905: 0xDCF0, - 33692 - 11905: 0xDDAF, - 33693 - 11905: 0xC773, - 33694 - 11905: 0xDDB8, - 33695 - 11905: 0xC774, - 33696 - 11905: 0xDDAC, - 33697 - 11905: 0xC775, - 33698 - 11905: 0xC776, - 33699 - 11905: 0xC777, - 33700 - 11905: 0xC778, - 33701 - 11905: 0xC779, - 33702 - 11905: 0xC77A, - 33703 - 11905: 0xC77B, - 33704 - 11905: 0xDDB9, - 33705 - 11905: 0xDDB3, - 33706 - 11905: 0xDDAD, - 33707 - 11905: 0xC4AA, - 33708 - 11905: 0xC77C, - 33709 - 11905: 0xC77D, - 33710 - 11905: 0xC77E, - 33711 - 11905: 0xC780, - 33712 - 11905: 0xDDA8, - 33713 - 11905: 0xC0B3, - 33714 - 11905: 0xC1AB, - 33715 - 11905: 0xDDAA, - 33716 - 11905: 0xDDAB, - 33717 - 11905: 0xC781, - 33718 - 11905: 0xDDB2, - 33719 - 11905: 0xBBF1, - 33720 - 11905: 0xDDB5, - 33721 - 11905: 0xD3A8, - 33722 - 11905: 0xDDBA, - 33723 - 11905: 0xC782, - 33724 - 11905: 0xDDBB, - 33725 - 11905: 0xC3A7, - 33726 - 11905: 0xC783, - 33727 - 11905: 0xC784, - 33728 - 11905: 0xDDD2, - 33729 - 11905: 0xDDBC, - 33730 - 11905: 0xC785, - 33731 - 11905: 0xC786, - 33732 - 11905: 0xC787, - 33733 - 11905: 0xDDD1, - 33734 - 11905: 0xC788, - 33735 - 11905: 0xB9BD, - 33736 - 11905: 0xC789, - 33737 - 11905: 0xC78A, - 33738 - 11905: 0xBED5, - 33739 - 11905: 0xC78B, - 33740 - 11905: 0xBEFA, - 33741 - 11905: 0xC78C, - 33742 - 11905: 0xC78D, - 33743 - 11905: 0xBACA, - 33744 - 11905: 0xC78E, - 33745 - 11905: 0xC78F, - 33746 - 11905: 0xC790, - 33747 - 11905: 0xC791, - 33748 - 11905: 0xDDCA, - 33749 - 11905: 0xC792, - 33750 - 11905: 0xDDC5, - 33751 - 11905: 0xC793, - 33752 - 11905: 0xDDBF, - 33753 - 11905: 0xC794, - 33754 - 11905: 0xC795, - 33755 - 11905: 0xC796, - 33756 - 11905: 0xB2CB, - 33757 - 11905: 0xDDC3, - 33758 - 11905: 0xC797, - 33759 - 11905: 0xDDCB, - 33760 - 11905: 0xB2A4, - 33761 - 11905: 0xDDD5, - 33762 - 11905: 0xC798, - 33763 - 11905: 0xC799, - 33764 - 11905: 0xC79A, - 33765 - 11905: 0xDDBE, - 33766 - 11905: 0xC79B, - 33767 - 11905: 0xC79C, - 33768 - 11905: 0xC79D, - 33769 - 11905: 0xC6D0, - 33770 - 11905: 0xDDD0, - 33771 - 11905: 0xC79E, - 33772 - 11905: 0xC79F, - 33773 - 11905: 0xC7A0, - 33774 - 11905: 0xC840, - 33775 - 11905: 0xC841, - 33776 - 11905: 0xDDD4, - 33777 - 11905: 0xC1E2, - 33778 - 11905: 0xB7C6, - 33779 - 11905: 0xC842, - 33780 - 11905: 0xC843, - 33781 - 11905: 0xC844, - 33782 - 11905: 0xC845, - 33783 - 11905: 0xC846, - 33784 - 11905: 0xDDCE, - 33785 - 11905: 0xDDCF, - 33786 - 11905: 0xC847, - 33787 - 11905: 0xC848, - 33788 - 11905: 0xC849, - 33789 - 11905: 0xDDC4, - 33790 - 11905: 0xC84A, - 33791 - 11905: 0xC84B, - 33792 - 11905: 0xC84C, - 33793 - 11905: 0xDDBD, - 33794 - 11905: 0xC84D, - 33795 - 11905: 0xDDCD, - 33796 - 11905: 0xCCD1, - 33797 - 11905: 0xC84E, - 33798 - 11905: 0xDDC9, - 33799 - 11905: 0xC84F, - 33800 - 11905: 0xC850, - 33801 - 11905: 0xC851, - 33802 - 11905: 0xC852, - 33803 - 11905: 0xDDC2, - 33804 - 11905: 0xC3C8, - 33805 - 11905: 0xC6BC, - 33806 - 11905: 0xCEAE, - 33807 - 11905: 0xDDCC, - 33808 - 11905: 0xC853, - 33809 - 11905: 0xDDC8, - 33810 - 11905: 0xC854, - 33811 - 11905: 0xC855, - 33812 - 11905: 0xC856, - 33813 - 11905: 0xC857, - 33814 - 11905: 0xC858, - 33815 - 11905: 0xC859, - 33816 - 11905: 0xDDC1, - 33817 - 11905: 0xC85A, - 33818 - 11905: 0xC85B, - 33819 - 11905: 0xC85C, - 33820 - 11905: 0xDDC6, - 33821 - 11905: 0xC2DC, - 33822 - 11905: 0xC85D, - 33823 - 11905: 0xC85E, - 33824 - 11905: 0xC85F, - 33825 - 11905: 0xC860, - 33826 - 11905: 0xC861, - 33827 - 11905: 0xC862, - 33828 - 11905: 0xD3A9, - 33829 - 11905: 0xD3AA, - 33830 - 11905: 0xDDD3, - 33831 - 11905: 0xCFF4, - 33832 - 11905: 0xC8F8, - 33833 - 11905: 0xC863, - 33834 - 11905: 0xC864, - 33835 - 11905: 0xC865, - 33836 - 11905: 0xC866, - 33837 - 11905: 0xC867, - 33838 - 11905: 0xC868, - 33839 - 11905: 0xC869, - 33840 - 11905: 0xC86A, - 33841 - 11905: 0xDDE6, - 33842 - 11905: 0xC86B, - 33843 - 11905: 0xC86C, - 33844 - 11905: 0xC86D, - 33845 - 11905: 0xC86E, - 33846 - 11905: 0xC86F, - 33847 - 11905: 0xC870, - 33848 - 11905: 0xDDC7, - 33849 - 11905: 0xC871, - 33850 - 11905: 0xC872, - 33851 - 11905: 0xC873, - 33852 - 11905: 0xDDE0, - 33853 - 11905: 0xC2E4, - 33854 - 11905: 0xC874, - 33855 - 11905: 0xC875, - 33856 - 11905: 0xC876, - 33857 - 11905: 0xC877, - 33858 - 11905: 0xC878, - 33859 - 11905: 0xC879, - 33860 - 11905: 0xC87A, - 33861 - 11905: 0xC87B, - 33862 - 11905: 0xDDE1, - 33863 - 11905: 0xC87C, - 33864 - 11905: 0xC87D, - 33865 - 11905: 0xC87E, - 33866 - 11905: 0xC880, - 33867 - 11905: 0xC881, - 33868 - 11905: 0xC882, - 33869 - 11905: 0xC883, - 33870 - 11905: 0xC884, - 33871 - 11905: 0xC885, - 33872 - 11905: 0xC886, - 33873 - 11905: 0xDDD7, - 33874 - 11905: 0xC887, - 33875 - 11905: 0xC888, - 33876 - 11905: 0xC889, - 33877 - 11905: 0xC88A, - 33878 - 11905: 0xC88B, - 33879 - 11905: 0xD6F8, - 33880 - 11905: 0xC88C, - 33881 - 11905: 0xDDD9, - 33882 - 11905: 0xDDD8, - 33883 - 11905: 0xB8F0, - 33884 - 11905: 0xDDD6, - 33885 - 11905: 0xC88D, - 33886 - 11905: 0xC88E, - 33887 - 11905: 0xC88F, - 33888 - 11905: 0xC890, - 33889 - 11905: 0xC6CF, - 33890 - 11905: 0xC891, - 33891 - 11905: 0xB6AD, - 33892 - 11905: 0xC892, - 33893 - 11905: 0xC893, - 33894 - 11905: 0xC894, - 33895 - 11905: 0xC895, - 33896 - 11905: 0xC896, - 33897 - 11905: 0xDDE2, - 33898 - 11905: 0xC897, - 33899 - 11905: 0xBAF9, - 33900 - 11905: 0xD4E1, - 33901 - 11905: 0xDDE7, - 33902 - 11905: 0xC898, - 33903 - 11905: 0xC899, - 33904 - 11905: 0xC89A, - 33905 - 11905: 0xB4D0, - 33906 - 11905: 0xC89B, - 33907 - 11905: 0xDDDA, - 33908 - 11905: 0xC89C, - 33909 - 11905: 0xBFFB, - 33910 - 11905: 0xDDE3, - 33911 - 11905: 0xC89D, - 33912 - 11905: 0xDDDF, - 33913 - 11905: 0xC89E, - 33914 - 11905: 0xDDDD, - 33915 - 11905: 0xC89F, - 33916 - 11905: 0xC8A0, - 33917 - 11905: 0xC940, - 33918 - 11905: 0xC941, - 33919 - 11905: 0xC942, - 33920 - 11905: 0xC943, - 33921 - 11905: 0xC944, - 33922 - 11905: 0xB5D9, - 33923 - 11905: 0xC945, - 33924 - 11905: 0xC946, - 33925 - 11905: 0xC947, - 33926 - 11905: 0xC948, - 33927 - 11905: 0xDDDB, - 33928 - 11905: 0xDDDC, - 33929 - 11905: 0xDDDE, - 33930 - 11905: 0xC949, - 33931 - 11905: 0xBDAF, - 33932 - 11905: 0xDDE4, - 33933 - 11905: 0xC94A, - 33934 - 11905: 0xDDE5, - 33935 - 11905: 0xC94B, - 33936 - 11905: 0xC94C, - 33937 - 11905: 0xC94D, - 33938 - 11905: 0xC94E, - 33939 - 11905: 0xC94F, - 33940 - 11905: 0xC950, - 33941 - 11905: 0xC951, - 33942 - 11905: 0xC952, - 33943 - 11905: 0xDDF5, - 33944 - 11905: 0xC953, - 33945 - 11905: 0xC3C9, - 33946 - 11905: 0xC954, - 33947 - 11905: 0xC955, - 33948 - 11905: 0xCBE2, - 33949 - 11905: 0xC956, - 33950 - 11905: 0xC957, - 33951 - 11905: 0xC958, - 33952 - 11905: 0xC959, - 33953 - 11905: 0xDDF2, - 33954 - 11905: 0xC95A, - 33955 - 11905: 0xC95B, - 33956 - 11905: 0xC95C, - 33957 - 11905: 0xC95D, - 33958 - 11905: 0xC95E, - 33959 - 11905: 0xC95F, - 33960 - 11905: 0xC960, - 33961 - 11905: 0xC961, - 33962 - 11905: 0xC962, - 33963 - 11905: 0xC963, - 33964 - 11905: 0xC964, - 33965 - 11905: 0xC965, - 33966 - 11905: 0xC966, - 33967 - 11905: 0xD8E1, - 33968 - 11905: 0xC967, - 33969 - 11905: 0xC968, - 33970 - 11905: 0xC6D1, - 33971 - 11905: 0xC969, - 33972 - 11905: 0xDDF4, - 33973 - 11905: 0xC96A, - 33974 - 11905: 0xC96B, - 33975 - 11905: 0xC96C, - 33976 - 11905: 0xD5F4, - 33977 - 11905: 0xDDF3, - 33978 - 11905: 0xDDF0, - 33979 - 11905: 0xC96D, - 33980 - 11905: 0xC96E, - 33981 - 11905: 0xDDEC, - 33982 - 11905: 0xC96F, - 33983 - 11905: 0xDDEF, - 33984 - 11905: 0xC970, - 33985 - 11905: 0xDDE8, - 33986 - 11905: 0xC971, - 33987 - 11905: 0xC972, - 33988 - 11905: 0xD0EE, - 33989 - 11905: 0xC973, - 33990 - 11905: 0xC974, - 33991 - 11905: 0xC975, - 33992 - 11905: 0xC976, - 33993 - 11905: 0xC8D8, - 33994 - 11905: 0xDDEE, - 33995 - 11905: 0xC977, - 33996 - 11905: 0xC978, - 33997 - 11905: 0xDDE9, - 33998 - 11905: 0xC979, - 33999 - 11905: 0xC97A, - 34000 - 11905: 0xDDEA, - 34001 - 11905: 0xCBF2, - 34002 - 11905: 0xC97B, - 34003 - 11905: 0xDDED, - 34004 - 11905: 0xC97C, - 34005 - 11905: 0xC97D, - 34006 - 11905: 0xB1CD, - 34007 - 11905: 0xC97E, - 34008 - 11905: 0xC980, - 34009 - 11905: 0xC981, - 34010 - 11905: 0xC982, - 34011 - 11905: 0xC983, - 34012 - 11905: 0xC984, - 34013 - 11905: 0xC0B6, - 34014 - 11905: 0xC985, - 34015 - 11905: 0xBCBB, - 34016 - 11905: 0xDDF1, - 34017 - 11905: 0xC986, - 34018 - 11905: 0xC987, - 34019 - 11905: 0xDDF7, - 34020 - 11905: 0xC988, - 34021 - 11905: 0xDDF6, - 34022 - 11905: 0xDDEB, - 34023 - 11905: 0xC989, - 34024 - 11905: 0xC98A, - 34025 - 11905: 0xC98B, - 34026 - 11905: 0xC98C, - 34027 - 11905: 0xC98D, - 34028 - 11905: 0xC5EE, - 34029 - 11905: 0xC98E, - 34030 - 11905: 0xC98F, - 34031 - 11905: 0xC990, - 34032 - 11905: 0xDDFB, - 34033 - 11905: 0xC991, - 34034 - 11905: 0xC992, - 34035 - 11905: 0xC993, - 34036 - 11905: 0xC994, - 34037 - 11905: 0xC995, - 34038 - 11905: 0xC996, - 34039 - 11905: 0xC997, - 34040 - 11905: 0xC998, - 34041 - 11905: 0xC999, - 34042 - 11905: 0xC99A, - 34043 - 11905: 0xC99B, - 34044 - 11905: 0xDEA4, - 34045 - 11905: 0xC99C, - 34046 - 11905: 0xC99D, - 34047 - 11905: 0xDEA3, - 34048 - 11905: 0xC99E, - 34049 - 11905: 0xC99F, - 34050 - 11905: 0xC9A0, - 34051 - 11905: 0xCA40, - 34052 - 11905: 0xCA41, - 34053 - 11905: 0xCA42, - 34054 - 11905: 0xCA43, - 34055 - 11905: 0xCA44, - 34056 - 11905: 0xCA45, - 34057 - 11905: 0xCA46, - 34058 - 11905: 0xCA47, - 34059 - 11905: 0xCA48, - 34060 - 11905: 0xDDF8, - 34061 - 11905: 0xCA49, - 34062 - 11905: 0xCA4A, - 34063 - 11905: 0xCA4B, - 34064 - 11905: 0xCA4C, - 34065 - 11905: 0xC3EF, - 34066 - 11905: 0xCA4D, - 34067 - 11905: 0xC2FB, - 34068 - 11905: 0xCA4E, - 34069 - 11905: 0xCA4F, - 34070 - 11905: 0xCA50, - 34071 - 11905: 0xD5E1, - 34072 - 11905: 0xCA51, - 34073 - 11905: 0xCA52, - 34074 - 11905: 0xCEB5, - 34075 - 11905: 0xCA53, - 34076 - 11905: 0xCA54, - 34077 - 11905: 0xCA55, - 34078 - 11905: 0xCA56, - 34079 - 11905: 0xDDFD, - 34080 - 11905: 0xCA57, - 34081 - 11905: 0xB2CC, - 34082 - 11905: 0xCA58, - 34083 - 11905: 0xCA59, - 34084 - 11905: 0xCA5A, - 34085 - 11905: 0xCA5B, - 34086 - 11905: 0xCA5C, - 34087 - 11905: 0xCA5D, - 34088 - 11905: 0xCA5E, - 34089 - 11905: 0xCA5F, - 34090 - 11905: 0xCA60, - 34091 - 11905: 0xC4E8, - 34092 - 11905: 0xCADF, - 34093 - 11905: 0xCA61, - 34094 - 11905: 0xCA62, - 34095 - 11905: 0xCA63, - 34096 - 11905: 0xCA64, - 34097 - 11905: 0xCA65, - 34098 - 11905: 0xCA66, - 34099 - 11905: 0xCA67, - 34100 - 11905: 0xCA68, - 34101 - 11905: 0xCA69, - 34102 - 11905: 0xCA6A, - 34103 - 11905: 0xC7BE, - 34104 - 11905: 0xDDFA, - 34105 - 11905: 0xDDFC, - 34106 - 11905: 0xDDFE, - 34107 - 11905: 0xDEA2, - 34108 - 11905: 0xB0AA, - 34109 - 11905: 0xB1CE, - 34110 - 11905: 0xCA6B, - 34111 - 11905: 0xCA6C, - 34112 - 11905: 0xCA6D, - 34113 - 11905: 0xCA6E, - 34114 - 11905: 0xCA6F, - 34115 - 11905: 0xDEAC, - 34116 - 11905: 0xCA70, - 34117 - 11905: 0xCA71, - 34118 - 11905: 0xCA72, - 34119 - 11905: 0xCA73, - 34120 - 11905: 0xDEA6, - 34121 - 11905: 0xBDB6, - 34122 - 11905: 0xC8EF, - 34123 - 11905: 0xCA74, - 34124 - 11905: 0xCA75, - 34125 - 11905: 0xCA76, - 34126 - 11905: 0xCA77, - 34127 - 11905: 0xCA78, - 34128 - 11905: 0xCA79, - 34129 - 11905: 0xCA7A, - 34130 - 11905: 0xCA7B, - 34131 - 11905: 0xCA7C, - 34132 - 11905: 0xCA7D, - 34133 - 11905: 0xCA7E, - 34134 - 11905: 0xDEA1, - 34135 - 11905: 0xCA80, - 34136 - 11905: 0xCA81, - 34137 - 11905: 0xDEA5, - 34138 - 11905: 0xCA82, - 34139 - 11905: 0xCA83, - 34140 - 11905: 0xCA84, - 34141 - 11905: 0xCA85, - 34142 - 11905: 0xDEA9, - 34143 - 11905: 0xCA86, - 34144 - 11905: 0xCA87, - 34145 - 11905: 0xCA88, - 34146 - 11905: 0xCA89, - 34147 - 11905: 0xCA8A, - 34148 - 11905: 0xDEA8, - 34149 - 11905: 0xCA8B, - 34150 - 11905: 0xCA8C, - 34151 - 11905: 0xCA8D, - 34152 - 11905: 0xDEA7, - 34153 - 11905: 0xCA8E, - 34154 - 11905: 0xCA8F, - 34155 - 11905: 0xCA90, - 34156 - 11905: 0xCA91, - 34157 - 11905: 0xCA92, - 34158 - 11905: 0xCA93, - 34159 - 11905: 0xCA94, - 34160 - 11905: 0xCA95, - 34161 - 11905: 0xCA96, - 34162 - 11905: 0xDEAD, - 34163 - 11905: 0xCA97, - 34164 - 11905: 0xD4CC, - 34165 - 11905: 0xCA98, - 34166 - 11905: 0xCA99, - 34167 - 11905: 0xCA9A, - 34168 - 11905: 0xCA9B, - 34169 - 11905: 0xDEB3, - 34170 - 11905: 0xDEAA, - 34171 - 11905: 0xDEAE, - 34172 - 11905: 0xCA9C, - 34173 - 11905: 0xCA9D, - 34174 - 11905: 0xC0D9, - 34175 - 11905: 0xCA9E, - 34176 - 11905: 0xCA9F, - 34177 - 11905: 0xCAA0, - 34178 - 11905: 0xCB40, - 34179 - 11905: 0xCB41, - 34180 - 11905: 0xB1A1, - 34181 - 11905: 0xDEB6, - 34182 - 11905: 0xCB42, - 34183 - 11905: 0xDEB1, - 34184 - 11905: 0xCB43, - 34185 - 11905: 0xCB44, - 34186 - 11905: 0xCB45, - 34187 - 11905: 0xCB46, - 34188 - 11905: 0xCB47, - 34189 - 11905: 0xCB48, - 34190 - 11905: 0xCB49, - 34191 - 11905: 0xDEB2, - 34192 - 11905: 0xCB4A, - 34193 - 11905: 0xCB4B, - 34194 - 11905: 0xCB4C, - 34195 - 11905: 0xCB4D, - 34196 - 11905: 0xCB4E, - 34197 - 11905: 0xCB4F, - 34198 - 11905: 0xCB50, - 34199 - 11905: 0xCB51, - 34200 - 11905: 0xCB52, - 34201 - 11905: 0xCB53, - 34202 - 11905: 0xCB54, - 34203 - 11905: 0xD1A6, - 34204 - 11905: 0xDEB5, - 34205 - 11905: 0xCB55, - 34206 - 11905: 0xCB56, - 34207 - 11905: 0xCB57, - 34208 - 11905: 0xCB58, - 34209 - 11905: 0xCB59, - 34210 - 11905: 0xCB5A, - 34211 - 11905: 0xCB5B, - 34212 - 11905: 0xDEAF, - 34213 - 11905: 0xCB5C, - 34214 - 11905: 0xCB5D, - 34215 - 11905: 0xCB5E, - 34216 - 11905: 0xDEB0, - 34217 - 11905: 0xCB5F, - 34218 - 11905: 0xD0BD, - 34219 - 11905: 0xCB60, - 34220 - 11905: 0xCB61, - 34221 - 11905: 0xCB62, - 34222 - 11905: 0xDEB4, - 34223 - 11905: 0xCAED, - 34224 - 11905: 0xDEB9, - 34225 - 11905: 0xCB63, - 34226 - 11905: 0xCB64, - 34227 - 11905: 0xCB65, - 34228 - 11905: 0xCB66, - 34229 - 11905: 0xCB67, - 34230 - 11905: 0xCB68, - 34231 - 11905: 0xDEB8, - 34232 - 11905: 0xCB69, - 34233 - 11905: 0xDEB7, - 34234 - 11905: 0xCB6A, - 34235 - 11905: 0xCB6B, - 34236 - 11905: 0xCB6C, - 34237 - 11905: 0xCB6D, - 34238 - 11905: 0xCB6E, - 34239 - 11905: 0xCB6F, - 34240 - 11905: 0xCB70, - 34241 - 11905: 0xDEBB, - 34242 - 11905: 0xCB71, - 34243 - 11905: 0xCB72, - 34244 - 11905: 0xCB73, - 34245 - 11905: 0xCB74, - 34246 - 11905: 0xCB75, - 34247 - 11905: 0xCB76, - 34248 - 11905: 0xCB77, - 34249 - 11905: 0xBDE5, - 34250 - 11905: 0xCB78, - 34251 - 11905: 0xCB79, - 34252 - 11905: 0xCB7A, - 34253 - 11905: 0xCB7B, - 34254 - 11905: 0xCB7C, - 34255 - 11905: 0xB2D8, - 34256 - 11905: 0xC3EA, - 34257 - 11905: 0xCB7D, - 34258 - 11905: 0xCB7E, - 34259 - 11905: 0xDEBA, - 34260 - 11905: 0xCB80, - 34261 - 11905: 0xC5BA, - 34262 - 11905: 0xCB81, - 34263 - 11905: 0xCB82, - 34264 - 11905: 0xCB83, - 34265 - 11905: 0xCB84, - 34266 - 11905: 0xCB85, - 34267 - 11905: 0xCB86, - 34268 - 11905: 0xDEBC, - 34269 - 11905: 0xCB87, - 34270 - 11905: 0xCB88, - 34271 - 11905: 0xCB89, - 34272 - 11905: 0xCB8A, - 34273 - 11905: 0xCB8B, - 34274 - 11905: 0xCB8C, - 34275 - 11905: 0xCB8D, - 34276 - 11905: 0xCCD9, - 34277 - 11905: 0xCB8E, - 34278 - 11905: 0xCB8F, - 34279 - 11905: 0xCB90, - 34280 - 11905: 0xCB91, - 34281 - 11905: 0xB7AA, - 34282 - 11905: 0xCB92, - 34283 - 11905: 0xCB93, - 34284 - 11905: 0xCB94, - 34285 - 11905: 0xCB95, - 34286 - 11905: 0xCB96, - 34287 - 11905: 0xCB97, - 34288 - 11905: 0xCB98, - 34289 - 11905: 0xCB99, - 34290 - 11905: 0xCB9A, - 34291 - 11905: 0xCB9B, - 34292 - 11905: 0xCB9C, - 34293 - 11905: 0xCB9D, - 34294 - 11905: 0xCB9E, - 34295 - 11905: 0xCB9F, - 34296 - 11905: 0xCBA0, - 34297 - 11905: 0xCC40, - 34298 - 11905: 0xCC41, - 34299 - 11905: 0xD4E5, - 34300 - 11905: 0xCC42, - 34301 - 11905: 0xCC43, - 34302 - 11905: 0xCC44, - 34303 - 11905: 0xDEBD, - 34304 - 11905: 0xCC45, - 34305 - 11905: 0xCC46, - 34306 - 11905: 0xCC47, - 34307 - 11905: 0xCC48, - 34308 - 11905: 0xCC49, - 34309 - 11905: 0xDEBF, - 34310 - 11905: 0xCC4A, - 34311 - 11905: 0xCC4B, - 34312 - 11905: 0xCC4C, - 34313 - 11905: 0xCC4D, - 34314 - 11905: 0xCC4E, - 34315 - 11905: 0xCC4F, - 34316 - 11905: 0xCC50, - 34317 - 11905: 0xCC51, - 34318 - 11905: 0xCC52, - 34319 - 11905: 0xCC53, - 34320 - 11905: 0xCC54, - 34321 - 11905: 0xC4A2, - 34322 - 11905: 0xCC55, - 34323 - 11905: 0xCC56, - 34324 - 11905: 0xCC57, - 34325 - 11905: 0xCC58, - 34326 - 11905: 0xDEC1, - 34327 - 11905: 0xCC59, - 34328 - 11905: 0xCC5A, - 34329 - 11905: 0xCC5B, - 34330 - 11905: 0xCC5C, - 34331 - 11905: 0xCC5D, - 34332 - 11905: 0xCC5E, - 34333 - 11905: 0xCC5F, - 34334 - 11905: 0xCC60, - 34335 - 11905: 0xCC61, - 34336 - 11905: 0xCC62, - 34337 - 11905: 0xCC63, - 34338 - 11905: 0xCC64, - 34339 - 11905: 0xCC65, - 34340 - 11905: 0xCC66, - 34341 - 11905: 0xCC67, - 34342 - 11905: 0xCC68, - 34343 - 11905: 0xDEBE, - 34344 - 11905: 0xCC69, - 34345 - 11905: 0xDEC0, - 34346 - 11905: 0xCC6A, - 34347 - 11905: 0xCC6B, - 34348 - 11905: 0xCC6C, - 34349 - 11905: 0xCC6D, - 34350 - 11905: 0xCC6E, - 34351 - 11905: 0xCC6F, - 34352 - 11905: 0xCC70, - 34353 - 11905: 0xCC71, - 34354 - 11905: 0xCC72, - 34355 - 11905: 0xCC73, - 34356 - 11905: 0xCC74, - 34357 - 11905: 0xCC75, - 34358 - 11905: 0xCC76, - 34359 - 11905: 0xCC77, - 34360 - 11905: 0xD5BA, - 34361 - 11905: 0xCC78, - 34362 - 11905: 0xCC79, - 34363 - 11905: 0xCC7A, - 34364 - 11905: 0xDEC2, - 34365 - 11905: 0xCC7B, - 34366 - 11905: 0xCC7C, - 34367 - 11905: 0xCC7D, - 34368 - 11905: 0xCC7E, - 34369 - 11905: 0xCC80, - 34370 - 11905: 0xCC81, - 34371 - 11905: 0xCC82, - 34372 - 11905: 0xCC83, - 34373 - 11905: 0xCC84, - 34374 - 11905: 0xCC85, - 34375 - 11905: 0xCC86, - 34376 - 11905: 0xCC87, - 34377 - 11905: 0xCC88, - 34378 - 11905: 0xCC89, - 34379 - 11905: 0xCC8A, - 34380 - 11905: 0xCC8B, - 34381 - 11905: 0xF2AE, - 34382 - 11905: 0xBBA2, - 34383 - 11905: 0xC2B2, - 34384 - 11905: 0xC5B0, - 34385 - 11905: 0xC2C7, - 34386 - 11905: 0xCC8C, - 34387 - 11905: 0xCC8D, - 34388 - 11905: 0xF2AF, - 34389 - 11905: 0xCC8E, - 34390 - 11905: 0xCC8F, - 34391 - 11905: 0xCC90, - 34392 - 11905: 0xCC91, - 34393 - 11905: 0xCC92, - 34394 - 11905: 0xD0E9, - 34395 - 11905: 0xCC93, - 34396 - 11905: 0xCC94, - 34397 - 11905: 0xCC95, - 34398 - 11905: 0xD3DD, - 34399 - 11905: 0xCC96, - 34400 - 11905: 0xCC97, - 34401 - 11905: 0xCC98, - 34402 - 11905: 0xEBBD, - 34403 - 11905: 0xCC99, - 34404 - 11905: 0xCC9A, - 34405 - 11905: 0xCC9B, - 34406 - 11905: 0xCC9C, - 34407 - 11905: 0xCC9D, - 34408 - 11905: 0xCC9E, - 34409 - 11905: 0xCC9F, - 34410 - 11905: 0xCCA0, - 34411 - 11905: 0xB3E6, - 34412 - 11905: 0xF2B0, - 34413 - 11905: 0xCD40, - 34414 - 11905: 0xF2B1, - 34415 - 11905: 0xCD41, - 34416 - 11905: 0xCD42, - 34417 - 11905: 0xCAAD, - 34418 - 11905: 0xCD43, - 34419 - 11905: 0xCD44, - 34420 - 11905: 0xCD45, - 34421 - 11905: 0xCD46, - 34422 - 11905: 0xCD47, - 34423 - 11905: 0xCD48, - 34424 - 11905: 0xCD49, - 34425 - 11905: 0xBAE7, - 34426 - 11905: 0xF2B3, - 34427 - 11905: 0xF2B5, - 34428 - 11905: 0xF2B4, - 34429 - 11905: 0xCBE4, - 34430 - 11905: 0xCFBA, - 34431 - 11905: 0xF2B2, - 34432 - 11905: 0xCAB4, - 34433 - 11905: 0xD2CF, - 34434 - 11905: 0xC2EC, - 34435 - 11905: 0xCD4A, - 34436 - 11905: 0xCD4B, - 34437 - 11905: 0xCD4C, - 34438 - 11905: 0xCD4D, - 34439 - 11905: 0xCD4E, - 34440 - 11905: 0xCD4F, - 34441 - 11905: 0xCD50, - 34442 - 11905: 0xCEC3, - 34443 - 11905: 0xF2B8, - 34444 - 11905: 0xB0F6, - 34445 - 11905: 0xF2B7, - 34446 - 11905: 0xCD51, - 34447 - 11905: 0xCD52, - 34448 - 11905: 0xCD53, - 34449 - 11905: 0xCD54, - 34450 - 11905: 0xCD55, - 34451 - 11905: 0xF2BE, - 34452 - 11905: 0xCD56, - 34453 - 11905: 0xB2CF, - 34454 - 11905: 0xCD57, - 34455 - 11905: 0xCD58, - 34456 - 11905: 0xCD59, - 34457 - 11905: 0xCD5A, - 34458 - 11905: 0xCD5B, - 34459 - 11905: 0xCD5C, - 34460 - 11905: 0xD1C1, - 34461 - 11905: 0xF2BA, - 34462 - 11905: 0xCD5D, - 34463 - 11905: 0xCD5E, - 34464 - 11905: 0xCD5F, - 34465 - 11905: 0xCD60, - 34466 - 11905: 0xCD61, - 34467 - 11905: 0xF2BC, - 34468 - 11905: 0xD4E9, - 34469 - 11905: 0xCD62, - 34470 - 11905: 0xCD63, - 34471 - 11905: 0xF2BB, - 34472 - 11905: 0xF2B6, - 34473 - 11905: 0xF2BF, - 34474 - 11905: 0xF2BD, - 34475 - 11905: 0xCD64, - 34476 - 11905: 0xF2B9, - 34477 - 11905: 0xCD65, - 34478 - 11905: 0xCD66, - 34479 - 11905: 0xF2C7, - 34480 - 11905: 0xF2C4, - 34481 - 11905: 0xF2C6, - 34482 - 11905: 0xCD67, - 34483 - 11905: 0xCD68, - 34484 - 11905: 0xF2CA, - 34485 - 11905: 0xF2C2, - 34486 - 11905: 0xF2C0, - 34487 - 11905: 0xCD69, - 34488 - 11905: 0xCD6A, - 34489 - 11905: 0xCD6B, - 34490 - 11905: 0xF2C5, - 34491 - 11905: 0xCD6C, - 34492 - 11905: 0xCD6D, - 34493 - 11905: 0xCD6E, - 34494 - 11905: 0xCD6F, - 34495 - 11905: 0xCD70, - 34496 - 11905: 0xD6FB, - 34497 - 11905: 0xCD71, - 34498 - 11905: 0xCD72, - 34499 - 11905: 0xCD73, - 34500 - 11905: 0xF2C1, - 34501 - 11905: 0xCD74, - 34502 - 11905: 0xC7F9, - 34503 - 11905: 0xC9DF, - 34504 - 11905: 0xCD75, - 34505 - 11905: 0xF2C8, - 34506 - 11905: 0xB9C6, - 34507 - 11905: 0xB5B0, - 34508 - 11905: 0xCD76, - 34509 - 11905: 0xCD77, - 34510 - 11905: 0xF2C3, - 34511 - 11905: 0xF2C9, - 34512 - 11905: 0xF2D0, - 34513 - 11905: 0xF2D6, - 34514 - 11905: 0xCD78, - 34515 - 11905: 0xCD79, - 34516 - 11905: 0xBBD7, - 34517 - 11905: 0xCD7A, - 34518 - 11905: 0xCD7B, - 34519 - 11905: 0xCD7C, - 34520 - 11905: 0xF2D5, - 34521 - 11905: 0xCDDC, - 34522 - 11905: 0xCD7D, - 34523 - 11905: 0xD6EB, - 34524 - 11905: 0xCD7E, - 34525 - 11905: 0xCD80, - 34526 - 11905: 0xF2D2, - 34527 - 11905: 0xF2D4, - 34528 - 11905: 0xCD81, - 34529 - 11905: 0xCD82, - 34530 - 11905: 0xCD83, - 34531 - 11905: 0xCD84, - 34532 - 11905: 0xB8F2, - 34533 - 11905: 0xCD85, - 34534 - 11905: 0xCD86, - 34535 - 11905: 0xCD87, - 34536 - 11905: 0xCD88, - 34537 - 11905: 0xF2CB, - 34538 - 11905: 0xCD89, - 34539 - 11905: 0xCD8A, - 34540 - 11905: 0xCD8B, - 34541 - 11905: 0xF2CE, - 34542 - 11905: 0xC2F9, - 34543 - 11905: 0xCD8C, - 34544 - 11905: 0xD5DD, - 34545 - 11905: 0xF2CC, - 34546 - 11905: 0xF2CD, - 34547 - 11905: 0xF2CF, - 34548 - 11905: 0xF2D3, - 34549 - 11905: 0xCD8D, - 34550 - 11905: 0xCD8E, - 34551 - 11905: 0xCD8F, - 34552 - 11905: 0xF2D9, - 34553 - 11905: 0xD3BC, - 34554 - 11905: 0xCD90, - 34555 - 11905: 0xCD91, - 34556 - 11905: 0xCD92, - 34557 - 11905: 0xCD93, - 34558 - 11905: 0xB6EA, - 34559 - 11905: 0xCD94, - 34560 - 11905: 0xCAF1, - 34561 - 11905: 0xCD95, - 34562 - 11905: 0xB7E4, - 34563 - 11905: 0xF2D7, - 34564 - 11905: 0xCD96, - 34565 - 11905: 0xCD97, - 34566 - 11905: 0xCD98, - 34567 - 11905: 0xF2D8, - 34568 - 11905: 0xF2DA, - 34569 - 11905: 0xF2DD, - 34570 - 11905: 0xF2DB, - 34571 - 11905: 0xCD99, - 34572 - 11905: 0xCD9A, - 34573 - 11905: 0xF2DC, - 34574 - 11905: 0xCD9B, - 34575 - 11905: 0xCD9C, - 34576 - 11905: 0xCD9D, - 34577 - 11905: 0xCD9E, - 34578 - 11905: 0xD1D1, - 34579 - 11905: 0xF2D1, - 34580 - 11905: 0xCD9F, - 34581 - 11905: 0xCDC9, - 34582 - 11905: 0xCDA0, - 34583 - 11905: 0xCECF, - 34584 - 11905: 0xD6A9, - 34585 - 11905: 0xCE40, - 34586 - 11905: 0xF2E3, - 34587 - 11905: 0xCE41, - 34588 - 11905: 0xC3DB, - 34589 - 11905: 0xCE42, - 34590 - 11905: 0xF2E0, - 34591 - 11905: 0xCE43, - 34592 - 11905: 0xCE44, - 34593 - 11905: 0xC0AF, - 34594 - 11905: 0xF2EC, - 34595 - 11905: 0xF2DE, - 34596 - 11905: 0xCE45, - 34597 - 11905: 0xF2E1, - 34598 - 11905: 0xCE46, - 34599 - 11905: 0xCE47, - 34600 - 11905: 0xCE48, - 34601 - 11905: 0xF2E8, - 34602 - 11905: 0xCE49, - 34603 - 11905: 0xCE4A, - 34604 - 11905: 0xCE4B, - 34605 - 11905: 0xCE4C, - 34606 - 11905: 0xF2E2, - 34607 - 11905: 0xCE4D, - 34608 - 11905: 0xCE4E, - 34609 - 11905: 0xF2E7, - 34610 - 11905: 0xCE4F, - 34611 - 11905: 0xCE50, - 34612 - 11905: 0xF2E6, - 34613 - 11905: 0xCE51, - 34614 - 11905: 0xCE52, - 34615 - 11905: 0xF2E9, - 34616 - 11905: 0xCE53, - 34617 - 11905: 0xCE54, - 34618 - 11905: 0xCE55, - 34619 - 11905: 0xF2DF, - 34620 - 11905: 0xCE56, - 34621 - 11905: 0xCE57, - 34622 - 11905: 0xF2E4, - 34623 - 11905: 0xF2EA, - 34624 - 11905: 0xCE58, - 34625 - 11905: 0xCE59, - 34626 - 11905: 0xCE5A, - 34627 - 11905: 0xCE5B, - 34628 - 11905: 0xCE5C, - 34629 - 11905: 0xCE5D, - 34630 - 11905: 0xCE5E, - 34631 - 11905: 0xD3AC, - 34632 - 11905: 0xF2E5, - 34633 - 11905: 0xB2F5, - 34634 - 11905: 0xCE5F, - 34635 - 11905: 0xCE60, - 34636 - 11905: 0xF2F2, - 34637 - 11905: 0xCE61, - 34638 - 11905: 0xD0AB, - 34639 - 11905: 0xCE62, - 34640 - 11905: 0xCE63, - 34641 - 11905: 0xCE64, - 34642 - 11905: 0xCE65, - 34643 - 11905: 0xF2F5, - 34644 - 11905: 0xCE66, - 34645 - 11905: 0xCE67, - 34646 - 11905: 0xCE68, - 34647 - 11905: 0xBBC8, - 34648 - 11905: 0xCE69, - 34649 - 11905: 0xF2F9, - 34650 - 11905: 0xCE6A, - 34651 - 11905: 0xCE6B, - 34652 - 11905: 0xCE6C, - 34653 - 11905: 0xCE6D, - 34654 - 11905: 0xCE6E, - 34655 - 11905: 0xCE6F, - 34656 - 11905: 0xF2F0, - 34657 - 11905: 0xCE70, - 34658 - 11905: 0xCE71, - 34659 - 11905: 0xF2F6, - 34660 - 11905: 0xF2F8, - 34661 - 11905: 0xF2FA, - 34662 - 11905: 0xCE72, - 34663 - 11905: 0xCE73, - 34664 - 11905: 0xCE74, - 34665 - 11905: 0xCE75, - 34666 - 11905: 0xCE76, - 34667 - 11905: 0xCE77, - 34668 - 11905: 0xCE78, - 34669 - 11905: 0xCE79, - 34670 - 11905: 0xF2F3, - 34671 - 11905: 0xCE7A, - 34672 - 11905: 0xF2F1, - 34673 - 11905: 0xCE7B, - 34674 - 11905: 0xCE7C, - 34675 - 11905: 0xCE7D, - 34676 - 11905: 0xBAFB, - 34677 - 11905: 0xCE7E, - 34678 - 11905: 0xB5FB, - 34679 - 11905: 0xCE80, - 34680 - 11905: 0xCE81, - 34681 - 11905: 0xCE82, - 34682 - 11905: 0xCE83, - 34683 - 11905: 0xF2EF, - 34684 - 11905: 0xF2F7, - 34685 - 11905: 0xF2ED, - 34686 - 11905: 0xF2EE, - 34687 - 11905: 0xCE84, - 34688 - 11905: 0xCE85, - 34689 - 11905: 0xCE86, - 34690 - 11905: 0xF2EB, - 34691 - 11905: 0xF3A6, - 34692 - 11905: 0xCE87, - 34693 - 11905: 0xF3A3, - 34694 - 11905: 0xCE88, - 34695 - 11905: 0xCE89, - 34696 - 11905: 0xF3A2, - 34697 - 11905: 0xCE8A, - 34698 - 11905: 0xCE8B, - 34699 - 11905: 0xF2F4, - 34700 - 11905: 0xCE8C, - 34701 - 11905: 0xC8DA, - 34702 - 11905: 0xCE8D, - 34703 - 11905: 0xCE8E, - 34704 - 11905: 0xCE8F, - 34705 - 11905: 0xCE90, - 34706 - 11905: 0xCE91, - 34707 - 11905: 0xF2FB, - 34708 - 11905: 0xCE92, - 34709 - 11905: 0xCE93, - 34710 - 11905: 0xCE94, - 34711 - 11905: 0xF3A5, - 34712 - 11905: 0xCE95, - 34713 - 11905: 0xCE96, - 34714 - 11905: 0xCE97, - 34715 - 11905: 0xCE98, - 34716 - 11905: 0xCE99, - 34717 - 11905: 0xCE9A, - 34718 - 11905: 0xCE9B, - 34719 - 11905: 0xC3F8, - 34720 - 11905: 0xCE9C, - 34721 - 11905: 0xCE9D, - 34722 - 11905: 0xCE9E, - 34723 - 11905: 0xCE9F, - 34724 - 11905: 0xCEA0, - 34725 - 11905: 0xCF40, - 34726 - 11905: 0xCF41, - 34727 - 11905: 0xCF42, - 34728 - 11905: 0xF2FD, - 34729 - 11905: 0xCF43, - 34730 - 11905: 0xCF44, - 34731 - 11905: 0xF3A7, - 34732 - 11905: 0xF3A9, - 34733 - 11905: 0xF3A4, - 34734 - 11905: 0xCF45, - 34735 - 11905: 0xF2FC, - 34736 - 11905: 0xCF46, - 34737 - 11905: 0xCF47, - 34738 - 11905: 0xCF48, - 34739 - 11905: 0xF3AB, - 34740 - 11905: 0xCF49, - 34741 - 11905: 0xF3AA, - 34742 - 11905: 0xCF4A, - 34743 - 11905: 0xCF4B, - 34744 - 11905: 0xCF4C, - 34745 - 11905: 0xCF4D, - 34746 - 11905: 0xC2DD, - 34747 - 11905: 0xCF4E, - 34748 - 11905: 0xCF4F, - 34749 - 11905: 0xF3AE, - 34750 - 11905: 0xCF50, - 34751 - 11905: 0xCF51, - 34752 - 11905: 0xF3B0, - 34753 - 11905: 0xCF52, - 34754 - 11905: 0xCF53, - 34755 - 11905: 0xCF54, - 34756 - 11905: 0xCF55, - 34757 - 11905: 0xCF56, - 34758 - 11905: 0xF3A1, - 34759 - 11905: 0xCF57, - 34760 - 11905: 0xCF58, - 34761 - 11905: 0xCF59, - 34762 - 11905: 0xF3B1, - 34763 - 11905: 0xF3AC, - 34764 - 11905: 0xCF5A, - 34765 - 11905: 0xCF5B, - 34766 - 11905: 0xCF5C, - 34767 - 11905: 0xCF5D, - 34768 - 11905: 0xCF5E, - 34769 - 11905: 0xF3AF, - 34770 - 11905: 0xF2FE, - 34771 - 11905: 0xF3AD, - 34772 - 11905: 0xCF5F, - 34773 - 11905: 0xCF60, - 34774 - 11905: 0xCF61, - 34775 - 11905: 0xCF62, - 34776 - 11905: 0xCF63, - 34777 - 11905: 0xCF64, - 34778 - 11905: 0xCF65, - 34779 - 11905: 0xF3B2, - 34780 - 11905: 0xCF66, - 34781 - 11905: 0xCF67, - 34782 - 11905: 0xCF68, - 34783 - 11905: 0xCF69, - 34784 - 11905: 0xF3B4, - 34785 - 11905: 0xCF6A, - 34786 - 11905: 0xCF6B, - 34787 - 11905: 0xCF6C, - 34788 - 11905: 0xCF6D, - 34789 - 11905: 0xF3A8, - 34790 - 11905: 0xCF6E, - 34791 - 11905: 0xCF6F, - 34792 - 11905: 0xCF70, - 34793 - 11905: 0xCF71, - 34794 - 11905: 0xF3B3, - 34795 - 11905: 0xCF72, - 34796 - 11905: 0xCF73, - 34797 - 11905: 0xCF74, - 34798 - 11905: 0xF3B5, - 34799 - 11905: 0xCF75, - 34800 - 11905: 0xCF76, - 34801 - 11905: 0xCF77, - 34802 - 11905: 0xCF78, - 34803 - 11905: 0xCF79, - 34804 - 11905: 0xCF7A, - 34805 - 11905: 0xCF7B, - 34806 - 11905: 0xCF7C, - 34807 - 11905: 0xCF7D, - 34808 - 11905: 0xCF7E, - 34809 - 11905: 0xD0B7, - 34810 - 11905: 0xCF80, - 34811 - 11905: 0xCF81, - 34812 - 11905: 0xCF82, - 34813 - 11905: 0xCF83, - 34814 - 11905: 0xF3B8, - 34815 - 11905: 0xCF84, - 34816 - 11905: 0xCF85, - 34817 - 11905: 0xCF86, - 34818 - 11905: 0xCF87, - 34819 - 11905: 0xD9F9, - 34820 - 11905: 0xCF88, - 34821 - 11905: 0xCF89, - 34822 - 11905: 0xCF8A, - 34823 - 11905: 0xCF8B, - 34824 - 11905: 0xCF8C, - 34825 - 11905: 0xCF8D, - 34826 - 11905: 0xF3B9, - 34827 - 11905: 0xCF8E, - 34828 - 11905: 0xCF8F, - 34829 - 11905: 0xCF90, - 34830 - 11905: 0xCF91, - 34831 - 11905: 0xCF92, - 34832 - 11905: 0xCF93, - 34833 - 11905: 0xCF94, - 34834 - 11905: 0xCF95, - 34835 - 11905: 0xF3B7, - 34836 - 11905: 0xCF96, - 34837 - 11905: 0xC8E4, - 34838 - 11905: 0xF3B6, - 34839 - 11905: 0xCF97, - 34840 - 11905: 0xCF98, - 34841 - 11905: 0xCF99, - 34842 - 11905: 0xCF9A, - 34843 - 11905: 0xF3BA, - 34844 - 11905: 0xCF9B, - 34845 - 11905: 0xCF9C, - 34846 - 11905: 0xCF9D, - 34847 - 11905: 0xCF9E, - 34848 - 11905: 0xCF9F, - 34849 - 11905: 0xF3BB, - 34850 - 11905: 0xB4C0, - 34851 - 11905: 0xCFA0, - 34852 - 11905: 0xD040, - 34853 - 11905: 0xD041, - 34854 - 11905: 0xD042, - 34855 - 11905: 0xD043, - 34856 - 11905: 0xD044, - 34857 - 11905: 0xD045, - 34858 - 11905: 0xD046, - 34859 - 11905: 0xD047, - 34860 - 11905: 0xD048, - 34861 - 11905: 0xD049, - 34862 - 11905: 0xD04A, - 34863 - 11905: 0xD04B, - 34864 - 11905: 0xD04C, - 34865 - 11905: 0xD04D, - 34866 - 11905: 0xEEC3, - 34867 - 11905: 0xD04E, - 34868 - 11905: 0xD04F, - 34869 - 11905: 0xD050, - 34870 - 11905: 0xD051, - 34871 - 11905: 0xD052, - 34872 - 11905: 0xD053, - 34873 - 11905: 0xF3BC, - 34874 - 11905: 0xD054, - 34875 - 11905: 0xD055, - 34876 - 11905: 0xF3BD, - 34877 - 11905: 0xD056, - 34878 - 11905: 0xD057, - 34879 - 11905: 0xD058, - 34880 - 11905: 0xD1AA, - 34881 - 11905: 0xD059, - 34882 - 11905: 0xD05A, - 34883 - 11905: 0xD05B, - 34884 - 11905: 0xF4AC, - 34885 - 11905: 0xD0C6, - 34886 - 11905: 0xD05C, - 34887 - 11905: 0xD05D, - 34888 - 11905: 0xD05E, - 34889 - 11905: 0xD05F, - 34890 - 11905: 0xD060, - 34891 - 11905: 0xD061, - 34892 - 11905: 0xD0D0, - 34893 - 11905: 0xD1DC, - 34894 - 11905: 0xD062, - 34895 - 11905: 0xD063, - 34896 - 11905: 0xD064, - 34897 - 11905: 0xD065, - 34898 - 11905: 0xD066, - 34899 - 11905: 0xD067, - 34900 - 11905: 0xCFCE, - 34901 - 11905: 0xD068, - 34902 - 11905: 0xD069, - 34903 - 11905: 0xBDD6, - 34904 - 11905: 0xD06A, - 34905 - 11905: 0xD1C3, - 34906 - 11905: 0xD06B, - 34907 - 11905: 0xD06C, - 34908 - 11905: 0xD06D, - 34909 - 11905: 0xD06E, - 34910 - 11905: 0xD06F, - 34911 - 11905: 0xD070, - 34912 - 11905: 0xD071, - 34913 - 11905: 0xBAE2, - 34914 - 11905: 0xE1E9, - 34915 - 11905: 0xD2C2, - 34916 - 11905: 0xF1C2, - 34917 - 11905: 0xB2B9, - 34918 - 11905: 0xD072, - 34919 - 11905: 0xD073, - 34920 - 11905: 0xB1ED, - 34921 - 11905: 0xF1C3, - 34922 - 11905: 0xD074, - 34923 - 11905: 0xC9C0, - 34924 - 11905: 0xB3C4, - 34925 - 11905: 0xD075, - 34926 - 11905: 0xD9F2, - 34927 - 11905: 0xD076, - 34928 - 11905: 0xCBA5, - 34929 - 11905: 0xD077, - 34930 - 11905: 0xF1C4, - 34931 - 11905: 0xD078, - 34932 - 11905: 0xD079, - 34933 - 11905: 0xD07A, - 34934 - 11905: 0xD07B, - 34935 - 11905: 0xD6D4, - 34936 - 11905: 0xD07C, - 34937 - 11905: 0xD07D, - 34938 - 11905: 0xD07E, - 34939 - 11905: 0xD080, - 34940 - 11905: 0xD081, - 34941 - 11905: 0xF1C5, - 34942 - 11905: 0xF4C0, - 34943 - 11905: 0xF1C6, - 34944 - 11905: 0xD082, - 34945 - 11905: 0xD4AC, - 34946 - 11905: 0xF1C7, - 34947 - 11905: 0xD083, - 34948 - 11905: 0xB0C0, - 34949 - 11905: 0xF4C1, - 34950 - 11905: 0xD084, - 34951 - 11905: 0xD085, - 34952 - 11905: 0xF4C2, - 34953 - 11905: 0xD086, - 34954 - 11905: 0xD087, - 34955 - 11905: 0xB4FC, - 34956 - 11905: 0xD088, - 34957 - 11905: 0xC5DB, - 34958 - 11905: 0xD089, - 34959 - 11905: 0xD08A, - 34960 - 11905: 0xD08B, - 34961 - 11905: 0xD08C, - 34962 - 11905: 0xCCBB, - 34963 - 11905: 0xD08D, - 34964 - 11905: 0xD08E, - 34965 - 11905: 0xD08F, - 34966 - 11905: 0xD0E4, - 34967 - 11905: 0xD090, - 34968 - 11905: 0xD091, - 34969 - 11905: 0xD092, - 34970 - 11905: 0xD093, - 34971 - 11905: 0xD094, - 34972 - 11905: 0xCDE0, - 34973 - 11905: 0xD095, - 34974 - 11905: 0xD096, - 34975 - 11905: 0xD097, - 34976 - 11905: 0xD098, - 34977 - 11905: 0xD099, - 34978 - 11905: 0xF1C8, - 34979 - 11905: 0xD09A, - 34980 - 11905: 0xD9F3, - 34981 - 11905: 0xD09B, - 34982 - 11905: 0xD09C, - 34983 - 11905: 0xD09D, - 34984 - 11905: 0xD09E, - 34985 - 11905: 0xD09F, - 34986 - 11905: 0xD0A0, - 34987 - 11905: 0xB1BB, - 34988 - 11905: 0xD140, - 34989 - 11905: 0xCFAE, - 34990 - 11905: 0xD141, - 34991 - 11905: 0xD142, - 34992 - 11905: 0xD143, - 34993 - 11905: 0xB8A4, - 34994 - 11905: 0xD144, - 34995 - 11905: 0xD145, - 34996 - 11905: 0xD146, - 34997 - 11905: 0xD147, - 34998 - 11905: 0xD148, - 34999 - 11905: 0xF1CA, - 35000 - 11905: 0xD149, - 35001 - 11905: 0xD14A, - 35002 - 11905: 0xD14B, - 35003 - 11905: 0xD14C, - 35004 - 11905: 0xF1CB, - 35005 - 11905: 0xD14D, - 35006 - 11905: 0xD14E, - 35007 - 11905: 0xD14F, - 35008 - 11905: 0xD150, - 35009 - 11905: 0xB2C3, - 35010 - 11905: 0xC1D1, - 35011 - 11905: 0xD151, - 35012 - 11905: 0xD152, - 35013 - 11905: 0xD7B0, - 35014 - 11905: 0xF1C9, - 35015 - 11905: 0xD153, - 35016 - 11905: 0xD154, - 35017 - 11905: 0xF1CC, - 35018 - 11905: 0xD155, - 35019 - 11905: 0xD156, - 35020 - 11905: 0xD157, - 35021 - 11905: 0xD158, - 35022 - 11905: 0xF1CE, - 35023 - 11905: 0xD159, - 35024 - 11905: 0xD15A, - 35025 - 11905: 0xD15B, - 35026 - 11905: 0xD9F6, - 35027 - 11905: 0xD15C, - 35028 - 11905: 0xD2E1, - 35029 - 11905: 0xD4A3, - 35030 - 11905: 0xD15D, - 35031 - 11905: 0xD15E, - 35032 - 11905: 0xF4C3, - 35033 - 11905: 0xC8B9, - 35034 - 11905: 0xD15F, - 35035 - 11905: 0xD160, - 35036 - 11905: 0xD161, - 35037 - 11905: 0xD162, - 35038 - 11905: 0xD163, - 35039 - 11905: 0xF4C4, - 35040 - 11905: 0xD164, - 35041 - 11905: 0xD165, - 35042 - 11905: 0xF1CD, - 35043 - 11905: 0xF1CF, - 35044 - 11905: 0xBFE3, - 35045 - 11905: 0xF1D0, - 35046 - 11905: 0xD166, - 35047 - 11905: 0xD167, - 35048 - 11905: 0xF1D4, - 35049 - 11905: 0xD168, - 35050 - 11905: 0xD169, - 35051 - 11905: 0xD16A, - 35052 - 11905: 0xD16B, - 35053 - 11905: 0xD16C, - 35054 - 11905: 0xD16D, - 35055 - 11905: 0xD16E, - 35056 - 11905: 0xF1D6, - 35057 - 11905: 0xF1D1, - 35058 - 11905: 0xD16F, - 35059 - 11905: 0xC9D1, - 35060 - 11905: 0xC5E1, - 35061 - 11905: 0xD170, - 35062 - 11905: 0xD171, - 35063 - 11905: 0xD172, - 35064 - 11905: 0xC2E3, - 35065 - 11905: 0xB9FC, - 35066 - 11905: 0xD173, - 35067 - 11905: 0xD174, - 35068 - 11905: 0xF1D3, - 35069 - 11905: 0xD175, - 35070 - 11905: 0xF1D5, - 35071 - 11905: 0xD176, - 35072 - 11905: 0xD177, - 35073 - 11905: 0xD178, - 35074 - 11905: 0xB9D3, - 35075 - 11905: 0xD179, - 35076 - 11905: 0xD17A, - 35077 - 11905: 0xD17B, - 35078 - 11905: 0xD17C, - 35079 - 11905: 0xD17D, - 35080 - 11905: 0xD17E, - 35081 - 11905: 0xD180, - 35082 - 11905: 0xF1DB, - 35083 - 11905: 0xD181, - 35084 - 11905: 0xD182, - 35085 - 11905: 0xD183, - 35086 - 11905: 0xD184, - 35087 - 11905: 0xD185, - 35088 - 11905: 0xBAD6, - 35089 - 11905: 0xD186, - 35090 - 11905: 0xB0FD, - 35091 - 11905: 0xF1D9, - 35092 - 11905: 0xD187, - 35093 - 11905: 0xD188, - 35094 - 11905: 0xD189, - 35095 - 11905: 0xD18A, - 35096 - 11905: 0xD18B, - 35097 - 11905: 0xF1D8, - 35098 - 11905: 0xF1D2, - 35099 - 11905: 0xF1DA, - 35100 - 11905: 0xD18C, - 35101 - 11905: 0xD18D, - 35102 - 11905: 0xD18E, - 35103 - 11905: 0xD18F, - 35104 - 11905: 0xD190, - 35105 - 11905: 0xF1D7, - 35106 - 11905: 0xD191, - 35107 - 11905: 0xD192, - 35108 - 11905: 0xD193, - 35109 - 11905: 0xC8EC, - 35110 - 11905: 0xD194, - 35111 - 11905: 0xD195, - 35112 - 11905: 0xD196, - 35113 - 11905: 0xD197, - 35114 - 11905: 0xCDCA, - 35115 - 11905: 0xF1DD, - 35116 - 11905: 0xD198, - 35117 - 11905: 0xD199, - 35118 - 11905: 0xD19A, - 35119 - 11905: 0xD19B, - 35120 - 11905: 0xE5BD, - 35121 - 11905: 0xD19C, - 35122 - 11905: 0xD19D, - 35123 - 11905: 0xD19E, - 35124 - 11905: 0xF1DC, - 35125 - 11905: 0xD19F, - 35126 - 11905: 0xF1DE, - 35127 - 11905: 0xD1A0, - 35128 - 11905: 0xD240, - 35129 - 11905: 0xD241, - 35130 - 11905: 0xD242, - 35131 - 11905: 0xD243, - 35132 - 11905: 0xD244, - 35133 - 11905: 0xD245, - 35134 - 11905: 0xD246, - 35135 - 11905: 0xD247, - 35136 - 11905: 0xD248, - 35137 - 11905: 0xF1DF, - 35138 - 11905: 0xD249, - 35139 - 11905: 0xD24A, - 35140 - 11905: 0xCFE5, - 35141 - 11905: 0xD24B, - 35142 - 11905: 0xD24C, - 35143 - 11905: 0xD24D, - 35144 - 11905: 0xD24E, - 35145 - 11905: 0xD24F, - 35146 - 11905: 0xD250, - 35147 - 11905: 0xD251, - 35148 - 11905: 0xD252, - 35149 - 11905: 0xD253, - 35150 - 11905: 0xD254, - 35151 - 11905: 0xD255, - 35152 - 11905: 0xD256, - 35153 - 11905: 0xD257, - 35154 - 11905: 0xD258, - 35155 - 11905: 0xD259, - 35156 - 11905: 0xD25A, - 35157 - 11905: 0xD25B, - 35158 - 11905: 0xD25C, - 35159 - 11905: 0xD25D, - 35160 - 11905: 0xD25E, - 35161 - 11905: 0xD25F, - 35162 - 11905: 0xD260, - 35163 - 11905: 0xD261, - 35164 - 11905: 0xD262, - 35165 - 11905: 0xD263, - 35166 - 11905: 0xF4C5, - 35167 - 11905: 0xBDF3, - 35168 - 11905: 0xD264, - 35169 - 11905: 0xD265, - 35170 - 11905: 0xD266, - 35171 - 11905: 0xD267, - 35172 - 11905: 0xD268, - 35173 - 11905: 0xD269, - 35174 - 11905: 0xF1E0, - 35175 - 11905: 0xD26A, - 35176 - 11905: 0xD26B, - 35177 - 11905: 0xD26C, - 35178 - 11905: 0xD26D, - 35179 - 11905: 0xD26E, - 35180 - 11905: 0xD26F, - 35181 - 11905: 0xD270, - 35182 - 11905: 0xD271, - 35183 - 11905: 0xD272, - 35184 - 11905: 0xD273, - 35185 - 11905: 0xD274, - 35186 - 11905: 0xD275, - 35187 - 11905: 0xD276, - 35188 - 11905: 0xD277, - 35189 - 11905: 0xD278, - 35190 - 11905: 0xD279, - 35191 - 11905: 0xD27A, - 35192 - 11905: 0xD27B, - 35193 - 11905: 0xD27C, - 35194 - 11905: 0xD27D, - 35195 - 11905: 0xF1E1, - 35196 - 11905: 0xD27E, - 35197 - 11905: 0xD280, - 35198 - 11905: 0xD281, - 35199 - 11905: 0xCEF7, - 35200 - 11905: 0xD282, - 35201 - 11905: 0xD2AA, - 35202 - 11905: 0xD283, - 35203 - 11905: 0xF1FB, - 35204 - 11905: 0xD284, - 35205 - 11905: 0xD285, - 35206 - 11905: 0xB8B2, - 35207 - 11905: 0xD286, - 35208 - 11905: 0xD287, - 35209 - 11905: 0xD288, - 35210 - 11905: 0xD289, - 35211 - 11905: 0xD28A, - 35212 - 11905: 0xD28B, - 35213 - 11905: 0xD28C, - 35214 - 11905: 0xD28D, - 35215 - 11905: 0xD28E, - 35216 - 11905: 0xD28F, - 35217 - 11905: 0xD290, - 35218 - 11905: 0xD291, - 35219 - 11905: 0xD292, - 35220 - 11905: 0xD293, - 35221 - 11905: 0xD294, - 35222 - 11905: 0xD295, - 35223 - 11905: 0xD296, - 35224 - 11905: 0xD297, - 35225 - 11905: 0xD298, - 35226 - 11905: 0xD299, - 35227 - 11905: 0xD29A, - 35228 - 11905: 0xD29B, - 35229 - 11905: 0xD29C, - 35230 - 11905: 0xD29D, - 35231 - 11905: 0xD29E, - 35232 - 11905: 0xD29F, - 35233 - 11905: 0xD2A0, - 35234 - 11905: 0xD340, - 35235 - 11905: 0xD341, - 35236 - 11905: 0xD342, - 35237 - 11905: 0xD343, - 35238 - 11905: 0xD344, - 35239 - 11905: 0xD345, - 35240 - 11905: 0xD346, - 35241 - 11905: 0xD347, - 35242 - 11905: 0xD348, - 35243 - 11905: 0xD349, - 35244 - 11905: 0xD34A, - 35245 - 11905: 0xD34B, - 35246 - 11905: 0xD34C, - 35247 - 11905: 0xD34D, - 35248 - 11905: 0xD34E, - 35249 - 11905: 0xD34F, - 35250 - 11905: 0xD350, - 35251 - 11905: 0xD351, - 35252 - 11905: 0xD352, - 35253 - 11905: 0xD353, - 35254 - 11905: 0xD354, - 35255 - 11905: 0xD355, - 35256 - 11905: 0xD356, - 35257 - 11905: 0xD357, - 35258 - 11905: 0xD358, - 35259 - 11905: 0xD359, - 35260 - 11905: 0xD35A, - 35261 - 11905: 0xD35B, - 35262 - 11905: 0xD35C, - 35263 - 11905: 0xD35D, - 35264 - 11905: 0xD35E, - 35265 - 11905: 0xBCFB, - 35266 - 11905: 0xB9DB, - 35267 - 11905: 0xD35F, - 35268 - 11905: 0xB9E6, - 35269 - 11905: 0xC3D9, - 35270 - 11905: 0xCAD3, - 35271 - 11905: 0xEAE8, - 35272 - 11905: 0xC0C0, - 35273 - 11905: 0xBEF5, - 35274 - 11905: 0xEAE9, - 35275 - 11905: 0xEAEA, - 35276 - 11905: 0xEAEB, - 35277 - 11905: 0xD360, - 35278 - 11905: 0xEAEC, - 35279 - 11905: 0xEAED, - 35280 - 11905: 0xEAEE, - 35281 - 11905: 0xEAEF, - 35282 - 11905: 0xBDC7, - 35283 - 11905: 0xD361, - 35284 - 11905: 0xD362, - 35285 - 11905: 0xD363, - 35286 - 11905: 0xF5FB, - 35287 - 11905: 0xD364, - 35288 - 11905: 0xD365, - 35289 - 11905: 0xD366, - 35290 - 11905: 0xF5FD, - 35291 - 11905: 0xD367, - 35292 - 11905: 0xF5FE, - 35293 - 11905: 0xD368, - 35294 - 11905: 0xF5FC, - 35295 - 11905: 0xD369, - 35296 - 11905: 0xD36A, - 35297 - 11905: 0xD36B, - 35298 - 11905: 0xD36C, - 35299 - 11905: 0xBDE2, - 35300 - 11905: 0xD36D, - 35301 - 11905: 0xF6A1, - 35302 - 11905: 0xB4A5, - 35303 - 11905: 0xD36E, - 35304 - 11905: 0xD36F, - 35305 - 11905: 0xD370, - 35306 - 11905: 0xD371, - 35307 - 11905: 0xF6A2, - 35308 - 11905: 0xD372, - 35309 - 11905: 0xD373, - 35310 - 11905: 0xD374, - 35311 - 11905: 0xF6A3, - 35312 - 11905: 0xD375, - 35313 - 11905: 0xD376, - 35314 - 11905: 0xD377, - 35315 - 11905: 0xECB2, - 35316 - 11905: 0xD378, - 35317 - 11905: 0xD379, - 35318 - 11905: 0xD37A, - 35319 - 11905: 0xD37B, - 35320 - 11905: 0xD37C, - 35321 - 11905: 0xD37D, - 35322 - 11905: 0xD37E, - 35323 - 11905: 0xD380, - 35324 - 11905: 0xD381, - 35325 - 11905: 0xD382, - 35326 - 11905: 0xD383, - 35327 - 11905: 0xD384, - 35328 - 11905: 0xD1D4, - 35329 - 11905: 0xD385, - 35330 - 11905: 0xD386, - 35331 - 11905: 0xD387, - 35332 - 11905: 0xD388, - 35333 - 11905: 0xD389, - 35334 - 11905: 0xD38A, - 35335 - 11905: 0xD9EA, - 35336 - 11905: 0xD38B, - 35337 - 11905: 0xD38C, - 35338 - 11905: 0xD38D, - 35339 - 11905: 0xD38E, - 35340 - 11905: 0xD38F, - 35341 - 11905: 0xD390, - 35342 - 11905: 0xD391, - 35343 - 11905: 0xD392, - 35344 - 11905: 0xD393, - 35345 - 11905: 0xD394, - 35346 - 11905: 0xD395, - 35347 - 11905: 0xD396, - 35348 - 11905: 0xD397, - 35349 - 11905: 0xD398, - 35350 - 11905: 0xD399, - 35351 - 11905: 0xD39A, - 35352 - 11905: 0xD39B, - 35353 - 11905: 0xD39C, - 35354 - 11905: 0xD39D, - 35355 - 11905: 0xD39E, - 35356 - 11905: 0xD39F, - 35357 - 11905: 0xD3A0, - 35358 - 11905: 0xD440, - 35359 - 11905: 0xD441, - 35360 - 11905: 0xD442, - 35361 - 11905: 0xD443, - 35362 - 11905: 0xD444, - 35363 - 11905: 0xD445, - 35364 - 11905: 0xD446, - 35365 - 11905: 0xD447, - 35366 - 11905: 0xD448, - 35367 - 11905: 0xD449, - 35368 - 11905: 0xD44A, - 35369 - 11905: 0xD44B, - 35370 - 11905: 0xD44C, - 35371 - 11905: 0xD44D, - 35372 - 11905: 0xD44E, - 35373 - 11905: 0xD44F, - 35374 - 11905: 0xD450, - 35375 - 11905: 0xD451, - 35376 - 11905: 0xD452, - 35377 - 11905: 0xD453, - 35378 - 11905: 0xD454, - 35379 - 11905: 0xD455, - 35380 - 11905: 0xD456, - 35381 - 11905: 0xD457, - 35382 - 11905: 0xD458, - 35383 - 11905: 0xD459, - 35384 - 11905: 0xD45A, - 35385 - 11905: 0xD45B, - 35386 - 11905: 0xD45C, - 35387 - 11905: 0xD45D, - 35388 - 11905: 0xD45E, - 35389 - 11905: 0xD45F, - 35390 - 11905: 0xF6A4, - 35391 - 11905: 0xD460, - 35392 - 11905: 0xD461, - 35393 - 11905: 0xD462, - 35394 - 11905: 0xD463, - 35395 - 11905: 0xD464, - 35396 - 11905: 0xD465, - 35397 - 11905: 0xD466, - 35398 - 11905: 0xD467, - 35399 - 11905: 0xD468, - 35400 - 11905: 0xEEBA, - 35401 - 11905: 0xD469, - 35402 - 11905: 0xD46A, - 35403 - 11905: 0xD46B, - 35404 - 11905: 0xD46C, - 35405 - 11905: 0xD46D, - 35406 - 11905: 0xD46E, - 35407 - 11905: 0xD46F, - 35408 - 11905: 0xD470, - 35409 - 11905: 0xD471, - 35410 - 11905: 0xD472, - 35411 - 11905: 0xD473, - 35412 - 11905: 0xD474, - 35413 - 11905: 0xD475, - 35414 - 11905: 0xD476, - 35415 - 11905: 0xD477, - 35416 - 11905: 0xD478, - 35417 - 11905: 0xD479, - 35418 - 11905: 0xD47A, - 35419 - 11905: 0xD47B, - 35420 - 11905: 0xD47C, - 35421 - 11905: 0xD47D, - 35422 - 11905: 0xD47E, - 35423 - 11905: 0xD480, - 35424 - 11905: 0xD481, - 35425 - 11905: 0xD482, - 35426 - 11905: 0xD483, - 35427 - 11905: 0xD484, - 35428 - 11905: 0xD485, - 35429 - 11905: 0xD486, - 35430 - 11905: 0xD487, - 35431 - 11905: 0xD488, - 35432 - 11905: 0xD489, - 35433 - 11905: 0xD48A, - 35434 - 11905: 0xD48B, - 35435 - 11905: 0xD48C, - 35436 - 11905: 0xD48D, - 35437 - 11905: 0xD48E, - 35438 - 11905: 0xD48F, - 35439 - 11905: 0xD490, - 35440 - 11905: 0xD491, - 35441 - 11905: 0xD492, - 35442 - 11905: 0xD493, - 35443 - 11905: 0xD494, - 35444 - 11905: 0xD495, - 35445 - 11905: 0xD496, - 35446 - 11905: 0xD497, - 35447 - 11905: 0xD498, - 35448 - 11905: 0xD499, - 35449 - 11905: 0xD5B2, - 35450 - 11905: 0xD49A, - 35451 - 11905: 0xD49B, - 35452 - 11905: 0xD49C, - 35453 - 11905: 0xD49D, - 35454 - 11905: 0xD49E, - 35455 - 11905: 0xD49F, - 35456 - 11905: 0xD4A0, - 35457 - 11905: 0xD540, - 35458 - 11905: 0xD541, - 35459 - 11905: 0xD542, - 35460 - 11905: 0xD543, - 35461 - 11905: 0xD544, - 35462 - 11905: 0xD545, - 35463 - 11905: 0xD546, - 35464 - 11905: 0xD547, - 35465 - 11905: 0xD3FE, - 35466 - 11905: 0xCCDC, - 35467 - 11905: 0xD548, - 35468 - 11905: 0xD549, - 35469 - 11905: 0xD54A, - 35470 - 11905: 0xD54B, - 35471 - 11905: 0xD54C, - 35472 - 11905: 0xD54D, - 35473 - 11905: 0xD54E, - 35474 - 11905: 0xD54F, - 35475 - 11905: 0xCAC4, - 35476 - 11905: 0xD550, - 35477 - 11905: 0xD551, - 35478 - 11905: 0xD552, - 35479 - 11905: 0xD553, - 35480 - 11905: 0xD554, - 35481 - 11905: 0xD555, - 35482 - 11905: 0xD556, - 35483 - 11905: 0xD557, - 35484 - 11905: 0xD558, - 35485 - 11905: 0xD559, - 35486 - 11905: 0xD55A, - 35487 - 11905: 0xD55B, - 35488 - 11905: 0xD55C, - 35489 - 11905: 0xD55D, - 35490 - 11905: 0xD55E, - 35491 - 11905: 0xD55F, - 35492 - 11905: 0xD560, - 35493 - 11905: 0xD561, - 35494 - 11905: 0xD562, - 35495 - 11905: 0xD563, - 35496 - 11905: 0xD564, - 35497 - 11905: 0xD565, - 35498 - 11905: 0xD566, - 35499 - 11905: 0xD567, - 35500 - 11905: 0xD568, - 35501 - 11905: 0xD569, - 35502 - 11905: 0xD56A, - 35503 - 11905: 0xD56B, - 35504 - 11905: 0xD56C, - 35505 - 11905: 0xD56D, - 35506 - 11905: 0xD56E, - 35507 - 11905: 0xD56F, - 35508 - 11905: 0xD570, - 35509 - 11905: 0xD571, - 35510 - 11905: 0xD572, - 35511 - 11905: 0xD573, - 35512 - 11905: 0xD574, - 35513 - 11905: 0xD575, - 35514 - 11905: 0xD576, - 35515 - 11905: 0xD577, - 35516 - 11905: 0xD578, - 35517 - 11905: 0xD579, - 35518 - 11905: 0xD57A, - 35519 - 11905: 0xD57B, - 35520 - 11905: 0xD57C, - 35521 - 11905: 0xD57D, - 35522 - 11905: 0xD57E, - 35523 - 11905: 0xD580, - 35524 - 11905: 0xD581, - 35525 - 11905: 0xD582, - 35526 - 11905: 0xD583, - 35527 - 11905: 0xD584, - 35528 - 11905: 0xD585, - 35529 - 11905: 0xD586, - 35530 - 11905: 0xD587, - 35531 - 11905: 0xD588, - 35532 - 11905: 0xD589, - 35533 - 11905: 0xD58A, - 35534 - 11905: 0xD58B, - 35535 - 11905: 0xD58C, - 35536 - 11905: 0xD58D, - 35537 - 11905: 0xD58E, - 35538 - 11905: 0xD58F, - 35539 - 11905: 0xD590, - 35540 - 11905: 0xD591, - 35541 - 11905: 0xD592, - 35542 - 11905: 0xD593, - 35543 - 11905: 0xD594, - 35544 - 11905: 0xD595, - 35545 - 11905: 0xD596, - 35546 - 11905: 0xD597, - 35547 - 11905: 0xD598, - 35548 - 11905: 0xD599, - 35549 - 11905: 0xD59A, - 35550 - 11905: 0xD59B, - 35551 - 11905: 0xD59C, - 35552 - 11905: 0xD59D, - 35553 - 11905: 0xD59E, - 35554 - 11905: 0xD59F, - 35555 - 11905: 0xD5A0, - 35556 - 11905: 0xD640, - 35557 - 11905: 0xD641, - 35558 - 11905: 0xD642, - 35559 - 11905: 0xD643, - 35560 - 11905: 0xD644, - 35561 - 11905: 0xD645, - 35562 - 11905: 0xD646, - 35563 - 11905: 0xD647, - 35564 - 11905: 0xD648, - 35565 - 11905: 0xD649, - 35566 - 11905: 0xD64A, - 35567 - 11905: 0xD64B, - 35568 - 11905: 0xD64C, - 35569 - 11905: 0xD64D, - 35570 - 11905: 0xD64E, - 35571 - 11905: 0xD64F, - 35572 - 11905: 0xD650, - 35573 - 11905: 0xD651, - 35574 - 11905: 0xD652, - 35575 - 11905: 0xD653, - 35576 - 11905: 0xD654, - 35577 - 11905: 0xD655, - 35578 - 11905: 0xD656, - 35579 - 11905: 0xD657, - 35580 - 11905: 0xD658, - 35581 - 11905: 0xD659, - 35582 - 11905: 0xD65A, - 35583 - 11905: 0xD65B, - 35584 - 11905: 0xD65C, - 35585 - 11905: 0xD65D, - 35586 - 11905: 0xD65E, - 35587 - 11905: 0xD65F, - 35588 - 11905: 0xD660, - 35589 - 11905: 0xD661, - 35590 - 11905: 0xD662, - 35591 - 11905: 0xE5C0, - 35592 - 11905: 0xD663, - 35593 - 11905: 0xD664, - 35594 - 11905: 0xD665, - 35595 - 11905: 0xD666, - 35596 - 11905: 0xD667, - 35597 - 11905: 0xD668, - 35598 - 11905: 0xD669, - 35599 - 11905: 0xD66A, - 35600 - 11905: 0xD66B, - 35601 - 11905: 0xD66C, - 35602 - 11905: 0xD66D, - 35603 - 11905: 0xD66E, - 35604 - 11905: 0xD66F, - 35605 - 11905: 0xD670, - 35606 - 11905: 0xD671, - 35607 - 11905: 0xD672, - 35608 - 11905: 0xD673, - 35609 - 11905: 0xD674, - 35610 - 11905: 0xD675, - 35611 - 11905: 0xD676, - 35612 - 11905: 0xD677, - 35613 - 11905: 0xD678, - 35614 - 11905: 0xD679, - 35615 - 11905: 0xD67A, - 35616 - 11905: 0xD67B, - 35617 - 11905: 0xD67C, - 35618 - 11905: 0xD67D, - 35619 - 11905: 0xD67E, - 35620 - 11905: 0xD680, - 35621 - 11905: 0xD681, - 35622 - 11905: 0xF6A5, - 35623 - 11905: 0xD682, - 35624 - 11905: 0xD683, - 35625 - 11905: 0xD684, - 35626 - 11905: 0xD685, - 35627 - 11905: 0xD686, - 35628 - 11905: 0xD687, - 35629 - 11905: 0xD688, - 35630 - 11905: 0xD689, - 35631 - 11905: 0xD68A, - 35632 - 11905: 0xD68B, - 35633 - 11905: 0xD68C, - 35634 - 11905: 0xD68D, - 35635 - 11905: 0xD68E, - 35636 - 11905: 0xD68F, - 35637 - 11905: 0xD690, - 35638 - 11905: 0xD691, - 35639 - 11905: 0xD692, - 35640 - 11905: 0xD693, - 35641 - 11905: 0xD694, - 35642 - 11905: 0xD695, - 35643 - 11905: 0xD696, - 35644 - 11905: 0xD697, - 35645 - 11905: 0xD698, - 35646 - 11905: 0xD699, - 35647 - 11905: 0xD69A, - 35648 - 11905: 0xD69B, - 35649 - 11905: 0xD69C, - 35650 - 11905: 0xD69D, - 35651 - 11905: 0xD69E, - 35652 - 11905: 0xD69F, - 35653 - 11905: 0xD6A0, - 35654 - 11905: 0xD740, - 35655 - 11905: 0xD741, - 35656 - 11905: 0xD742, - 35657 - 11905: 0xD743, - 35658 - 11905: 0xD744, - 35659 - 11905: 0xD745, - 35660 - 11905: 0xD746, - 35661 - 11905: 0xD747, - 35662 - 11905: 0xD748, - 35663 - 11905: 0xD749, - 35664 - 11905: 0xD74A, - 35665 - 11905: 0xD74B, - 35666 - 11905: 0xD74C, - 35667 - 11905: 0xD74D, - 35668 - 11905: 0xD74E, - 35669 - 11905: 0xD74F, - 35670 - 11905: 0xD750, - 35671 - 11905: 0xD751, - 35672 - 11905: 0xD752, - 35673 - 11905: 0xD753, - 35674 - 11905: 0xD754, - 35675 - 11905: 0xD755, - 35676 - 11905: 0xD756, - 35677 - 11905: 0xD757, - 35678 - 11905: 0xD758, - 35679 - 11905: 0xD759, - 35680 - 11905: 0xD75A, - 35681 - 11905: 0xD75B, - 35682 - 11905: 0xD75C, - 35683 - 11905: 0xD75D, - 35684 - 11905: 0xD75E, - 35685 - 11905: 0xD75F, - 35686 - 11905: 0xBEAF, - 35687 - 11905: 0xD760, - 35688 - 11905: 0xD761, - 35689 - 11905: 0xD762, - 35690 - 11905: 0xD763, - 35691 - 11905: 0xD764, - 35692 - 11905: 0xC6A9, - 35693 - 11905: 0xD765, - 35694 - 11905: 0xD766, - 35695 - 11905: 0xD767, - 35696 - 11905: 0xD768, - 35697 - 11905: 0xD769, - 35698 - 11905: 0xD76A, - 35699 - 11905: 0xD76B, - 35700 - 11905: 0xD76C, - 35701 - 11905: 0xD76D, - 35702 - 11905: 0xD76E, - 35703 - 11905: 0xD76F, - 35704 - 11905: 0xD770, - 35705 - 11905: 0xD771, - 35706 - 11905: 0xD772, - 35707 - 11905: 0xD773, - 35708 - 11905: 0xD774, - 35709 - 11905: 0xD775, - 35710 - 11905: 0xD776, - 35711 - 11905: 0xD777, - 35712 - 11905: 0xD778, - 35713 - 11905: 0xD779, - 35714 - 11905: 0xD77A, - 35715 - 11905: 0xD77B, - 35716 - 11905: 0xD77C, - 35717 - 11905: 0xD77D, - 35718 - 11905: 0xD77E, - 35719 - 11905: 0xD780, - 35720 - 11905: 0xD781, - 35721 - 11905: 0xD782, - 35722 - 11905: 0xD783, - 35723 - 11905: 0xD784, - 35724 - 11905: 0xD785, - 35725 - 11905: 0xD786, - 35726 - 11905: 0xD787, - 35727 - 11905: 0xD788, - 35728 - 11905: 0xD789, - 35729 - 11905: 0xD78A, - 35730 - 11905: 0xD78B, - 35731 - 11905: 0xD78C, - 35732 - 11905: 0xD78D, - 35733 - 11905: 0xD78E, - 35734 - 11905: 0xD78F, - 35735 - 11905: 0xD790, - 35736 - 11905: 0xD791, - 35737 - 11905: 0xD792, - 35738 - 11905: 0xD793, - 35739 - 11905: 0xD794, - 35740 - 11905: 0xD795, - 35741 - 11905: 0xD796, - 35742 - 11905: 0xD797, - 35743 - 11905: 0xD798, - 35744 - 11905: 0xDAA5, - 35745 - 11905: 0xBCC6, - 35746 - 11905: 0xB6A9, - 35747 - 11905: 0xB8BC, - 35748 - 11905: 0xC8CF, - 35749 - 11905: 0xBCA5, - 35750 - 11905: 0xDAA6, - 35751 - 11905: 0xDAA7, - 35752 - 11905: 0xCCD6, - 35753 - 11905: 0xC8C3, - 35754 - 11905: 0xDAA8, - 35755 - 11905: 0xC6FD, - 35756 - 11905: 0xD799, - 35757 - 11905: 0xD1B5, - 35758 - 11905: 0xD2E9, - 35759 - 11905: 0xD1B6, - 35760 - 11905: 0xBCC7, - 35761 - 11905: 0xD79A, - 35762 - 11905: 0xBDB2, - 35763 - 11905: 0xBBE4, - 35764 - 11905: 0xDAA9, - 35765 - 11905: 0xDAAA, - 35766 - 11905: 0xD1C8, - 35767 - 11905: 0xDAAB, - 35768 - 11905: 0xD0ED, - 35769 - 11905: 0xB6EF, - 35770 - 11905: 0xC2DB, - 35771 - 11905: 0xD79B, - 35772 - 11905: 0xCBCF, - 35773 - 11905: 0xB7ED, - 35774 - 11905: 0xC9E8, - 35775 - 11905: 0xB7C3, - 35776 - 11905: 0xBEF7, - 35777 - 11905: 0xD6A4, - 35778 - 11905: 0xDAAC, - 35779 - 11905: 0xDAAD, - 35780 - 11905: 0xC6C0, - 35781 - 11905: 0xD7E7, - 35782 - 11905: 0xCAB6, - 35783 - 11905: 0xD79C, - 35784 - 11905: 0xD5A9, - 35785 - 11905: 0xCBDF, - 35786 - 11905: 0xD5EF, - 35787 - 11905: 0xDAAE, - 35788 - 11905: 0xD6DF, - 35789 - 11905: 0xB4CA, - 35790 - 11905: 0xDAB0, - 35791 - 11905: 0xDAAF, - 35792 - 11905: 0xD79D, - 35793 - 11905: 0xD2EB, - 35794 - 11905: 0xDAB1, - 35795 - 11905: 0xDAB2, - 35796 - 11905: 0xDAB3, - 35797 - 11905: 0xCAD4, - 35798 - 11905: 0xDAB4, - 35799 - 11905: 0xCAAB, - 35800 - 11905: 0xDAB5, - 35801 - 11905: 0xDAB6, - 35802 - 11905: 0xB3CF, - 35803 - 11905: 0xD6EF, - 35804 - 11905: 0xDAB7, - 35805 - 11905: 0xBBB0, - 35806 - 11905: 0xB5AE, - 35807 - 11905: 0xDAB8, - 35808 - 11905: 0xDAB9, - 35809 - 11905: 0xB9EE, - 35810 - 11905: 0xD1AF, - 35811 - 11905: 0xD2E8, - 35812 - 11905: 0xDABA, - 35813 - 11905: 0xB8C3, - 35814 - 11905: 0xCFEA, - 35815 - 11905: 0xB2EF, - 35816 - 11905: 0xDABB, - 35817 - 11905: 0xDABC, - 35818 - 11905: 0xD79E, - 35819 - 11905: 0xBDEB, - 35820 - 11905: 0xCEDC, - 35821 - 11905: 0xD3EF, - 35822 - 11905: 0xDABD, - 35823 - 11905: 0xCEF3, - 35824 - 11905: 0xDABE, - 35825 - 11905: 0xD3D5, - 35826 - 11905: 0xBBE5, - 35827 - 11905: 0xDABF, - 35828 - 11905: 0xCBB5, - 35829 - 11905: 0xCBD0, - 35830 - 11905: 0xDAC0, - 35831 - 11905: 0xC7EB, - 35832 - 11905: 0xD6EE, - 35833 - 11905: 0xDAC1, - 35834 - 11905: 0xC5B5, - 35835 - 11905: 0xB6C1, - 35836 - 11905: 0xDAC2, - 35837 - 11905: 0xB7CC, - 35838 - 11905: 0xBFCE, - 35839 - 11905: 0xDAC3, - 35840 - 11905: 0xDAC4, - 35841 - 11905: 0xCBAD, - 35842 - 11905: 0xDAC5, - 35843 - 11905: 0xB5F7, - 35844 - 11905: 0xDAC6, - 35845 - 11905: 0xC1C2, - 35846 - 11905: 0xD7BB, - 35847 - 11905: 0xDAC7, - 35848 - 11905: 0xCCB8, - 35849 - 11905: 0xD79F, - 35850 - 11905: 0xD2EA, - 35851 - 11905: 0xC4B1, - 35852 - 11905: 0xDAC8, - 35853 - 11905: 0xB5FD, - 35854 - 11905: 0xBBD1, - 35855 - 11905: 0xDAC9, - 35856 - 11905: 0xD0B3, - 35857 - 11905: 0xDACA, - 35858 - 11905: 0xDACB, - 35859 - 11905: 0xCEBD, - 35860 - 11905: 0xDACC, - 35861 - 11905: 0xDACD, - 35862 - 11905: 0xDACE, - 35863 - 11905: 0xB2F7, - 35864 - 11905: 0xDAD1, - 35865 - 11905: 0xDACF, - 35866 - 11905: 0xD1E8, - 35867 - 11905: 0xDAD0, - 35868 - 11905: 0xC3D5, - 35869 - 11905: 0xDAD2, - 35870 - 11905: 0xD7A0, - 35871 - 11905: 0xDAD3, - 35872 - 11905: 0xDAD4, - 35873 - 11905: 0xDAD5, - 35874 - 11905: 0xD0BB, - 35875 - 11905: 0xD2A5, - 35876 - 11905: 0xB0F9, - 35877 - 11905: 0xDAD6, - 35878 - 11905: 0xC7AB, - 35879 - 11905: 0xDAD7, - 35880 - 11905: 0xBDF7, - 35881 - 11905: 0xC3A1, - 35882 - 11905: 0xDAD8, - 35883 - 11905: 0xDAD9, - 35884 - 11905: 0xC3FD, - 35885 - 11905: 0xCCB7, - 35886 - 11905: 0xDADA, - 35887 - 11905: 0xDADB, - 35888 - 11905: 0xC0BE, - 35889 - 11905: 0xC6D7, - 35890 - 11905: 0xDADC, - 35891 - 11905: 0xDADD, - 35892 - 11905: 0xC7B4, - 35893 - 11905: 0xDADE, - 35894 - 11905: 0xDADF, - 35895 - 11905: 0xB9C8, - 35896 - 11905: 0xD840, - 35897 - 11905: 0xD841, - 35898 - 11905: 0xD842, - 35899 - 11905: 0xD843, - 35900 - 11905: 0xD844, - 35901 - 11905: 0xD845, - 35902 - 11905: 0xD846, - 35903 - 11905: 0xD847, - 35904 - 11905: 0xD848, - 35905 - 11905: 0xBBED, - 35906 - 11905: 0xD849, - 35907 - 11905: 0xD84A, - 35908 - 11905: 0xD84B, - 35909 - 11905: 0xD84C, - 35910 - 11905: 0xB6B9, - 35911 - 11905: 0xF4F8, - 35912 - 11905: 0xD84D, - 35913 - 11905: 0xF4F9, - 35914 - 11905: 0xD84E, - 35915 - 11905: 0xD84F, - 35916 - 11905: 0xCDE3, - 35917 - 11905: 0xD850, - 35918 - 11905: 0xD851, - 35919 - 11905: 0xD852, - 35920 - 11905: 0xD853, - 35921 - 11905: 0xD854, - 35922 - 11905: 0xD855, - 35923 - 11905: 0xD856, - 35924 - 11905: 0xD857, - 35925 - 11905: 0xF5B9, - 35926 - 11905: 0xD858, - 35927 - 11905: 0xD859, - 35928 - 11905: 0xD85A, - 35929 - 11905: 0xD85B, - 35930 - 11905: 0xEBE0, - 35931 - 11905: 0xD85C, - 35932 - 11905: 0xD85D, - 35933 - 11905: 0xD85E, - 35934 - 11905: 0xD85F, - 35935 - 11905: 0xD860, - 35936 - 11905: 0xD861, - 35937 - 11905: 0xCFF3, - 35938 - 11905: 0xBBBF, - 35939 - 11905: 0xD862, - 35940 - 11905: 0xD863, - 35941 - 11905: 0xD864, - 35942 - 11905: 0xD865, - 35943 - 11905: 0xD866, - 35944 - 11905: 0xD867, - 35945 - 11905: 0xD868, - 35946 - 11905: 0xBAC0, - 35947 - 11905: 0xD4A5, - 35948 - 11905: 0xD869, - 35949 - 11905: 0xD86A, - 35950 - 11905: 0xD86B, - 35951 - 11905: 0xD86C, - 35952 - 11905: 0xD86D, - 35953 - 11905: 0xD86E, - 35954 - 11905: 0xD86F, - 35955 - 11905: 0xE1D9, - 35956 - 11905: 0xD870, - 35957 - 11905: 0xD871, - 35958 - 11905: 0xD872, - 35959 - 11905: 0xD873, - 35960 - 11905: 0xF5F4, - 35961 - 11905: 0xB1AA, - 35962 - 11905: 0xB2F2, - 35963 - 11905: 0xD874, - 35964 - 11905: 0xD875, - 35965 - 11905: 0xD876, - 35966 - 11905: 0xD877, - 35967 - 11905: 0xD878, - 35968 - 11905: 0xD879, - 35969 - 11905: 0xD87A, - 35970 - 11905: 0xF5F5, - 35971 - 11905: 0xD87B, - 35972 - 11905: 0xD87C, - 35973 - 11905: 0xF5F7, - 35974 - 11905: 0xD87D, - 35975 - 11905: 0xD87E, - 35976 - 11905: 0xD880, - 35977 - 11905: 0xBAD1, - 35978 - 11905: 0xF5F6, - 35979 - 11905: 0xD881, - 35980 - 11905: 0xC3B2, - 35981 - 11905: 0xD882, - 35982 - 11905: 0xD883, - 35983 - 11905: 0xD884, - 35984 - 11905: 0xD885, - 35985 - 11905: 0xD886, - 35986 - 11905: 0xD887, - 35987 - 11905: 0xD888, - 35988 - 11905: 0xF5F9, - 35989 - 11905: 0xD889, - 35990 - 11905: 0xD88A, - 35991 - 11905: 0xD88B, - 35992 - 11905: 0xF5F8, - 35993 - 11905: 0xD88C, - 35994 - 11905: 0xD88D, - 35995 - 11905: 0xD88E, - 35996 - 11905: 0xD88F, - 35997 - 11905: 0xD890, - 35998 - 11905: 0xD891, - 35999 - 11905: 0xD892, - 36000 - 11905: 0xD893, - 36001 - 11905: 0xD894, - 36002 - 11905: 0xD895, - 36003 - 11905: 0xD896, - 36004 - 11905: 0xD897, - 36005 - 11905: 0xD898, - 36006 - 11905: 0xD899, - 36007 - 11905: 0xD89A, - 36008 - 11905: 0xD89B, - 36009 - 11905: 0xD89C, - 36010 - 11905: 0xD89D, - 36011 - 11905: 0xD89E, - 36012 - 11905: 0xD89F, - 36013 - 11905: 0xD8A0, - 36014 - 11905: 0xD940, - 36015 - 11905: 0xD941, - 36016 - 11905: 0xD942, - 36017 - 11905: 0xD943, - 36018 - 11905: 0xD944, - 36019 - 11905: 0xD945, - 36020 - 11905: 0xD946, - 36021 - 11905: 0xD947, - 36022 - 11905: 0xD948, - 36023 - 11905: 0xD949, - 36024 - 11905: 0xD94A, - 36025 - 11905: 0xD94B, - 36026 - 11905: 0xD94C, - 36027 - 11905: 0xD94D, - 36028 - 11905: 0xD94E, - 36029 - 11905: 0xD94F, - 36030 - 11905: 0xD950, - 36031 - 11905: 0xD951, - 36032 - 11905: 0xD952, - 36033 - 11905: 0xD953, - 36034 - 11905: 0xD954, - 36035 - 11905: 0xD955, - 36036 - 11905: 0xD956, - 36037 - 11905: 0xD957, - 36038 - 11905: 0xD958, - 36039 - 11905: 0xD959, - 36040 - 11905: 0xD95A, - 36041 - 11905: 0xD95B, - 36042 - 11905: 0xD95C, - 36043 - 11905: 0xD95D, - 36044 - 11905: 0xD95E, - 36045 - 11905: 0xD95F, - 36046 - 11905: 0xD960, - 36047 - 11905: 0xD961, - 36048 - 11905: 0xD962, - 36049 - 11905: 0xD963, - 36050 - 11905: 0xD964, - 36051 - 11905: 0xD965, - 36052 - 11905: 0xD966, - 36053 - 11905: 0xD967, - 36054 - 11905: 0xD968, - 36055 - 11905: 0xD969, - 36056 - 11905: 0xD96A, - 36057 - 11905: 0xD96B, - 36058 - 11905: 0xD96C, - 36059 - 11905: 0xD96D, - 36060 - 11905: 0xD96E, - 36061 - 11905: 0xD96F, - 36062 - 11905: 0xD970, - 36063 - 11905: 0xD971, - 36064 - 11905: 0xD972, - 36065 - 11905: 0xD973, - 36066 - 11905: 0xD974, - 36067 - 11905: 0xD975, - 36068 - 11905: 0xD976, - 36069 - 11905: 0xD977, - 36070 - 11905: 0xD978, - 36071 - 11905: 0xD979, - 36072 - 11905: 0xD97A, - 36073 - 11905: 0xD97B, - 36074 - 11905: 0xD97C, - 36075 - 11905: 0xD97D, - 36076 - 11905: 0xD97E, - 36077 - 11905: 0xD980, - 36078 - 11905: 0xD981, - 36079 - 11905: 0xD982, - 36080 - 11905: 0xD983, - 36081 - 11905: 0xD984, - 36082 - 11905: 0xD985, - 36083 - 11905: 0xD986, - 36084 - 11905: 0xD987, - 36085 - 11905: 0xD988, - 36086 - 11905: 0xD989, - 36087 - 11905: 0xD98A, - 36088 - 11905: 0xD98B, - 36089 - 11905: 0xD98C, - 36090 - 11905: 0xD98D, - 36091 - 11905: 0xD98E, - 36092 - 11905: 0xD98F, - 36093 - 11905: 0xD990, - 36094 - 11905: 0xD991, - 36095 - 11905: 0xD992, - 36096 - 11905: 0xD993, - 36097 - 11905: 0xD994, - 36098 - 11905: 0xD995, - 36099 - 11905: 0xD996, - 36100 - 11905: 0xD997, - 36101 - 11905: 0xD998, - 36102 - 11905: 0xD999, - 36103 - 11905: 0xD99A, - 36104 - 11905: 0xD99B, - 36105 - 11905: 0xD99C, - 36106 - 11905: 0xD99D, - 36107 - 11905: 0xD99E, - 36108 - 11905: 0xD99F, - 36109 - 11905: 0xD9A0, - 36110 - 11905: 0xDA40, - 36111 - 11905: 0xDA41, - 36112 - 11905: 0xDA42, - 36113 - 11905: 0xDA43, - 36114 - 11905: 0xDA44, - 36115 - 11905: 0xDA45, - 36116 - 11905: 0xDA46, - 36117 - 11905: 0xDA47, - 36118 - 11905: 0xDA48, - 36119 - 11905: 0xDA49, - 36120 - 11905: 0xDA4A, - 36121 - 11905: 0xDA4B, - 36122 - 11905: 0xDA4C, - 36123 - 11905: 0xDA4D, - 36124 - 11905: 0xDA4E, - 36125 - 11905: 0xB1B4, - 36126 - 11905: 0xD5EA, - 36127 - 11905: 0xB8BA, - 36128 - 11905: 0xDA4F, - 36129 - 11905: 0xB9B1, - 36130 - 11905: 0xB2C6, - 36131 - 11905: 0xD4F0, - 36132 - 11905: 0xCFCD, - 36133 - 11905: 0xB0DC, - 36134 - 11905: 0xD5CB, - 36135 - 11905: 0xBBF5, - 36136 - 11905: 0xD6CA, - 36137 - 11905: 0xB7B7, - 36138 - 11905: 0xCCB0, - 36139 - 11905: 0xC6B6, - 36140 - 11905: 0xB1E1, - 36141 - 11905: 0xB9BA, - 36142 - 11905: 0xD6FC, - 36143 - 11905: 0xB9E1, - 36144 - 11905: 0xB7A1, - 36145 - 11905: 0xBCFA, - 36146 - 11905: 0xEADA, - 36147 - 11905: 0xEADB, - 36148 - 11905: 0xCCF9, - 36149 - 11905: 0xB9F3, - 36150 - 11905: 0xEADC, - 36151 - 11905: 0xB4FB, - 36152 - 11905: 0xC3B3, - 36153 - 11905: 0xB7D1, - 36154 - 11905: 0xBAD8, - 36155 - 11905: 0xEADD, - 36156 - 11905: 0xD4F4, - 36157 - 11905: 0xEADE, - 36158 - 11905: 0xBCD6, - 36159 - 11905: 0xBBDF, - 36160 - 11905: 0xEADF, - 36161 - 11905: 0xC1DE, - 36162 - 11905: 0xC2B8, - 36163 - 11905: 0xD4DF, - 36164 - 11905: 0xD7CA, - 36165 - 11905: 0xEAE0, - 36166 - 11905: 0xEAE1, - 36167 - 11905: 0xEAE4, - 36168 - 11905: 0xEAE2, - 36169 - 11905: 0xEAE3, - 36170 - 11905: 0xC9DE, - 36171 - 11905: 0xB8B3, - 36172 - 11905: 0xB6C4, - 36173 - 11905: 0xEAE5, - 36174 - 11905: 0xCAEA, - 36175 - 11905: 0xC9CD, - 36176 - 11905: 0xB4CD, - 36177 - 11905: 0xDA50, - 36178 - 11905: 0xDA51, - 36179 - 11905: 0xE2D9, - 36180 - 11905: 0xC5E2, - 36181 - 11905: 0xEAE6, - 36182 - 11905: 0xC0B5, - 36183 - 11905: 0xDA52, - 36184 - 11905: 0xD7B8, - 36185 - 11905: 0xEAE7, - 36186 - 11905: 0xD7AC, - 36187 - 11905: 0xC8FC, - 36188 - 11905: 0xD8D3, - 36189 - 11905: 0xD8CD, - 36190 - 11905: 0xD4DE, - 36191 - 11905: 0xDA53, - 36192 - 11905: 0xD4F9, - 36193 - 11905: 0xC9C4, - 36194 - 11905: 0xD3AE, - 36195 - 11905: 0xB8D3, - 36196 - 11905: 0xB3E0, - 36197 - 11905: 0xDA54, - 36198 - 11905: 0xC9E2, - 36199 - 11905: 0xF4F6, - 36200 - 11905: 0xDA55, - 36201 - 11905: 0xDA56, - 36202 - 11905: 0xDA57, - 36203 - 11905: 0xBAD5, - 36204 - 11905: 0xDA58, - 36205 - 11905: 0xF4F7, - 36206 - 11905: 0xDA59, - 36207 - 11905: 0xDA5A, - 36208 - 11905: 0xD7DF, - 36209 - 11905: 0xDA5B, - 36210 - 11905: 0xDA5C, - 36211 - 11905: 0xF4F1, - 36212 - 11905: 0xB8B0, - 36213 - 11905: 0xD5D4, - 36214 - 11905: 0xB8CF, - 36215 - 11905: 0xC6F0, - 36216 - 11905: 0xDA5D, - 36217 - 11905: 0xDA5E, - 36218 - 11905: 0xDA5F, - 36219 - 11905: 0xDA60, - 36220 - 11905: 0xDA61, - 36221 - 11905: 0xDA62, - 36222 - 11905: 0xDA63, - 36223 - 11905: 0xDA64, - 36224 - 11905: 0xDA65, - 36225 - 11905: 0xB3C3, - 36226 - 11905: 0xDA66, - 36227 - 11905: 0xDA67, - 36228 - 11905: 0xF4F2, - 36229 - 11905: 0xB3AC, - 36230 - 11905: 0xDA68, - 36231 - 11905: 0xDA69, - 36232 - 11905: 0xDA6A, - 36233 - 11905: 0xDA6B, - 36234 - 11905: 0xD4BD, - 36235 - 11905: 0xC7F7, - 36236 - 11905: 0xDA6C, - 36237 - 11905: 0xDA6D, - 36238 - 11905: 0xDA6E, - 36239 - 11905: 0xDA6F, - 36240 - 11905: 0xDA70, - 36241 - 11905: 0xF4F4, - 36242 - 11905: 0xDA71, - 36243 - 11905: 0xDA72, - 36244 - 11905: 0xF4F3, - 36245 - 11905: 0xDA73, - 36246 - 11905: 0xDA74, - 36247 - 11905: 0xDA75, - 36248 - 11905: 0xDA76, - 36249 - 11905: 0xDA77, - 36250 - 11905: 0xDA78, - 36251 - 11905: 0xDA79, - 36252 - 11905: 0xDA7A, - 36253 - 11905: 0xDA7B, - 36254 - 11905: 0xDA7C, - 36255 - 11905: 0xCCCB, - 36256 - 11905: 0xDA7D, - 36257 - 11905: 0xDA7E, - 36258 - 11905: 0xDA80, - 36259 - 11905: 0xC8A4, - 36260 - 11905: 0xDA81, - 36261 - 11905: 0xDA82, - 36262 - 11905: 0xDA83, - 36263 - 11905: 0xDA84, - 36264 - 11905: 0xDA85, - 36265 - 11905: 0xDA86, - 36266 - 11905: 0xDA87, - 36267 - 11905: 0xDA88, - 36268 - 11905: 0xDA89, - 36269 - 11905: 0xDA8A, - 36270 - 11905: 0xDA8B, - 36271 - 11905: 0xDA8C, - 36272 - 11905: 0xDA8D, - 36273 - 11905: 0xF4F5, - 36274 - 11905: 0xDA8E, - 36275 - 11905: 0xD7E3, - 36276 - 11905: 0xC5BF, - 36277 - 11905: 0xF5C0, - 36278 - 11905: 0xDA8F, - 36279 - 11905: 0xDA90, - 36280 - 11905: 0xF5BB, - 36281 - 11905: 0xDA91, - 36282 - 11905: 0xF5C3, - 36283 - 11905: 0xDA92, - 36284 - 11905: 0xF5C2, - 36285 - 11905: 0xDA93, - 36286 - 11905: 0xD6BA, - 36287 - 11905: 0xF5C1, - 36288 - 11905: 0xDA94, - 36289 - 11905: 0xDA95, - 36290 - 11905: 0xDA96, - 36291 - 11905: 0xD4BE, - 36292 - 11905: 0xF5C4, - 36293 - 11905: 0xDA97, - 36294 - 11905: 0xF5CC, - 36295 - 11905: 0xDA98, - 36296 - 11905: 0xDA99, - 36297 - 11905: 0xDA9A, - 36298 - 11905: 0xDA9B, - 36299 - 11905: 0xB0CF, - 36300 - 11905: 0xB5F8, - 36301 - 11905: 0xDA9C, - 36302 - 11905: 0xF5C9, - 36303 - 11905: 0xF5CA, - 36304 - 11905: 0xDA9D, - 36305 - 11905: 0xC5DC, - 36306 - 11905: 0xDA9E, - 36307 - 11905: 0xDA9F, - 36308 - 11905: 0xDAA0, - 36309 - 11905: 0xDB40, - 36310 - 11905: 0xF5C5, - 36311 - 11905: 0xF5C6, - 36312 - 11905: 0xDB41, - 36313 - 11905: 0xDB42, - 36314 - 11905: 0xF5C7, - 36315 - 11905: 0xF5CB, - 36316 - 11905: 0xDB43, - 36317 - 11905: 0xBEE0, - 36318 - 11905: 0xF5C8, - 36319 - 11905: 0xB8FA, - 36320 - 11905: 0xDB44, - 36321 - 11905: 0xDB45, - 36322 - 11905: 0xDB46, - 36323 - 11905: 0xF5D0, - 36324 - 11905: 0xF5D3, - 36325 - 11905: 0xDB47, - 36326 - 11905: 0xDB48, - 36327 - 11905: 0xDB49, - 36328 - 11905: 0xBFE7, - 36329 - 11905: 0xDB4A, - 36330 - 11905: 0xB9F2, - 36331 - 11905: 0xF5BC, - 36332 - 11905: 0xF5CD, - 36333 - 11905: 0xDB4B, - 36334 - 11905: 0xDB4C, - 36335 - 11905: 0xC2B7, - 36336 - 11905: 0xDB4D, - 36337 - 11905: 0xDB4E, - 36338 - 11905: 0xDB4F, - 36339 - 11905: 0xCCF8, - 36340 - 11905: 0xDB50, - 36341 - 11905: 0xBCF9, - 36342 - 11905: 0xDB51, - 36343 - 11905: 0xF5CE, - 36344 - 11905: 0xF5CF, - 36345 - 11905: 0xF5D1, - 36346 - 11905: 0xB6E5, - 36347 - 11905: 0xF5D2, - 36348 - 11905: 0xDB52, - 36349 - 11905: 0xF5D5, - 36350 - 11905: 0xDB53, - 36351 - 11905: 0xDB54, - 36352 - 11905: 0xDB55, - 36353 - 11905: 0xDB56, - 36354 - 11905: 0xDB57, - 36355 - 11905: 0xDB58, - 36356 - 11905: 0xDB59, - 36357 - 11905: 0xF5BD, - 36358 - 11905: 0xDB5A, - 36359 - 11905: 0xDB5B, - 36360 - 11905: 0xDB5C, - 36361 - 11905: 0xF5D4, - 36362 - 11905: 0xD3BB, - 36363 - 11905: 0xDB5D, - 36364 - 11905: 0xB3EC, - 36365 - 11905: 0xDB5E, - 36366 - 11905: 0xDB5F, - 36367 - 11905: 0xCCA4, - 36368 - 11905: 0xDB60, - 36369 - 11905: 0xDB61, - 36370 - 11905: 0xDB62, - 36371 - 11905: 0xDB63, - 36372 - 11905: 0xF5D6, - 36373 - 11905: 0xDB64, - 36374 - 11905: 0xDB65, - 36375 - 11905: 0xDB66, - 36376 - 11905: 0xDB67, - 36377 - 11905: 0xDB68, - 36378 - 11905: 0xDB69, - 36379 - 11905: 0xDB6A, - 36380 - 11905: 0xDB6B, - 36381 - 11905: 0xF5D7, - 36382 - 11905: 0xBEE1, - 36383 - 11905: 0xF5D8, - 36384 - 11905: 0xDB6C, - 36385 - 11905: 0xDB6D, - 36386 - 11905: 0xCCDF, - 36387 - 11905: 0xF5DB, - 36388 - 11905: 0xDB6E, - 36389 - 11905: 0xDB6F, - 36390 - 11905: 0xDB70, - 36391 - 11905: 0xDB71, - 36392 - 11905: 0xDB72, - 36393 - 11905: 0xB2C8, - 36394 - 11905: 0xD7D9, - 36395 - 11905: 0xDB73, - 36396 - 11905: 0xF5D9, - 36397 - 11905: 0xDB74, - 36398 - 11905: 0xF5DA, - 36399 - 11905: 0xF5DC, - 36400 - 11905: 0xDB75, - 36401 - 11905: 0xF5E2, - 36402 - 11905: 0xDB76, - 36403 - 11905: 0xDB77, - 36404 - 11905: 0xDB78, - 36405 - 11905: 0xF5E0, - 36406 - 11905: 0xDB79, - 36407 - 11905: 0xDB7A, - 36408 - 11905: 0xDB7B, - 36409 - 11905: 0xF5DF, - 36410 - 11905: 0xF5DD, - 36411 - 11905: 0xDB7C, - 36412 - 11905: 0xDB7D, - 36413 - 11905: 0xF5E1, - 36414 - 11905: 0xDB7E, - 36415 - 11905: 0xDB80, - 36416 - 11905: 0xF5DE, - 36417 - 11905: 0xF5E4, - 36418 - 11905: 0xF5E5, - 36419 - 11905: 0xDB81, - 36420 - 11905: 0xCCE3, - 36421 - 11905: 0xDB82, - 36422 - 11905: 0xDB83, - 36423 - 11905: 0xE5BF, - 36424 - 11905: 0xB5B8, - 36425 - 11905: 0xF5E3, - 36426 - 11905: 0xF5E8, - 36427 - 11905: 0xCCA3, - 36428 - 11905: 0xDB84, - 36429 - 11905: 0xDB85, - 36430 - 11905: 0xDB86, - 36431 - 11905: 0xDB87, - 36432 - 11905: 0xDB88, - 36433 - 11905: 0xF5E6, - 36434 - 11905: 0xF5E7, - 36435 - 11905: 0xDB89, - 36436 - 11905: 0xDB8A, - 36437 - 11905: 0xDB8B, - 36438 - 11905: 0xDB8C, - 36439 - 11905: 0xDB8D, - 36440 - 11905: 0xDB8E, - 36441 - 11905: 0xF5BE, - 36442 - 11905: 0xDB8F, - 36443 - 11905: 0xDB90, - 36444 - 11905: 0xDB91, - 36445 - 11905: 0xDB92, - 36446 - 11905: 0xDB93, - 36447 - 11905: 0xDB94, - 36448 - 11905: 0xDB95, - 36449 - 11905: 0xDB96, - 36450 - 11905: 0xDB97, - 36451 - 11905: 0xDB98, - 36452 - 11905: 0xDB99, - 36453 - 11905: 0xDB9A, - 36454 - 11905: 0xB1C4, - 36455 - 11905: 0xDB9B, - 36456 - 11905: 0xDB9C, - 36457 - 11905: 0xF5BF, - 36458 - 11905: 0xDB9D, - 36459 - 11905: 0xDB9E, - 36460 - 11905: 0xB5C5, - 36461 - 11905: 0xB2E4, - 36462 - 11905: 0xDB9F, - 36463 - 11905: 0xF5EC, - 36464 - 11905: 0xF5E9, - 36465 - 11905: 0xDBA0, - 36466 - 11905: 0xB6D7, - 36467 - 11905: 0xDC40, - 36468 - 11905: 0xF5ED, - 36469 - 11905: 0xDC41, - 36470 - 11905: 0xF5EA, - 36471 - 11905: 0xDC42, - 36472 - 11905: 0xDC43, - 36473 - 11905: 0xDC44, - 36474 - 11905: 0xDC45, - 36475 - 11905: 0xDC46, - 36476 - 11905: 0xF5EB, - 36477 - 11905: 0xDC47, - 36478 - 11905: 0xDC48, - 36479 - 11905: 0xB4DA, - 36480 - 11905: 0xDC49, - 36481 - 11905: 0xD4EA, - 36482 - 11905: 0xDC4A, - 36483 - 11905: 0xDC4B, - 36484 - 11905: 0xDC4C, - 36485 - 11905: 0xF5EE, - 36486 - 11905: 0xDC4D, - 36487 - 11905: 0xB3F9, - 36488 - 11905: 0xDC4E, - 36489 - 11905: 0xDC4F, - 36490 - 11905: 0xDC50, - 36491 - 11905: 0xDC51, - 36492 - 11905: 0xDC52, - 36493 - 11905: 0xDC53, - 36494 - 11905: 0xDC54, - 36495 - 11905: 0xF5EF, - 36496 - 11905: 0xF5F1, - 36497 - 11905: 0xDC55, - 36498 - 11905: 0xDC56, - 36499 - 11905: 0xDC57, - 36500 - 11905: 0xF5F0, - 36501 - 11905: 0xDC58, - 36502 - 11905: 0xDC59, - 36503 - 11905: 0xDC5A, - 36504 - 11905: 0xDC5B, - 36505 - 11905: 0xDC5C, - 36506 - 11905: 0xDC5D, - 36507 - 11905: 0xDC5E, - 36508 - 11905: 0xF5F2, - 36509 - 11905: 0xDC5F, - 36510 - 11905: 0xF5F3, - 36511 - 11905: 0xDC60, - 36512 - 11905: 0xDC61, - 36513 - 11905: 0xDC62, - 36514 - 11905: 0xDC63, - 36515 - 11905: 0xDC64, - 36516 - 11905: 0xDC65, - 36517 - 11905: 0xDC66, - 36518 - 11905: 0xDC67, - 36519 - 11905: 0xDC68, - 36520 - 11905: 0xDC69, - 36521 - 11905: 0xDC6A, - 36522 - 11905: 0xDC6B, - 36523 - 11905: 0xC9ED, - 36524 - 11905: 0xB9AA, - 36525 - 11905: 0xDC6C, - 36526 - 11905: 0xDC6D, - 36527 - 11905: 0xC7FB, - 36528 - 11905: 0xDC6E, - 36529 - 11905: 0xDC6F, - 36530 - 11905: 0xB6E3, - 36531 - 11905: 0xDC70, - 36532 - 11905: 0xDC71, - 36533 - 11905: 0xDC72, - 36534 - 11905: 0xDC73, - 36535 - 11905: 0xDC74, - 36536 - 11905: 0xDC75, - 36537 - 11905: 0xDC76, - 36538 - 11905: 0xCCC9, - 36539 - 11905: 0xDC77, - 36540 - 11905: 0xDC78, - 36541 - 11905: 0xDC79, - 36542 - 11905: 0xDC7A, - 36543 - 11905: 0xDC7B, - 36544 - 11905: 0xDC7C, - 36545 - 11905: 0xDC7D, - 36546 - 11905: 0xDC7E, - 36547 - 11905: 0xDC80, - 36548 - 11905: 0xDC81, - 36549 - 11905: 0xDC82, - 36550 - 11905: 0xDC83, - 36551 - 11905: 0xDC84, - 36552 - 11905: 0xDC85, - 36553 - 11905: 0xDC86, - 36554 - 11905: 0xDC87, - 36555 - 11905: 0xDC88, - 36556 - 11905: 0xDC89, - 36557 - 11905: 0xDC8A, - 36558 - 11905: 0xEAA6, - 36559 - 11905: 0xDC8B, - 36560 - 11905: 0xDC8C, - 36561 - 11905: 0xDC8D, - 36562 - 11905: 0xDC8E, - 36563 - 11905: 0xDC8F, - 36564 - 11905: 0xDC90, - 36565 - 11905: 0xDC91, - 36566 - 11905: 0xDC92, - 36567 - 11905: 0xDC93, - 36568 - 11905: 0xDC94, - 36569 - 11905: 0xDC95, - 36570 - 11905: 0xDC96, - 36571 - 11905: 0xDC97, - 36572 - 11905: 0xDC98, - 36573 - 11905: 0xDC99, - 36574 - 11905: 0xDC9A, - 36575 - 11905: 0xDC9B, - 36576 - 11905: 0xDC9C, - 36577 - 11905: 0xDC9D, - 36578 - 11905: 0xDC9E, - 36579 - 11905: 0xDC9F, - 36580 - 11905: 0xDCA0, - 36581 - 11905: 0xDD40, - 36582 - 11905: 0xDD41, - 36583 - 11905: 0xDD42, - 36584 - 11905: 0xDD43, - 36585 - 11905: 0xDD44, - 36586 - 11905: 0xDD45, - 36587 - 11905: 0xDD46, - 36588 - 11905: 0xDD47, - 36589 - 11905: 0xDD48, - 36590 - 11905: 0xDD49, - 36591 - 11905: 0xDD4A, - 36592 - 11905: 0xDD4B, - 36593 - 11905: 0xDD4C, - 36594 - 11905: 0xDD4D, - 36595 - 11905: 0xDD4E, - 36596 - 11905: 0xDD4F, - 36597 - 11905: 0xDD50, - 36598 - 11905: 0xDD51, - 36599 - 11905: 0xDD52, - 36600 - 11905: 0xDD53, - 36601 - 11905: 0xDD54, - 36602 - 11905: 0xDD55, - 36603 - 11905: 0xDD56, - 36604 - 11905: 0xDD57, - 36605 - 11905: 0xDD58, - 36606 - 11905: 0xDD59, - 36607 - 11905: 0xDD5A, - 36608 - 11905: 0xDD5B, - 36609 - 11905: 0xDD5C, - 36610 - 11905: 0xDD5D, - 36611 - 11905: 0xDD5E, - 36612 - 11905: 0xDD5F, - 36613 - 11905: 0xDD60, - 36614 - 11905: 0xDD61, - 36615 - 11905: 0xDD62, - 36616 - 11905: 0xDD63, - 36617 - 11905: 0xDD64, - 36618 - 11905: 0xDD65, - 36619 - 11905: 0xDD66, - 36620 - 11905: 0xDD67, - 36621 - 11905: 0xDD68, - 36622 - 11905: 0xDD69, - 36623 - 11905: 0xDD6A, - 36624 - 11905: 0xDD6B, - 36625 - 11905: 0xDD6C, - 36626 - 11905: 0xDD6D, - 36627 - 11905: 0xDD6E, - 36628 - 11905: 0xDD6F, - 36629 - 11905: 0xDD70, - 36630 - 11905: 0xDD71, - 36631 - 11905: 0xDD72, - 36632 - 11905: 0xDD73, - 36633 - 11905: 0xDD74, - 36634 - 11905: 0xDD75, - 36635 - 11905: 0xDD76, - 36636 - 11905: 0xDD77, - 36637 - 11905: 0xDD78, - 36638 - 11905: 0xDD79, - 36639 - 11905: 0xDD7A, - 36640 - 11905: 0xDD7B, - 36641 - 11905: 0xDD7C, - 36642 - 11905: 0xDD7D, - 36643 - 11905: 0xDD7E, - 36644 - 11905: 0xDD80, - 36645 - 11905: 0xDD81, - 36646 - 11905: 0xDD82, - 36647 - 11905: 0xDD83, - 36648 - 11905: 0xDD84, - 36649 - 11905: 0xDD85, - 36650 - 11905: 0xDD86, - 36651 - 11905: 0xDD87, - 36652 - 11905: 0xDD88, - 36653 - 11905: 0xDD89, - 36654 - 11905: 0xDD8A, - 36655 - 11905: 0xDD8B, - 36656 - 11905: 0xDD8C, - 36657 - 11905: 0xDD8D, - 36658 - 11905: 0xDD8E, - 36659 - 11905: 0xDD8F, - 36660 - 11905: 0xDD90, - 36661 - 11905: 0xDD91, - 36662 - 11905: 0xDD92, - 36663 - 11905: 0xDD93, - 36664 - 11905: 0xDD94, - 36665 - 11905: 0xDD95, - 36666 - 11905: 0xDD96, - 36667 - 11905: 0xDD97, - 36668 - 11905: 0xDD98, - 36669 - 11905: 0xDD99, - 36670 - 11905: 0xDD9A, - 36671 - 11905: 0xDD9B, - 36672 - 11905: 0xDD9C, - 36673 - 11905: 0xDD9D, - 36674 - 11905: 0xDD9E, - 36675 - 11905: 0xDD9F, - 36676 - 11905: 0xDDA0, - 36677 - 11905: 0xDE40, - 36678 - 11905: 0xDE41, - 36679 - 11905: 0xDE42, - 36680 - 11905: 0xDE43, - 36681 - 11905: 0xDE44, - 36682 - 11905: 0xDE45, - 36683 - 11905: 0xDE46, - 36684 - 11905: 0xDE47, - 36685 - 11905: 0xDE48, - 36686 - 11905: 0xDE49, - 36687 - 11905: 0xDE4A, - 36688 - 11905: 0xDE4B, - 36689 - 11905: 0xDE4C, - 36690 - 11905: 0xDE4D, - 36691 - 11905: 0xDE4E, - 36692 - 11905: 0xDE4F, - 36693 - 11905: 0xDE50, - 36694 - 11905: 0xDE51, - 36695 - 11905: 0xDE52, - 36696 - 11905: 0xDE53, - 36697 - 11905: 0xDE54, - 36698 - 11905: 0xDE55, - 36699 - 11905: 0xDE56, - 36700 - 11905: 0xDE57, - 36701 - 11905: 0xDE58, - 36702 - 11905: 0xDE59, - 36703 - 11905: 0xDE5A, - 36704 - 11905: 0xDE5B, - 36705 - 11905: 0xDE5C, - 36706 - 11905: 0xDE5D, - 36707 - 11905: 0xDE5E, - 36708 - 11905: 0xDE5F, - 36709 - 11905: 0xDE60, - 36710 - 11905: 0xB3B5, - 36711 - 11905: 0xD4FE, - 36712 - 11905: 0xB9EC, - 36713 - 11905: 0xD0F9, - 36714 - 11905: 0xDE61, - 36715 - 11905: 0xE9ED, - 36716 - 11905: 0xD7AA, - 36717 - 11905: 0xE9EE, - 36718 - 11905: 0xC2D6, - 36719 - 11905: 0xC8ED, - 36720 - 11905: 0xBAE4, - 36721 - 11905: 0xE9EF, - 36722 - 11905: 0xE9F0, - 36723 - 11905: 0xE9F1, - 36724 - 11905: 0xD6E1, - 36725 - 11905: 0xE9F2, - 36726 - 11905: 0xE9F3, - 36727 - 11905: 0xE9F5, - 36728 - 11905: 0xE9F4, - 36729 - 11905: 0xE9F6, - 36730 - 11905: 0xE9F7, - 36731 - 11905: 0xC7E1, - 36732 - 11905: 0xE9F8, - 36733 - 11905: 0xD4D8, - 36734 - 11905: 0xE9F9, - 36735 - 11905: 0xBDCE, - 36736 - 11905: 0xDE62, - 36737 - 11905: 0xE9FA, - 36738 - 11905: 0xE9FB, - 36739 - 11905: 0xBDCF, - 36740 - 11905: 0xE9FC, - 36741 - 11905: 0xB8A8, - 36742 - 11905: 0xC1BE, - 36743 - 11905: 0xE9FD, - 36744 - 11905: 0xB1B2, - 36745 - 11905: 0xBBD4, - 36746 - 11905: 0xB9F5, - 36747 - 11905: 0xE9FE, - 36748 - 11905: 0xDE63, - 36749 - 11905: 0xEAA1, - 36750 - 11905: 0xEAA2, - 36751 - 11905: 0xEAA3, - 36752 - 11905: 0xB7F8, - 36753 - 11905: 0xBCAD, - 36754 - 11905: 0xDE64, - 36755 - 11905: 0xCAE4, - 36756 - 11905: 0xE0CE, - 36757 - 11905: 0xD4AF, - 36758 - 11905: 0xCFBD, - 36759 - 11905: 0xD5B7, - 36760 - 11905: 0xEAA4, - 36761 - 11905: 0xD5DE, - 36762 - 11905: 0xEAA5, - 36763 - 11905: 0xD0C1, - 36764 - 11905: 0xB9BC, - 36765 - 11905: 0xDE65, - 36766 - 11905: 0xB4C7, - 36767 - 11905: 0xB1D9, - 36768 - 11905: 0xDE66, - 36769 - 11905: 0xDE67, - 36770 - 11905: 0xDE68, - 36771 - 11905: 0xC0B1, - 36772 - 11905: 0xDE69, - 36773 - 11905: 0xDE6A, - 36774 - 11905: 0xDE6B, - 36775 - 11905: 0xDE6C, - 36776 - 11905: 0xB1E6, - 36777 - 11905: 0xB1E7, - 36778 - 11905: 0xDE6D, - 36779 - 11905: 0xB1E8, - 36780 - 11905: 0xDE6E, - 36781 - 11905: 0xDE6F, - 36782 - 11905: 0xDE70, - 36783 - 11905: 0xDE71, - 36784 - 11905: 0xB3BD, - 36785 - 11905: 0xC8E8, - 36786 - 11905: 0xDE72, - 36787 - 11905: 0xDE73, - 36788 - 11905: 0xDE74, - 36789 - 11905: 0xDE75, - 36790 - 11905: 0xE5C1, - 36791 - 11905: 0xDE76, - 36792 - 11905: 0xDE77, - 36793 - 11905: 0xB1DF, - 36794 - 11905: 0xDE78, - 36795 - 11905: 0xDE79, - 36796 - 11905: 0xDE7A, - 36797 - 11905: 0xC1C9, - 36798 - 11905: 0xB4EF, - 36799 - 11905: 0xDE7B, - 36800 - 11905: 0xDE7C, - 36801 - 11905: 0xC7A8, - 36802 - 11905: 0xD3D8, - 36803 - 11905: 0xDE7D, - 36804 - 11905: 0xC6F9, - 36805 - 11905: 0xD1B8, - 36806 - 11905: 0xDE7E, - 36807 - 11905: 0xB9FD, - 36808 - 11905: 0xC2F5, - 36809 - 11905: 0xDE80, - 36810 - 11905: 0xDE81, - 36811 - 11905: 0xDE82, - 36812 - 11905: 0xDE83, - 36813 - 11905: 0xDE84, - 36814 - 11905: 0xD3AD, - 36815 - 11905: 0xDE85, - 36816 - 11905: 0xD4CB, - 36817 - 11905: 0xBDFC, - 36818 - 11905: 0xDE86, - 36819 - 11905: 0xE5C2, - 36820 - 11905: 0xB7B5, - 36821 - 11905: 0xE5C3, - 36822 - 11905: 0xDE87, - 36823 - 11905: 0xDE88, - 36824 - 11905: 0xBBB9, - 36825 - 11905: 0xD5E2, - 36826 - 11905: 0xDE89, - 36827 - 11905: 0xBDF8, - 36828 - 11905: 0xD4B6, - 36829 - 11905: 0xCEA5, - 36830 - 11905: 0xC1AC, - 36831 - 11905: 0xB3D9, - 36832 - 11905: 0xDE8A, - 36833 - 11905: 0xDE8B, - 36834 - 11905: 0xCCF6, - 36835 - 11905: 0xDE8C, - 36836 - 11905: 0xE5C6, - 36837 - 11905: 0xE5C4, - 36838 - 11905: 0xE5C8, - 36839 - 11905: 0xDE8D, - 36840 - 11905: 0xE5CA, - 36841 - 11905: 0xE5C7, - 36842 - 11905: 0xB5CF, - 36843 - 11905: 0xC6C8, - 36844 - 11905: 0xDE8E, - 36845 - 11905: 0xB5FC, - 36846 - 11905: 0xE5C5, - 36847 - 11905: 0xDE8F, - 36848 - 11905: 0xCAF6, - 36849 - 11905: 0xDE90, - 36850 - 11905: 0xDE91, - 36851 - 11905: 0xE5C9, - 36852 - 11905: 0xDE92, - 36853 - 11905: 0xDE93, - 36854 - 11905: 0xDE94, - 36855 - 11905: 0xC3D4, - 36856 - 11905: 0xB1C5, - 36857 - 11905: 0xBCA3, - 36858 - 11905: 0xDE95, - 36859 - 11905: 0xDE96, - 36860 - 11905: 0xDE97, - 36861 - 11905: 0xD7B7, - 36862 - 11905: 0xDE98, - 36863 - 11905: 0xDE99, - 36864 - 11905: 0xCDCB, - 36865 - 11905: 0xCBCD, - 36866 - 11905: 0xCACA, - 36867 - 11905: 0xCCD3, - 36868 - 11905: 0xE5CC, - 36869 - 11905: 0xE5CB, - 36870 - 11905: 0xC4E6, - 36871 - 11905: 0xDE9A, - 36872 - 11905: 0xDE9B, - 36873 - 11905: 0xD1A1, - 36874 - 11905: 0xD1B7, - 36875 - 11905: 0xE5CD, - 36876 - 11905: 0xDE9C, - 36877 - 11905: 0xE5D0, - 36878 - 11905: 0xDE9D, - 36879 - 11905: 0xCDB8, - 36880 - 11905: 0xD6F0, - 36881 - 11905: 0xE5CF, - 36882 - 11905: 0xB5DD, - 36883 - 11905: 0xDE9E, - 36884 - 11905: 0xCDBE, - 36885 - 11905: 0xDE9F, - 36886 - 11905: 0xE5D1, - 36887 - 11905: 0xB6BA, - 36888 - 11905: 0xDEA0, - 36889 - 11905: 0xDF40, - 36890 - 11905: 0xCDA8, - 36891 - 11905: 0xB9E4, - 36892 - 11905: 0xDF41, - 36893 - 11905: 0xCAC5, - 36894 - 11905: 0xB3D1, - 36895 - 11905: 0xCBD9, - 36896 - 11905: 0xD4EC, - 36897 - 11905: 0xE5D2, - 36898 - 11905: 0xB7EA, - 36899 - 11905: 0xDF42, - 36900 - 11905: 0xDF43, - 36901 - 11905: 0xDF44, - 36902 - 11905: 0xE5CE, - 36903 - 11905: 0xDF45, - 36904 - 11905: 0xDF46, - 36905 - 11905: 0xDF47, - 36906 - 11905: 0xDF48, - 36907 - 11905: 0xDF49, - 36908 - 11905: 0xDF4A, - 36909 - 11905: 0xE5D5, - 36910 - 11905: 0xB4FE, - 36911 - 11905: 0xE5D6, - 36912 - 11905: 0xDF4B, - 36913 - 11905: 0xDF4C, - 36914 - 11905: 0xDF4D, - 36915 - 11905: 0xDF4E, - 36916 - 11905: 0xDF4F, - 36917 - 11905: 0xE5D3, - 36918 - 11905: 0xE5D4, - 36919 - 11905: 0xDF50, - 36920 - 11905: 0xD2DD, - 36921 - 11905: 0xDF51, - 36922 - 11905: 0xDF52, - 36923 - 11905: 0xC2DF, - 36924 - 11905: 0xB1C6, - 36925 - 11905: 0xDF53, - 36926 - 11905: 0xD3E2, - 36927 - 11905: 0xDF54, - 36928 - 11905: 0xDF55, - 36929 - 11905: 0xB6DD, - 36930 - 11905: 0xCBEC, - 36931 - 11905: 0xDF56, - 36932 - 11905: 0xE5D7, - 36933 - 11905: 0xDF57, - 36934 - 11905: 0xDF58, - 36935 - 11905: 0xD3F6, - 36936 - 11905: 0xDF59, - 36937 - 11905: 0xDF5A, - 36938 - 11905: 0xDF5B, - 36939 - 11905: 0xDF5C, - 36940 - 11905: 0xDF5D, - 36941 - 11905: 0xB1E9, - 36942 - 11905: 0xDF5E, - 36943 - 11905: 0xB6F4, - 36944 - 11905: 0xE5DA, - 36945 - 11905: 0xE5D8, - 36946 - 11905: 0xE5D9, - 36947 - 11905: 0xB5C0, - 36948 - 11905: 0xDF5F, - 36949 - 11905: 0xDF60, - 36950 - 11905: 0xDF61, - 36951 - 11905: 0xD2C5, - 36952 - 11905: 0xE5DC, - 36953 - 11905: 0xDF62, - 36954 - 11905: 0xDF63, - 36955 - 11905: 0xE5DE, - 36956 - 11905: 0xDF64, - 36957 - 11905: 0xDF65, - 36958 - 11905: 0xDF66, - 36959 - 11905: 0xDF67, - 36960 - 11905: 0xDF68, - 36961 - 11905: 0xDF69, - 36962 - 11905: 0xE5DD, - 36963 - 11905: 0xC7B2, - 36964 - 11905: 0xDF6A, - 36965 - 11905: 0xD2A3, - 36966 - 11905: 0xDF6B, - 36967 - 11905: 0xDF6C, - 36968 - 11905: 0xE5DB, - 36969 - 11905: 0xDF6D, - 36970 - 11905: 0xDF6E, - 36971 - 11905: 0xDF6F, - 36972 - 11905: 0xDF70, - 36973 - 11905: 0xD4E2, - 36974 - 11905: 0xD5DA, - 36975 - 11905: 0xDF71, - 36976 - 11905: 0xDF72, - 36977 - 11905: 0xDF73, - 36978 - 11905: 0xDF74, - 36979 - 11905: 0xDF75, - 36980 - 11905: 0xE5E0, - 36981 - 11905: 0xD7F1, - 36982 - 11905: 0xDF76, - 36983 - 11905: 0xDF77, - 36984 - 11905: 0xDF78, - 36985 - 11905: 0xDF79, - 36986 - 11905: 0xDF7A, - 36987 - 11905: 0xDF7B, - 36988 - 11905: 0xDF7C, - 36989 - 11905: 0xE5E1, - 36990 - 11905: 0xDF7D, - 36991 - 11905: 0xB1DC, - 36992 - 11905: 0xD1FB, - 36993 - 11905: 0xDF7E, - 36994 - 11905: 0xE5E2, - 36995 - 11905: 0xE5E4, - 36996 - 11905: 0xDF80, - 36997 - 11905: 0xDF81, - 36998 - 11905: 0xDF82, - 36999 - 11905: 0xDF83, - 37000 - 11905: 0xE5E3, - 37001 - 11905: 0xDF84, - 37002 - 11905: 0xDF85, - 37003 - 11905: 0xE5E5, - 37004 - 11905: 0xDF86, - 37005 - 11905: 0xDF87, - 37006 - 11905: 0xDF88, - 37007 - 11905: 0xDF89, - 37008 - 11905: 0xDF8A, - 37009 - 11905: 0xD2D8, - 37010 - 11905: 0xDF8B, - 37011 - 11905: 0xB5CB, - 37012 - 11905: 0xDF8C, - 37013 - 11905: 0xE7DF, - 37014 - 11905: 0xDF8D, - 37015 - 11905: 0xDAF5, - 37016 - 11905: 0xDF8E, - 37017 - 11905: 0xDAF8, - 37018 - 11905: 0xDF8F, - 37019 - 11905: 0xDAF6, - 37020 - 11905: 0xDF90, - 37021 - 11905: 0xDAF7, - 37022 - 11905: 0xDF91, - 37023 - 11905: 0xDF92, - 37024 - 11905: 0xDF93, - 37025 - 11905: 0xDAFA, - 37026 - 11905: 0xD0CF, - 37027 - 11905: 0xC4C7, - 37028 - 11905: 0xDF94, - 37029 - 11905: 0xDF95, - 37030 - 11905: 0xB0EE, - 37031 - 11905: 0xDF96, - 37032 - 11905: 0xDF97, - 37033 - 11905: 0xDF98, - 37034 - 11905: 0xD0B0, - 37035 - 11905: 0xDF99, - 37036 - 11905: 0xDAF9, - 37037 - 11905: 0xDF9A, - 37038 - 11905: 0xD3CA, - 37039 - 11905: 0xBAAA, - 37040 - 11905: 0xDBA2, - 37041 - 11905: 0xC7F1, - 37042 - 11905: 0xDF9B, - 37043 - 11905: 0xDAFC, - 37044 - 11905: 0xDAFB, - 37045 - 11905: 0xC9DB, - 37046 - 11905: 0xDAFD, - 37047 - 11905: 0xDF9C, - 37048 - 11905: 0xDBA1, - 37049 - 11905: 0xD7DE, - 37050 - 11905: 0xDAFE, - 37051 - 11905: 0xC1DA, - 37052 - 11905: 0xDF9D, - 37053 - 11905: 0xDF9E, - 37054 - 11905: 0xDBA5, - 37055 - 11905: 0xDF9F, - 37056 - 11905: 0xDFA0, - 37057 - 11905: 0xD3F4, - 37058 - 11905: 0xE040, - 37059 - 11905: 0xE041, - 37060 - 11905: 0xDBA7, - 37061 - 11905: 0xDBA4, - 37062 - 11905: 0xE042, - 37063 - 11905: 0xDBA8, - 37064 - 11905: 0xE043, - 37065 - 11905: 0xE044, - 37066 - 11905: 0xBDBC, - 37067 - 11905: 0xE045, - 37068 - 11905: 0xE046, - 37069 - 11905: 0xE047, - 37070 - 11905: 0xC0C9, - 37071 - 11905: 0xDBA3, - 37072 - 11905: 0xDBA6, - 37073 - 11905: 0xD6A3, - 37074 - 11905: 0xE048, - 37075 - 11905: 0xDBA9, - 37076 - 11905: 0xE049, - 37077 - 11905: 0xE04A, - 37078 - 11905: 0xE04B, - 37079 - 11905: 0xDBAD, - 37080 - 11905: 0xE04C, - 37081 - 11905: 0xE04D, - 37082 - 11905: 0xE04E, - 37083 - 11905: 0xDBAE, - 37084 - 11905: 0xDBAC, - 37085 - 11905: 0xBAC2, - 37086 - 11905: 0xE04F, - 37087 - 11905: 0xE050, - 37088 - 11905: 0xE051, - 37089 - 11905: 0xBFA4, - 37090 - 11905: 0xDBAB, - 37091 - 11905: 0xE052, - 37092 - 11905: 0xE053, - 37093 - 11905: 0xE054, - 37094 - 11905: 0xDBAA, - 37095 - 11905: 0xD4C7, - 37096 - 11905: 0xB2BF, - 37097 - 11905: 0xE055, - 37098 - 11905: 0xE056, - 37099 - 11905: 0xDBAF, - 37100 - 11905: 0xE057, - 37101 - 11905: 0xB9F9, - 37102 - 11905: 0xE058, - 37103 - 11905: 0xDBB0, - 37104 - 11905: 0xE059, - 37105 - 11905: 0xE05A, - 37106 - 11905: 0xE05B, - 37107 - 11905: 0xE05C, - 37108 - 11905: 0xB3BB, - 37109 - 11905: 0xE05D, - 37110 - 11905: 0xE05E, - 37111 - 11905: 0xE05F, - 37112 - 11905: 0xB5A6, - 37113 - 11905: 0xE060, - 37114 - 11905: 0xE061, - 37115 - 11905: 0xE062, - 37116 - 11905: 0xE063, - 37117 - 11905: 0xB6BC, - 37118 - 11905: 0xDBB1, - 37119 - 11905: 0xE064, - 37120 - 11905: 0xE065, - 37121 - 11905: 0xE066, - 37122 - 11905: 0xB6F5, - 37123 - 11905: 0xE067, - 37124 - 11905: 0xDBB2, - 37125 - 11905: 0xE068, - 37126 - 11905: 0xE069, - 37127 - 11905: 0xE06A, - 37128 - 11905: 0xE06B, - 37129 - 11905: 0xE06C, - 37130 - 11905: 0xE06D, - 37131 - 11905: 0xE06E, - 37132 - 11905: 0xE06F, - 37133 - 11905: 0xE070, - 37134 - 11905: 0xE071, - 37135 - 11905: 0xE072, - 37136 - 11905: 0xE073, - 37137 - 11905: 0xE074, - 37138 - 11905: 0xE075, - 37139 - 11905: 0xE076, - 37140 - 11905: 0xE077, - 37141 - 11905: 0xE078, - 37142 - 11905: 0xE079, - 37143 - 11905: 0xE07A, - 37144 - 11905: 0xE07B, - 37145 - 11905: 0xB1C9, - 37146 - 11905: 0xE07C, - 37147 - 11905: 0xE07D, - 37148 - 11905: 0xE07E, - 37149 - 11905: 0xE080, - 37150 - 11905: 0xDBB4, - 37151 - 11905: 0xE081, - 37152 - 11905: 0xE082, - 37153 - 11905: 0xE083, - 37154 - 11905: 0xDBB3, - 37155 - 11905: 0xDBB5, - 37156 - 11905: 0xE084, - 37157 - 11905: 0xE085, - 37158 - 11905: 0xE086, - 37159 - 11905: 0xE087, - 37160 - 11905: 0xE088, - 37161 - 11905: 0xE089, - 37162 - 11905: 0xE08A, - 37163 - 11905: 0xE08B, - 37164 - 11905: 0xE08C, - 37165 - 11905: 0xE08D, - 37166 - 11905: 0xE08E, - 37167 - 11905: 0xDBB7, - 37168 - 11905: 0xE08F, - 37169 - 11905: 0xDBB6, - 37170 - 11905: 0xE090, - 37171 - 11905: 0xE091, - 37172 - 11905: 0xE092, - 37173 - 11905: 0xE093, - 37174 - 11905: 0xE094, - 37175 - 11905: 0xE095, - 37176 - 11905: 0xE096, - 37177 - 11905: 0xDBB8, - 37178 - 11905: 0xE097, - 37179 - 11905: 0xE098, - 37180 - 11905: 0xE099, - 37181 - 11905: 0xE09A, - 37182 - 11905: 0xE09B, - 37183 - 11905: 0xE09C, - 37184 - 11905: 0xE09D, - 37185 - 11905: 0xE09E, - 37186 - 11905: 0xE09F, - 37187 - 11905: 0xDBB9, - 37188 - 11905: 0xE0A0, - 37189 - 11905: 0xE140, - 37190 - 11905: 0xDBBA, - 37191 - 11905: 0xE141, - 37192 - 11905: 0xE142, - 37193 - 11905: 0xD3CF, - 37194 - 11905: 0xF4FA, - 37195 - 11905: 0xC7F5, - 37196 - 11905: 0xD7C3, - 37197 - 11905: 0xC5E4, - 37198 - 11905: 0xF4FC, - 37199 - 11905: 0xF4FD, - 37200 - 11905: 0xF4FB, - 37201 - 11905: 0xE143, - 37202 - 11905: 0xBEC6, - 37203 - 11905: 0xE144, - 37204 - 11905: 0xE145, - 37205 - 11905: 0xE146, - 37206 - 11905: 0xE147, - 37207 - 11905: 0xD0EF, - 37208 - 11905: 0xE148, - 37209 - 11905: 0xE149, - 37210 - 11905: 0xB7D3, - 37211 - 11905: 0xE14A, - 37212 - 11905: 0xE14B, - 37213 - 11905: 0xD4CD, - 37214 - 11905: 0xCCAA, - 37215 - 11905: 0xE14C, - 37216 - 11905: 0xE14D, - 37217 - 11905: 0xF5A2, - 37218 - 11905: 0xF5A1, - 37219 - 11905: 0xBAA8, - 37220 - 11905: 0xF4FE, - 37221 - 11905: 0xCBD6, - 37222 - 11905: 0xE14E, - 37223 - 11905: 0xE14F, - 37224 - 11905: 0xE150, - 37225 - 11905: 0xF5A4, - 37226 - 11905: 0xC0D2, - 37227 - 11905: 0xE151, - 37228 - 11905: 0xB3EA, - 37229 - 11905: 0xE152, - 37230 - 11905: 0xCDAA, - 37231 - 11905: 0xF5A5, - 37232 - 11905: 0xF5A3, - 37233 - 11905: 0xBDB4, - 37234 - 11905: 0xF5A8, - 37235 - 11905: 0xE153, - 37236 - 11905: 0xF5A9, - 37237 - 11905: 0xBDCD, - 37238 - 11905: 0xC3B8, - 37239 - 11905: 0xBFE1, - 37240 - 11905: 0xCBE1, - 37241 - 11905: 0xF5AA, - 37242 - 11905: 0xE154, - 37243 - 11905: 0xE155, - 37244 - 11905: 0xE156, - 37245 - 11905: 0xF5A6, - 37246 - 11905: 0xF5A7, - 37247 - 11905: 0xC4F0, - 37248 - 11905: 0xE157, - 37249 - 11905: 0xE158, - 37250 - 11905: 0xE159, - 37251 - 11905: 0xE15A, - 37252 - 11905: 0xE15B, - 37253 - 11905: 0xF5AC, - 37254 - 11905: 0xE15C, - 37255 - 11905: 0xB4BC, - 37256 - 11905: 0xE15D, - 37257 - 11905: 0xD7ED, - 37258 - 11905: 0xE15E, - 37259 - 11905: 0xB4D7, - 37260 - 11905: 0xF5AB, - 37261 - 11905: 0xF5AE, - 37262 - 11905: 0xE15F, - 37263 - 11905: 0xE160, - 37264 - 11905: 0xF5AD, - 37265 - 11905: 0xF5AF, - 37266 - 11905: 0xD0D1, - 37267 - 11905: 0xE161, - 37268 - 11905: 0xE162, - 37269 - 11905: 0xE163, - 37270 - 11905: 0xE164, - 37271 - 11905: 0xE165, - 37272 - 11905: 0xE166, - 37273 - 11905: 0xE167, - 37274 - 11905: 0xC3D1, - 37275 - 11905: 0xC8A9, - 37276 - 11905: 0xE168, - 37277 - 11905: 0xE169, - 37278 - 11905: 0xE16A, - 37279 - 11905: 0xE16B, - 37280 - 11905: 0xE16C, - 37281 - 11905: 0xE16D, - 37282 - 11905: 0xF5B0, - 37283 - 11905: 0xF5B1, - 37284 - 11905: 0xE16E, - 37285 - 11905: 0xE16F, - 37286 - 11905: 0xE170, - 37287 - 11905: 0xE171, - 37288 - 11905: 0xE172, - 37289 - 11905: 0xE173, - 37290 - 11905: 0xF5B2, - 37291 - 11905: 0xE174, - 37292 - 11905: 0xE175, - 37293 - 11905: 0xF5B3, - 37294 - 11905: 0xF5B4, - 37295 - 11905: 0xF5B5, - 37296 - 11905: 0xE176, - 37297 - 11905: 0xE177, - 37298 - 11905: 0xE178, - 37299 - 11905: 0xE179, - 37300 - 11905: 0xF5B7, - 37301 - 11905: 0xF5B6, - 37302 - 11905: 0xE17A, - 37303 - 11905: 0xE17B, - 37304 - 11905: 0xE17C, - 37305 - 11905: 0xE17D, - 37306 - 11905: 0xF5B8, - 37307 - 11905: 0xE17E, - 37308 - 11905: 0xE180, - 37309 - 11905: 0xE181, - 37310 - 11905: 0xE182, - 37311 - 11905: 0xE183, - 37312 - 11905: 0xE184, - 37313 - 11905: 0xE185, - 37314 - 11905: 0xE186, - 37315 - 11905: 0xE187, - 37316 - 11905: 0xE188, - 37317 - 11905: 0xE189, - 37318 - 11905: 0xE18A, - 37319 - 11905: 0xB2C9, - 37320 - 11905: 0xE18B, - 37321 - 11905: 0xD3D4, - 37322 - 11905: 0xCACD, - 37323 - 11905: 0xE18C, - 37324 - 11905: 0xC0EF, - 37325 - 11905: 0xD6D8, - 37326 - 11905: 0xD2B0, - 37327 - 11905: 0xC1BF, - 37328 - 11905: 0xE18D, - 37329 - 11905: 0xBDF0, - 37330 - 11905: 0xE18E, - 37331 - 11905: 0xE18F, - 37332 - 11905: 0xE190, - 37333 - 11905: 0xE191, - 37334 - 11905: 0xE192, - 37335 - 11905: 0xE193, - 37336 - 11905: 0xE194, - 37337 - 11905: 0xE195, - 37338 - 11905: 0xE196, - 37339 - 11905: 0xE197, - 37340 - 11905: 0xB8AA, - 37341 - 11905: 0xE198, - 37342 - 11905: 0xE199, - 37343 - 11905: 0xE19A, - 37344 - 11905: 0xE19B, - 37345 - 11905: 0xE19C, - 37346 - 11905: 0xE19D, - 37347 - 11905: 0xE19E, - 37348 - 11905: 0xE19F, - 37349 - 11905: 0xE1A0, - 37350 - 11905: 0xE240, - 37351 - 11905: 0xE241, - 37352 - 11905: 0xE242, - 37353 - 11905: 0xE243, - 37354 - 11905: 0xE244, - 37355 - 11905: 0xE245, - 37356 - 11905: 0xE246, - 37357 - 11905: 0xE247, - 37358 - 11905: 0xE248, - 37359 - 11905: 0xE249, - 37360 - 11905: 0xE24A, - 37361 - 11905: 0xE24B, - 37362 - 11905: 0xE24C, - 37363 - 11905: 0xE24D, - 37364 - 11905: 0xE24E, - 37365 - 11905: 0xE24F, - 37366 - 11905: 0xE250, - 37367 - 11905: 0xE251, - 37368 - 11905: 0xE252, - 37369 - 11905: 0xE253, - 37370 - 11905: 0xE254, - 37371 - 11905: 0xE255, - 37372 - 11905: 0xE256, - 37373 - 11905: 0xE257, - 37374 - 11905: 0xE258, - 37375 - 11905: 0xE259, - 37376 - 11905: 0xE25A, - 37377 - 11905: 0xE25B, - 37378 - 11905: 0xE25C, - 37379 - 11905: 0xE25D, - 37380 - 11905: 0xE25E, - 37381 - 11905: 0xE25F, - 37382 - 11905: 0xE260, - 37383 - 11905: 0xE261, - 37384 - 11905: 0xE262, - 37385 - 11905: 0xE263, - 37386 - 11905: 0xE264, - 37387 - 11905: 0xE265, - 37388 - 11905: 0xE266, - 37389 - 11905: 0xE267, - 37390 - 11905: 0xE268, - 37391 - 11905: 0xE269, - 37392 - 11905: 0xE26A, - 37393 - 11905: 0xE26B, - 37394 - 11905: 0xE26C, - 37395 - 11905: 0xE26D, - 37396 - 11905: 0xE26E, - 37397 - 11905: 0xE26F, - 37398 - 11905: 0xE270, - 37399 - 11905: 0xE271, - 37400 - 11905: 0xE272, - 37401 - 11905: 0xE273, - 37402 - 11905: 0xE274, - 37403 - 11905: 0xE275, - 37404 - 11905: 0xE276, - 37405 - 11905: 0xE277, - 37406 - 11905: 0xE278, - 37407 - 11905: 0xE279, - 37408 - 11905: 0xE27A, - 37409 - 11905: 0xE27B, - 37410 - 11905: 0xE27C, - 37411 - 11905: 0xE27D, - 37412 - 11905: 0xE27E, - 37413 - 11905: 0xE280, - 37414 - 11905: 0xE281, - 37415 - 11905: 0xE282, - 37416 - 11905: 0xE283, - 37417 - 11905: 0xE284, - 37418 - 11905: 0xE285, - 37419 - 11905: 0xE286, - 37420 - 11905: 0xE287, - 37421 - 11905: 0xE288, - 37422 - 11905: 0xE289, - 37423 - 11905: 0xE28A, - 37424 - 11905: 0xE28B, - 37425 - 11905: 0xE28C, - 37426 - 11905: 0xE28D, - 37427 - 11905: 0xE28E, - 37428 - 11905: 0xE28F, - 37429 - 11905: 0xE290, - 37430 - 11905: 0xE291, - 37431 - 11905: 0xE292, - 37432 - 11905: 0xE293, - 37433 - 11905: 0xE294, - 37434 - 11905: 0xE295, - 37435 - 11905: 0xE296, - 37436 - 11905: 0xE297, - 37437 - 11905: 0xE298, - 37438 - 11905: 0xE299, - 37439 - 11905: 0xE29A, - 37440 - 11905: 0xE29B, - 37441 - 11905: 0xE29C, - 37442 - 11905: 0xE29D, - 37443 - 11905: 0xE29E, - 37444 - 11905: 0xE29F, - 37445 - 11905: 0xE2A0, - 37446 - 11905: 0xE340, - 37447 - 11905: 0xE341, - 37448 - 11905: 0xE342, - 37449 - 11905: 0xE343, - 37450 - 11905: 0xE344, - 37451 - 11905: 0xE345, - 37452 - 11905: 0xE346, - 37453 - 11905: 0xE347, - 37454 - 11905: 0xE348, - 37455 - 11905: 0xE349, - 37456 - 11905: 0xE34A, - 37457 - 11905: 0xE34B, - 37458 - 11905: 0xE34C, - 37459 - 11905: 0xE34D, - 37460 - 11905: 0xE34E, - 37461 - 11905: 0xE34F, - 37462 - 11905: 0xE350, - 37463 - 11905: 0xE351, - 37464 - 11905: 0xE352, - 37465 - 11905: 0xE353, - 37466 - 11905: 0xE354, - 37467 - 11905: 0xE355, - 37468 - 11905: 0xE356, - 37469 - 11905: 0xE357, - 37470 - 11905: 0xE358, - 37471 - 11905: 0xE359, - 37472 - 11905: 0xE35A, - 37473 - 11905: 0xE35B, - 37474 - 11905: 0xE35C, - 37475 - 11905: 0xE35D, - 37476 - 11905: 0xE35E, - 37477 - 11905: 0xE35F, - 37478 - 11905: 0xE360, - 37479 - 11905: 0xE361, - 37480 - 11905: 0xE362, - 37481 - 11905: 0xE363, - 37482 - 11905: 0xE364, - 37483 - 11905: 0xE365, - 37484 - 11905: 0xE366, - 37485 - 11905: 0xE367, - 37486 - 11905: 0xE368, - 37487 - 11905: 0xE369, - 37488 - 11905: 0xE36A, - 37489 - 11905: 0xE36B, - 37490 - 11905: 0xE36C, - 37491 - 11905: 0xE36D, - 37492 - 11905: 0xBCF8, - 37493 - 11905: 0xE36E, - 37494 - 11905: 0xE36F, - 37495 - 11905: 0xE370, - 37496 - 11905: 0xE371, - 37497 - 11905: 0xE372, - 37498 - 11905: 0xE373, - 37499 - 11905: 0xE374, - 37500 - 11905: 0xE375, - 37501 - 11905: 0xE376, - 37502 - 11905: 0xE377, - 37503 - 11905: 0xE378, - 37504 - 11905: 0xE379, - 37505 - 11905: 0xE37A, - 37506 - 11905: 0xE37B, - 37507 - 11905: 0xE37C, - 37508 - 11905: 0xE37D, - 37509 - 11905: 0xE37E, - 37510 - 11905: 0xE380, - 37511 - 11905: 0xE381, - 37512 - 11905: 0xE382, - 37513 - 11905: 0xE383, - 37514 - 11905: 0xE384, - 37515 - 11905: 0xE385, - 37516 - 11905: 0xE386, - 37517 - 11905: 0xE387, - 37518 - 11905: 0xF6C6, - 37519 - 11905: 0xE388, - 37520 - 11905: 0xE389, - 37521 - 11905: 0xE38A, - 37522 - 11905: 0xE38B, - 37523 - 11905: 0xE38C, - 37524 - 11905: 0xE38D, - 37525 - 11905: 0xE38E, - 37526 - 11905: 0xE38F, - 37527 - 11905: 0xE390, - 37528 - 11905: 0xE391, - 37529 - 11905: 0xE392, - 37530 - 11905: 0xE393, - 37531 - 11905: 0xE394, - 37532 - 11905: 0xE395, - 37533 - 11905: 0xE396, - 37534 - 11905: 0xE397, - 37535 - 11905: 0xE398, - 37536 - 11905: 0xE399, - 37537 - 11905: 0xE39A, - 37538 - 11905: 0xE39B, - 37539 - 11905: 0xE39C, - 37540 - 11905: 0xE39D, - 37541 - 11905: 0xE39E, - 37542 - 11905: 0xE39F, - 37543 - 11905: 0xE3A0, - 37544 - 11905: 0xE440, - 37545 - 11905: 0xE441, - 37546 - 11905: 0xE442, - 37547 - 11905: 0xE443, - 37548 - 11905: 0xE444, - 37549 - 11905: 0xE445, - 37550 - 11905: 0xF6C7, - 37551 - 11905: 0xE446, - 37552 - 11905: 0xE447, - 37553 - 11905: 0xE448, - 37554 - 11905: 0xE449, - 37555 - 11905: 0xE44A, - 37556 - 11905: 0xE44B, - 37557 - 11905: 0xE44C, - 37558 - 11905: 0xE44D, - 37559 - 11905: 0xE44E, - 37560 - 11905: 0xE44F, - 37561 - 11905: 0xE450, - 37562 - 11905: 0xE451, - 37563 - 11905: 0xE452, - 37564 - 11905: 0xE453, - 37565 - 11905: 0xE454, - 37566 - 11905: 0xE455, - 37567 - 11905: 0xE456, - 37568 - 11905: 0xE457, - 37569 - 11905: 0xE458, - 37570 - 11905: 0xE459, - 37571 - 11905: 0xE45A, - 37572 - 11905: 0xE45B, - 37573 - 11905: 0xE45C, - 37574 - 11905: 0xE45D, - 37575 - 11905: 0xE45E, - 37576 - 11905: 0xF6C8, - 37577 - 11905: 0xE45F, - 37578 - 11905: 0xE460, - 37579 - 11905: 0xE461, - 37580 - 11905: 0xE462, - 37581 - 11905: 0xE463, - 37582 - 11905: 0xE464, - 37583 - 11905: 0xE465, - 37584 - 11905: 0xE466, - 37585 - 11905: 0xE467, - 37586 - 11905: 0xE468, - 37587 - 11905: 0xE469, - 37588 - 11905: 0xE46A, - 37589 - 11905: 0xE46B, - 37590 - 11905: 0xE46C, - 37591 - 11905: 0xE46D, - 37592 - 11905: 0xE46E, - 37593 - 11905: 0xE46F, - 37594 - 11905: 0xE470, - 37595 - 11905: 0xE471, - 37596 - 11905: 0xE472, - 37597 - 11905: 0xE473, - 37598 - 11905: 0xE474, - 37599 - 11905: 0xE475, - 37600 - 11905: 0xE476, - 37601 - 11905: 0xE477, - 37602 - 11905: 0xE478, - 37603 - 11905: 0xE479, - 37604 - 11905: 0xE47A, - 37605 - 11905: 0xE47B, - 37606 - 11905: 0xE47C, - 37607 - 11905: 0xE47D, - 37608 - 11905: 0xE47E, - 37609 - 11905: 0xE480, - 37610 - 11905: 0xE481, - 37611 - 11905: 0xE482, - 37612 - 11905: 0xE483, - 37613 - 11905: 0xE484, - 37614 - 11905: 0xE485, - 37615 - 11905: 0xE486, - 37616 - 11905: 0xE487, - 37617 - 11905: 0xE488, - 37618 - 11905: 0xE489, - 37619 - 11905: 0xE48A, - 37620 - 11905: 0xE48B, - 37621 - 11905: 0xE48C, - 37622 - 11905: 0xE48D, - 37623 - 11905: 0xE48E, - 37624 - 11905: 0xE48F, - 37625 - 11905: 0xE490, - 37626 - 11905: 0xE491, - 37627 - 11905: 0xE492, - 37628 - 11905: 0xE493, - 37629 - 11905: 0xE494, - 37630 - 11905: 0xE495, - 37631 - 11905: 0xE496, - 37632 - 11905: 0xE497, - 37633 - 11905: 0xE498, - 37634 - 11905: 0xE499, - 37635 - 11905: 0xE49A, - 37636 - 11905: 0xE49B, - 37637 - 11905: 0xE49C, - 37638 - 11905: 0xE49D, - 37639 - 11905: 0xE49E, - 37640 - 11905: 0xE49F, - 37641 - 11905: 0xE4A0, - 37642 - 11905: 0xE540, - 37643 - 11905: 0xE541, - 37644 - 11905: 0xE542, - 37645 - 11905: 0xE543, - 37646 - 11905: 0xE544, - 37647 - 11905: 0xE545, - 37648 - 11905: 0xE546, - 37649 - 11905: 0xE547, - 37650 - 11905: 0xE548, - 37651 - 11905: 0xE549, - 37652 - 11905: 0xE54A, - 37653 - 11905: 0xE54B, - 37654 - 11905: 0xE54C, - 37655 - 11905: 0xE54D, - 37656 - 11905: 0xE54E, - 37657 - 11905: 0xE54F, - 37658 - 11905: 0xE550, - 37659 - 11905: 0xE551, - 37660 - 11905: 0xE552, - 37661 - 11905: 0xE553, - 37662 - 11905: 0xE554, - 37663 - 11905: 0xE555, - 37664 - 11905: 0xE556, - 37665 - 11905: 0xE557, - 37666 - 11905: 0xE558, - 37667 - 11905: 0xE559, - 37668 - 11905: 0xE55A, - 37669 - 11905: 0xE55B, - 37670 - 11905: 0xE55C, - 37671 - 11905: 0xE55D, - 37672 - 11905: 0xE55E, - 37673 - 11905: 0xE55F, - 37674 - 11905: 0xE560, - 37675 - 11905: 0xE561, - 37676 - 11905: 0xE562, - 37677 - 11905: 0xE563, - 37678 - 11905: 0xE564, - 37679 - 11905: 0xE565, - 37680 - 11905: 0xE566, - 37681 - 11905: 0xE567, - 37682 - 11905: 0xE568, - 37683 - 11905: 0xE569, - 37684 - 11905: 0xE56A, - 37685 - 11905: 0xE56B, - 37686 - 11905: 0xE56C, - 37687 - 11905: 0xE56D, - 37688 - 11905: 0xE56E, - 37689 - 11905: 0xE56F, - 37690 - 11905: 0xE570, - 37691 - 11905: 0xE571, - 37692 - 11905: 0xE572, - 37693 - 11905: 0xE573, - 37694 - 11905: 0xF6C9, - 37695 - 11905: 0xE574, - 37696 - 11905: 0xE575, - 37697 - 11905: 0xE576, - 37698 - 11905: 0xE577, - 37699 - 11905: 0xE578, - 37700 - 11905: 0xE579, - 37701 - 11905: 0xE57A, - 37702 - 11905: 0xE57B, - 37703 - 11905: 0xE57C, - 37704 - 11905: 0xE57D, - 37705 - 11905: 0xE57E, - 37706 - 11905: 0xE580, - 37707 - 11905: 0xE581, - 37708 - 11905: 0xE582, - 37709 - 11905: 0xE583, - 37710 - 11905: 0xE584, - 37711 - 11905: 0xE585, - 37712 - 11905: 0xE586, - 37713 - 11905: 0xE587, - 37714 - 11905: 0xE588, - 37715 - 11905: 0xE589, - 37716 - 11905: 0xE58A, - 37717 - 11905: 0xE58B, - 37718 - 11905: 0xE58C, - 37719 - 11905: 0xE58D, - 37720 - 11905: 0xE58E, - 37721 - 11905: 0xE58F, - 37722 - 11905: 0xE590, - 37723 - 11905: 0xE591, - 37724 - 11905: 0xE592, - 37725 - 11905: 0xE593, - 37726 - 11905: 0xE594, - 37727 - 11905: 0xE595, - 37728 - 11905: 0xE596, - 37729 - 11905: 0xE597, - 37730 - 11905: 0xE598, - 37731 - 11905: 0xE599, - 37732 - 11905: 0xE59A, - 37733 - 11905: 0xE59B, - 37734 - 11905: 0xE59C, - 37735 - 11905: 0xE59D, - 37736 - 11905: 0xE59E, - 37737 - 11905: 0xE59F, - 37738 - 11905: 0xF6CA, - 37739 - 11905: 0xE5A0, - 37740 - 11905: 0xE640, - 37741 - 11905: 0xE641, - 37742 - 11905: 0xE642, - 37743 - 11905: 0xE643, - 37744 - 11905: 0xE644, - 37745 - 11905: 0xE645, - 37746 - 11905: 0xE646, - 37747 - 11905: 0xE647, - 37748 - 11905: 0xE648, - 37749 - 11905: 0xE649, - 37750 - 11905: 0xE64A, - 37751 - 11905: 0xE64B, - 37752 - 11905: 0xE64C, - 37753 - 11905: 0xE64D, - 37754 - 11905: 0xE64E, - 37755 - 11905: 0xE64F, - 37756 - 11905: 0xE650, - 37757 - 11905: 0xE651, - 37758 - 11905: 0xE652, - 37759 - 11905: 0xE653, - 37760 - 11905: 0xE654, - 37761 - 11905: 0xE655, - 37762 - 11905: 0xE656, - 37763 - 11905: 0xE657, - 37764 - 11905: 0xE658, - 37765 - 11905: 0xE659, - 37766 - 11905: 0xE65A, - 37767 - 11905: 0xE65B, - 37768 - 11905: 0xE65C, - 37769 - 11905: 0xE65D, - 37770 - 11905: 0xE65E, - 37771 - 11905: 0xE65F, - 37772 - 11905: 0xE660, - 37773 - 11905: 0xE661, - 37774 - 11905: 0xE662, - 37775 - 11905: 0xF6CC, - 37776 - 11905: 0xE663, - 37777 - 11905: 0xE664, - 37778 - 11905: 0xE665, - 37779 - 11905: 0xE666, - 37780 - 11905: 0xE667, - 37781 - 11905: 0xE668, - 37782 - 11905: 0xE669, - 37783 - 11905: 0xE66A, - 37784 - 11905: 0xE66B, - 37785 - 11905: 0xE66C, - 37786 - 11905: 0xE66D, - 37787 - 11905: 0xE66E, - 37788 - 11905: 0xE66F, - 37789 - 11905: 0xE670, - 37790 - 11905: 0xE671, - 37791 - 11905: 0xE672, - 37792 - 11905: 0xE673, - 37793 - 11905: 0xE674, - 37794 - 11905: 0xE675, - 37795 - 11905: 0xE676, - 37796 - 11905: 0xE677, - 37797 - 11905: 0xE678, - 37798 - 11905: 0xE679, - 37799 - 11905: 0xE67A, - 37800 - 11905: 0xE67B, - 37801 - 11905: 0xE67C, - 37802 - 11905: 0xE67D, - 37803 - 11905: 0xE67E, - 37804 - 11905: 0xE680, - 37805 - 11905: 0xE681, - 37806 - 11905: 0xE682, - 37807 - 11905: 0xE683, - 37808 - 11905: 0xE684, - 37809 - 11905: 0xE685, - 37810 - 11905: 0xE686, - 37811 - 11905: 0xE687, - 37812 - 11905: 0xE688, - 37813 - 11905: 0xE689, - 37814 - 11905: 0xE68A, - 37815 - 11905: 0xE68B, - 37816 - 11905: 0xE68C, - 37817 - 11905: 0xE68D, - 37818 - 11905: 0xE68E, - 37819 - 11905: 0xE68F, - 37820 - 11905: 0xE690, - 37821 - 11905: 0xE691, - 37822 - 11905: 0xE692, - 37823 - 11905: 0xE693, - 37824 - 11905: 0xE694, - 37825 - 11905: 0xE695, - 37826 - 11905: 0xE696, - 37827 - 11905: 0xE697, - 37828 - 11905: 0xE698, - 37829 - 11905: 0xE699, - 37830 - 11905: 0xE69A, - 37831 - 11905: 0xE69B, - 37832 - 11905: 0xE69C, - 37833 - 11905: 0xE69D, - 37834 - 11905: 0xF6CB, - 37835 - 11905: 0xE69E, - 37836 - 11905: 0xE69F, - 37837 - 11905: 0xE6A0, - 37838 - 11905: 0xE740, - 37839 - 11905: 0xE741, - 37840 - 11905: 0xE742, - 37841 - 11905: 0xE743, - 37842 - 11905: 0xE744, - 37843 - 11905: 0xE745, - 37844 - 11905: 0xE746, - 37845 - 11905: 0xE747, - 37846 - 11905: 0xF7E9, - 37847 - 11905: 0xE748, - 37848 - 11905: 0xE749, - 37849 - 11905: 0xE74A, - 37850 - 11905: 0xE74B, - 37851 - 11905: 0xE74C, - 37852 - 11905: 0xE74D, - 37853 - 11905: 0xE74E, - 37854 - 11905: 0xE74F, - 37855 - 11905: 0xE750, - 37856 - 11905: 0xE751, - 37857 - 11905: 0xE752, - 37858 - 11905: 0xE753, - 37859 - 11905: 0xE754, - 37860 - 11905: 0xE755, - 37861 - 11905: 0xE756, - 37862 - 11905: 0xE757, - 37863 - 11905: 0xE758, - 37864 - 11905: 0xE759, - 37865 - 11905: 0xE75A, - 37866 - 11905: 0xE75B, - 37867 - 11905: 0xE75C, - 37868 - 11905: 0xE75D, - 37869 - 11905: 0xE75E, - 37870 - 11905: 0xE75F, - 37871 - 11905: 0xE760, - 37872 - 11905: 0xE761, - 37873 - 11905: 0xE762, - 37874 - 11905: 0xE763, - 37875 - 11905: 0xE764, - 37876 - 11905: 0xE765, - 37877 - 11905: 0xE766, - 37878 - 11905: 0xE767, - 37879 - 11905: 0xE768, - 37880 - 11905: 0xE769, - 37881 - 11905: 0xE76A, - 37882 - 11905: 0xE76B, - 37883 - 11905: 0xE76C, - 37884 - 11905: 0xE76D, - 37885 - 11905: 0xE76E, - 37886 - 11905: 0xE76F, - 37887 - 11905: 0xE770, - 37888 - 11905: 0xE771, - 37889 - 11905: 0xE772, - 37890 - 11905: 0xE773, - 37891 - 11905: 0xE774, - 37892 - 11905: 0xE775, - 37893 - 11905: 0xE776, - 37894 - 11905: 0xE777, - 37895 - 11905: 0xE778, - 37896 - 11905: 0xE779, - 37897 - 11905: 0xE77A, - 37898 - 11905: 0xE77B, - 37899 - 11905: 0xE77C, - 37900 - 11905: 0xE77D, - 37901 - 11905: 0xE77E, - 37902 - 11905: 0xE780, - 37903 - 11905: 0xE781, - 37904 - 11905: 0xE782, - 37905 - 11905: 0xE783, - 37906 - 11905: 0xE784, - 37907 - 11905: 0xE785, - 37908 - 11905: 0xE786, - 37909 - 11905: 0xE787, - 37910 - 11905: 0xE788, - 37911 - 11905: 0xE789, - 37912 - 11905: 0xE78A, - 37913 - 11905: 0xE78B, - 37914 - 11905: 0xE78C, - 37915 - 11905: 0xE78D, - 37916 - 11905: 0xE78E, - 37917 - 11905: 0xE78F, - 37918 - 11905: 0xE790, - 37919 - 11905: 0xE791, - 37920 - 11905: 0xE792, - 37921 - 11905: 0xE793, - 37922 - 11905: 0xE794, - 37923 - 11905: 0xE795, - 37924 - 11905: 0xE796, - 37925 - 11905: 0xE797, - 37926 - 11905: 0xE798, - 37927 - 11905: 0xE799, - 37928 - 11905: 0xE79A, - 37929 - 11905: 0xE79B, - 37930 - 11905: 0xE79C, - 37931 - 11905: 0xE79D, - 37932 - 11905: 0xE79E, - 37933 - 11905: 0xE79F, - 37934 - 11905: 0xE7A0, - 37935 - 11905: 0xE840, - 37936 - 11905: 0xE841, - 37937 - 11905: 0xE842, - 37938 - 11905: 0xE843, - 37939 - 11905: 0xE844, - 37940 - 11905: 0xE845, - 37941 - 11905: 0xE846, - 37942 - 11905: 0xE847, - 37943 - 11905: 0xE848, - 37944 - 11905: 0xE849, - 37945 - 11905: 0xE84A, - 37946 - 11905: 0xE84B, - 37947 - 11905: 0xE84C, - 37948 - 11905: 0xE84D, - 37949 - 11905: 0xE84E, - 37950 - 11905: 0xF6CD, - 37951 - 11905: 0xE84F, - 37952 - 11905: 0xE850, - 37953 - 11905: 0xE851, - 37954 - 11905: 0xE852, - 37955 - 11905: 0xE853, - 37956 - 11905: 0xE854, - 37957 - 11905: 0xE855, - 37958 - 11905: 0xE856, - 37959 - 11905: 0xE857, - 37960 - 11905: 0xE858, - 37961 - 11905: 0xE859, - 37962 - 11905: 0xE85A, - 37963 - 11905: 0xE85B, - 37964 - 11905: 0xE85C, - 37965 - 11905: 0xE85D, - 37966 - 11905: 0xE85E, - 37967 - 11905: 0xE85F, - 37968 - 11905: 0xE860, - 37969 - 11905: 0xE861, - 37970 - 11905: 0xE862, - 37971 - 11905: 0xE863, - 37972 - 11905: 0xE864, - 37973 - 11905: 0xE865, - 37974 - 11905: 0xE866, - 37975 - 11905: 0xE867, - 37976 - 11905: 0xE868, - 37977 - 11905: 0xE869, - 37978 - 11905: 0xE86A, - 37979 - 11905: 0xE86B, - 37980 - 11905: 0xE86C, - 37981 - 11905: 0xE86D, - 37982 - 11905: 0xE86E, - 37983 - 11905: 0xE86F, - 37984 - 11905: 0xE870, - 37985 - 11905: 0xE871, - 37986 - 11905: 0xE872, - 37987 - 11905: 0xE873, - 37988 - 11905: 0xE874, - 37989 - 11905: 0xE875, - 37990 - 11905: 0xE876, - 37991 - 11905: 0xE877, - 37992 - 11905: 0xE878, - 37993 - 11905: 0xE879, - 37994 - 11905: 0xE87A, - 37995 - 11905: 0xF6CE, - 37996 - 11905: 0xE87B, - 37997 - 11905: 0xE87C, - 37998 - 11905: 0xE87D, - 37999 - 11905: 0xE87E, - 38000 - 11905: 0xE880, - 38001 - 11905: 0xE881, - 38002 - 11905: 0xE882, - 38003 - 11905: 0xE883, - 38004 - 11905: 0xE884, - 38005 - 11905: 0xE885, - 38006 - 11905: 0xE886, - 38007 - 11905: 0xE887, - 38008 - 11905: 0xE888, - 38009 - 11905: 0xE889, - 38010 - 11905: 0xE88A, - 38011 - 11905: 0xE88B, - 38012 - 11905: 0xE88C, - 38013 - 11905: 0xE88D, - 38014 - 11905: 0xE88E, - 38015 - 11905: 0xE88F, - 38016 - 11905: 0xE890, - 38017 - 11905: 0xE891, - 38018 - 11905: 0xE892, - 38019 - 11905: 0xE893, - 38020 - 11905: 0xE894, - 38021 - 11905: 0xEEC4, - 38022 - 11905: 0xEEC5, - 38023 - 11905: 0xEEC6, - 38024 - 11905: 0xD5EB, - 38025 - 11905: 0xB6A4, - 38026 - 11905: 0xEEC8, - 38027 - 11905: 0xEEC7, - 38028 - 11905: 0xEEC9, - 38029 - 11905: 0xEECA, - 38030 - 11905: 0xC7A5, - 38031 - 11905: 0xEECB, - 38032 - 11905: 0xEECC, - 38033 - 11905: 0xE895, - 38034 - 11905: 0xB7B0, - 38035 - 11905: 0xB5F6, - 38036 - 11905: 0xEECD, - 38037 - 11905: 0xEECF, - 38038 - 11905: 0xE896, - 38039 - 11905: 0xEECE, - 38040 - 11905: 0xE897, - 38041 - 11905: 0xB8C6, - 38042 - 11905: 0xEED0, - 38043 - 11905: 0xEED1, - 38044 - 11905: 0xEED2, - 38045 - 11905: 0xB6DB, - 38046 - 11905: 0xB3AE, - 38047 - 11905: 0xD6D3, - 38048 - 11905: 0xC4C6, - 38049 - 11905: 0xB1B5, - 38050 - 11905: 0xB8D6, - 38051 - 11905: 0xEED3, - 38052 - 11905: 0xEED4, - 38053 - 11905: 0xD4BF, - 38054 - 11905: 0xC7D5, - 38055 - 11905: 0xBEFB, - 38056 - 11905: 0xCED9, - 38057 - 11905: 0xB9B3, - 38058 - 11905: 0xEED6, - 38059 - 11905: 0xEED5, - 38060 - 11905: 0xEED8, - 38061 - 11905: 0xEED7, - 38062 - 11905: 0xC5A5, - 38063 - 11905: 0xEED9, - 38064 - 11905: 0xEEDA, - 38065 - 11905: 0xC7AE, - 38066 - 11905: 0xEEDB, - 38067 - 11905: 0xC7AF, - 38068 - 11905: 0xEEDC, - 38069 - 11905: 0xB2A7, - 38070 - 11905: 0xEEDD, - 38071 - 11905: 0xEEDE, - 38072 - 11905: 0xEEDF, - 38073 - 11905: 0xEEE0, - 38074 - 11905: 0xEEE1, - 38075 - 11905: 0xD7EA, - 38076 - 11905: 0xEEE2, - 38077 - 11905: 0xEEE3, - 38078 - 11905: 0xBCD8, - 38079 - 11905: 0xEEE4, - 38080 - 11905: 0xD3CB, - 38081 - 11905: 0xCCFA, - 38082 - 11905: 0xB2AC, - 38083 - 11905: 0xC1E5, - 38084 - 11905: 0xEEE5, - 38085 - 11905: 0xC7A6, - 38086 - 11905: 0xC3AD, - 38087 - 11905: 0xE898, - 38088 - 11905: 0xEEE6, - 38089 - 11905: 0xEEE7, - 38090 - 11905: 0xEEE8, - 38091 - 11905: 0xEEE9, - 38092 - 11905: 0xEEEA, - 38093 - 11905: 0xEEEB, - 38094 - 11905: 0xEEEC, - 38095 - 11905: 0xE899, - 38096 - 11905: 0xEEED, - 38097 - 11905: 0xEEEE, - 38098 - 11905: 0xEEEF, - 38099 - 11905: 0xE89A, - 38100 - 11905: 0xE89B, - 38101 - 11905: 0xEEF0, - 38102 - 11905: 0xEEF1, - 38103 - 11905: 0xEEF2, - 38104 - 11905: 0xEEF4, - 38105 - 11905: 0xEEF3, - 38106 - 11905: 0xE89C, - 38107 - 11905: 0xEEF5, - 38108 - 11905: 0xCDAD, - 38109 - 11905: 0xC2C1, - 38110 - 11905: 0xEEF6, - 38111 - 11905: 0xEEF7, - 38112 - 11905: 0xEEF8, - 38113 - 11905: 0xD5A1, - 38114 - 11905: 0xEEF9, - 38115 - 11905: 0xCFB3, - 38116 - 11905: 0xEEFA, - 38117 - 11905: 0xEEFB, - 38118 - 11905: 0xE89D, - 38119 - 11905: 0xEEFC, - 38120 - 11905: 0xEEFD, - 38121 - 11905: 0xEFA1, - 38122 - 11905: 0xEEFE, - 38123 - 11905: 0xEFA2, - 38124 - 11905: 0xB8F5, - 38125 - 11905: 0xC3FA, - 38126 - 11905: 0xEFA3, - 38127 - 11905: 0xEFA4, - 38128 - 11905: 0xBDC2, - 38129 - 11905: 0xD2BF, - 38130 - 11905: 0xB2F9, - 38131 - 11905: 0xEFA5, - 38132 - 11905: 0xEFA6, - 38133 - 11905: 0xEFA7, - 38134 - 11905: 0xD2F8, - 38135 - 11905: 0xEFA8, - 38136 - 11905: 0xD6FD, - 38137 - 11905: 0xEFA9, - 38138 - 11905: 0xC6CC, - 38139 - 11905: 0xE89E, - 38140 - 11905: 0xEFAA, - 38141 - 11905: 0xEFAB, - 38142 - 11905: 0xC1B4, - 38143 - 11905: 0xEFAC, - 38144 - 11905: 0xCFFA, - 38145 - 11905: 0xCBF8, - 38146 - 11905: 0xEFAE, - 38147 - 11905: 0xEFAD, - 38148 - 11905: 0xB3FA, - 38149 - 11905: 0xB9F8, - 38150 - 11905: 0xEFAF, - 38151 - 11905: 0xEFB0, - 38152 - 11905: 0xD0E2, - 38153 - 11905: 0xEFB1, - 38154 - 11905: 0xEFB2, - 38155 - 11905: 0xB7E6, - 38156 - 11905: 0xD0BF, - 38157 - 11905: 0xEFB3, - 38158 - 11905: 0xEFB4, - 38159 - 11905: 0xEFB5, - 38160 - 11905: 0xC8F1, - 38161 - 11905: 0xCCE0, - 38162 - 11905: 0xEFB6, - 38163 - 11905: 0xEFB7, - 38164 - 11905: 0xEFB8, - 38165 - 11905: 0xEFB9, - 38166 - 11905: 0xEFBA, - 38167 - 11905: 0xD5E0, - 38168 - 11905: 0xEFBB, - 38169 - 11905: 0xB4ED, - 38170 - 11905: 0xC3AA, - 38171 - 11905: 0xEFBC, - 38172 - 11905: 0xE89F, - 38173 - 11905: 0xEFBD, - 38174 - 11905: 0xEFBE, - 38175 - 11905: 0xEFBF, - 38176 - 11905: 0xE8A0, - 38177 - 11905: 0xCEFD, - 38178 - 11905: 0xEFC0, - 38179 - 11905: 0xC2E0, - 38180 - 11905: 0xB4B8, - 38181 - 11905: 0xD7B6, - 38182 - 11905: 0xBDF5, - 38183 - 11905: 0xE940, - 38184 - 11905: 0xCFC7, - 38185 - 11905: 0xEFC3, - 38186 - 11905: 0xEFC1, - 38187 - 11905: 0xEFC2, - 38188 - 11905: 0xEFC4, - 38189 - 11905: 0xB6A7, - 38190 - 11905: 0xBCFC, - 38191 - 11905: 0xBEE2, - 38192 - 11905: 0xC3CC, - 38193 - 11905: 0xEFC5, - 38194 - 11905: 0xEFC6, - 38195 - 11905: 0xE941, - 38196 - 11905: 0xEFC7, - 38197 - 11905: 0xEFCF, - 38198 - 11905: 0xEFC8, - 38199 - 11905: 0xEFC9, - 38200 - 11905: 0xEFCA, - 38201 - 11905: 0xC7C2, - 38202 - 11905: 0xEFF1, - 38203 - 11905: 0xB6CD, - 38204 - 11905: 0xEFCB, - 38205 - 11905: 0xE942, - 38206 - 11905: 0xEFCC, - 38207 - 11905: 0xEFCD, - 38208 - 11905: 0xB6C6, - 38209 - 11905: 0xC3BE, - 38210 - 11905: 0xEFCE, - 38211 - 11905: 0xE943, - 38212 - 11905: 0xEFD0, - 38213 - 11905: 0xEFD1, - 38214 - 11905: 0xEFD2, - 38215 - 11905: 0xD5F2, - 38216 - 11905: 0xE944, - 38217 - 11905: 0xEFD3, - 38218 - 11905: 0xC4F7, - 38219 - 11905: 0xE945, - 38220 - 11905: 0xEFD4, - 38221 - 11905: 0xC4F8, - 38222 - 11905: 0xEFD5, - 38223 - 11905: 0xEFD6, - 38224 - 11905: 0xB8E4, - 38225 - 11905: 0xB0F7, - 38226 - 11905: 0xEFD7, - 38227 - 11905: 0xEFD8, - 38228 - 11905: 0xEFD9, - 38229 - 11905: 0xE946, - 38230 - 11905: 0xEFDA, - 38231 - 11905: 0xEFDB, - 38232 - 11905: 0xEFDC, - 38233 - 11905: 0xEFDD, - 38234 - 11905: 0xE947, - 38235 - 11905: 0xEFDE, - 38236 - 11905: 0xBEB5, - 38237 - 11905: 0xEFE1, - 38238 - 11905: 0xEFDF, - 38239 - 11905: 0xEFE0, - 38240 - 11905: 0xE948, - 38241 - 11905: 0xEFE2, - 38242 - 11905: 0xEFE3, - 38243 - 11905: 0xC1CD, - 38244 - 11905: 0xEFE4, - 38245 - 11905: 0xEFE5, - 38246 - 11905: 0xEFE6, - 38247 - 11905: 0xEFE7, - 38248 - 11905: 0xEFE8, - 38249 - 11905: 0xEFE9, - 38250 - 11905: 0xEFEA, - 38251 - 11905: 0xEFEB, - 38252 - 11905: 0xEFEC, - 38253 - 11905: 0xC0D8, - 38254 - 11905: 0xE949, - 38255 - 11905: 0xEFED, - 38256 - 11905: 0xC1AD, - 38257 - 11905: 0xEFEE, - 38258 - 11905: 0xEFEF, - 38259 - 11905: 0xEFF0, - 38260 - 11905: 0xE94A, - 38261 - 11905: 0xE94B, - 38262 - 11905: 0xCFE2, - 38263 - 11905: 0xE94C, - 38264 - 11905: 0xE94D, - 38265 - 11905: 0xE94E, - 38266 - 11905: 0xE94F, - 38267 - 11905: 0xE950, - 38268 - 11905: 0xE951, - 38269 - 11905: 0xE952, - 38270 - 11905: 0xE953, - 38271 - 11905: 0xB3A4, - 38272 - 11905: 0xE954, - 38273 - 11905: 0xE955, - 38274 - 11905: 0xE956, - 38275 - 11905: 0xE957, - 38276 - 11905: 0xE958, - 38277 - 11905: 0xE959, - 38278 - 11905: 0xE95A, - 38279 - 11905: 0xE95B, - 38280 - 11905: 0xE95C, - 38281 - 11905: 0xE95D, - 38282 - 11905: 0xE95E, - 38283 - 11905: 0xE95F, - 38284 - 11905: 0xE960, - 38285 - 11905: 0xE961, - 38286 - 11905: 0xE962, - 38287 - 11905: 0xE963, - 38288 - 11905: 0xE964, - 38289 - 11905: 0xE965, - 38290 - 11905: 0xE966, - 38291 - 11905: 0xE967, - 38292 - 11905: 0xE968, - 38293 - 11905: 0xE969, - 38294 - 11905: 0xE96A, - 38295 - 11905: 0xE96B, - 38296 - 11905: 0xE96C, - 38297 - 11905: 0xE96D, - 38298 - 11905: 0xE96E, - 38299 - 11905: 0xE96F, - 38300 - 11905: 0xE970, - 38301 - 11905: 0xE971, - 38302 - 11905: 0xE972, - 38303 - 11905: 0xE973, - 38304 - 11905: 0xE974, - 38305 - 11905: 0xE975, - 38306 - 11905: 0xE976, - 38307 - 11905: 0xE977, - 38308 - 11905: 0xE978, - 38309 - 11905: 0xE979, - 38310 - 11905: 0xE97A, - 38311 - 11905: 0xE97B, - 38312 - 11905: 0xE97C, - 38313 - 11905: 0xE97D, - 38314 - 11905: 0xE97E, - 38315 - 11905: 0xE980, - 38316 - 11905: 0xE981, - 38317 - 11905: 0xE982, - 38318 - 11905: 0xE983, - 38319 - 11905: 0xE984, - 38320 - 11905: 0xE985, - 38321 - 11905: 0xE986, - 38322 - 11905: 0xE987, - 38323 - 11905: 0xE988, - 38324 - 11905: 0xE989, - 38325 - 11905: 0xE98A, - 38326 - 11905: 0xE98B, - 38327 - 11905: 0xE98C, - 38328 - 11905: 0xE98D, - 38329 - 11905: 0xE98E, - 38330 - 11905: 0xE98F, - 38331 - 11905: 0xE990, - 38332 - 11905: 0xE991, - 38333 - 11905: 0xE992, - 38334 - 11905: 0xE993, - 38335 - 11905: 0xE994, - 38336 - 11905: 0xE995, - 38337 - 11905: 0xE996, - 38338 - 11905: 0xE997, - 38339 - 11905: 0xE998, - 38340 - 11905: 0xE999, - 38341 - 11905: 0xE99A, - 38342 - 11905: 0xE99B, - 38343 - 11905: 0xE99C, - 38344 - 11905: 0xE99D, - 38345 - 11905: 0xE99E, - 38346 - 11905: 0xE99F, - 38347 - 11905: 0xE9A0, - 38348 - 11905: 0xEA40, - 38349 - 11905: 0xEA41, - 38350 - 11905: 0xEA42, - 38351 - 11905: 0xEA43, - 38352 - 11905: 0xEA44, - 38353 - 11905: 0xEA45, - 38354 - 11905: 0xEA46, - 38355 - 11905: 0xEA47, - 38356 - 11905: 0xEA48, - 38357 - 11905: 0xEA49, - 38358 - 11905: 0xEA4A, - 38359 - 11905: 0xEA4B, - 38360 - 11905: 0xEA4C, - 38361 - 11905: 0xEA4D, - 38362 - 11905: 0xEA4E, - 38363 - 11905: 0xEA4F, - 38364 - 11905: 0xEA50, - 38365 - 11905: 0xEA51, - 38366 - 11905: 0xEA52, - 38367 - 11905: 0xEA53, - 38368 - 11905: 0xEA54, - 38369 - 11905: 0xEA55, - 38370 - 11905: 0xEA56, - 38371 - 11905: 0xEA57, - 38372 - 11905: 0xEA58, - 38373 - 11905: 0xEA59, - 38374 - 11905: 0xEA5A, - 38375 - 11905: 0xEA5B, - 38376 - 11905: 0xC3C5, - 38377 - 11905: 0xE3C5, - 38378 - 11905: 0xC9C1, - 38379 - 11905: 0xE3C6, - 38380 - 11905: 0xEA5C, - 38381 - 11905: 0xB1D5, - 38382 - 11905: 0xCECA, - 38383 - 11905: 0xB4B3, - 38384 - 11905: 0xC8F2, - 38385 - 11905: 0xE3C7, - 38386 - 11905: 0xCFD0, - 38387 - 11905: 0xE3C8, - 38388 - 11905: 0xBCE4, - 38389 - 11905: 0xE3C9, - 38390 - 11905: 0xE3CA, - 38391 - 11905: 0xC3C6, - 38392 - 11905: 0xD5A2, - 38393 - 11905: 0xC4D6, - 38394 - 11905: 0xB9EB, - 38395 - 11905: 0xCEC5, - 38396 - 11905: 0xE3CB, - 38397 - 11905: 0xC3F6, - 38398 - 11905: 0xE3CC, - 38399 - 11905: 0xEA5D, - 38400 - 11905: 0xB7A7, - 38401 - 11905: 0xB8F3, - 38402 - 11905: 0xBAD2, - 38403 - 11905: 0xE3CD, - 38404 - 11905: 0xE3CE, - 38405 - 11905: 0xD4C4, - 38406 - 11905: 0xE3CF, - 38407 - 11905: 0xEA5E, - 38408 - 11905: 0xE3D0, - 38409 - 11905: 0xD1CB, - 38410 - 11905: 0xE3D1, - 38411 - 11905: 0xE3D2, - 38412 - 11905: 0xE3D3, - 38413 - 11905: 0xE3D4, - 38414 - 11905: 0xD1D6, - 38415 - 11905: 0xE3D5, - 38416 - 11905: 0xB2FB, - 38417 - 11905: 0xC0BB, - 38418 - 11905: 0xE3D6, - 38419 - 11905: 0xEA5F, - 38420 - 11905: 0xC0AB, - 38421 - 11905: 0xE3D7, - 38422 - 11905: 0xE3D8, - 38423 - 11905: 0xE3D9, - 38424 - 11905: 0xEA60, - 38425 - 11905: 0xE3DA, - 38426 - 11905: 0xE3DB, - 38427 - 11905: 0xEA61, - 38428 - 11905: 0xB8B7, - 38429 - 11905: 0xDAE2, - 38430 - 11905: 0xEA62, - 38431 - 11905: 0xB6D3, - 38432 - 11905: 0xEA63, - 38433 - 11905: 0xDAE4, - 38434 - 11905: 0xDAE3, - 38435 - 11905: 0xEA64, - 38436 - 11905: 0xEA65, - 38437 - 11905: 0xEA66, - 38438 - 11905: 0xEA67, - 38439 - 11905: 0xEA68, - 38440 - 11905: 0xEA69, - 38441 - 11905: 0xEA6A, - 38442 - 11905: 0xDAE6, - 38443 - 11905: 0xEA6B, - 38444 - 11905: 0xEA6C, - 38445 - 11905: 0xEA6D, - 38446 - 11905: 0xC8EE, - 38447 - 11905: 0xEA6E, - 38448 - 11905: 0xEA6F, - 38449 - 11905: 0xDAE5, - 38450 - 11905: 0xB7C0, - 38451 - 11905: 0xD1F4, - 38452 - 11905: 0xD2F5, - 38453 - 11905: 0xD5F3, - 38454 - 11905: 0xBDD7, - 38455 - 11905: 0xEA70, - 38456 - 11905: 0xEA71, - 38457 - 11905: 0xEA72, - 38458 - 11905: 0xEA73, - 38459 - 11905: 0xD7E8, - 38460 - 11905: 0xDAE8, - 38461 - 11905: 0xDAE7, - 38462 - 11905: 0xEA74, - 38463 - 11905: 0xB0A2, - 38464 - 11905: 0xCDD3, - 38465 - 11905: 0xEA75, - 38466 - 11905: 0xDAE9, - 38467 - 11905: 0xEA76, - 38468 - 11905: 0xB8BD, - 38469 - 11905: 0xBCCA, - 38470 - 11905: 0xC2BD, - 38471 - 11905: 0xC2A4, - 38472 - 11905: 0xB3C2, - 38473 - 11905: 0xDAEA, - 38474 - 11905: 0xEA77, - 38475 - 11905: 0xC2AA, - 38476 - 11905: 0xC4B0, - 38477 - 11905: 0xBDB5, - 38478 - 11905: 0xEA78, - 38479 - 11905: 0xEA79, - 38480 - 11905: 0xCFDE, - 38481 - 11905: 0xEA7A, - 38482 - 11905: 0xEA7B, - 38483 - 11905: 0xEA7C, - 38484 - 11905: 0xDAEB, - 38485 - 11905: 0xC9C2, - 38486 - 11905: 0xEA7D, - 38487 - 11905: 0xEA7E, - 38488 - 11905: 0xEA80, - 38489 - 11905: 0xEA81, - 38490 - 11905: 0xEA82, - 38491 - 11905: 0xB1DD, - 38492 - 11905: 0xEA83, - 38493 - 11905: 0xEA84, - 38494 - 11905: 0xEA85, - 38495 - 11905: 0xDAEC, - 38496 - 11905: 0xEA86, - 38497 - 11905: 0xB6B8, - 38498 - 11905: 0xD4BA, - 38499 - 11905: 0xEA87, - 38500 - 11905: 0xB3FD, - 38501 - 11905: 0xEA88, - 38502 - 11905: 0xEA89, - 38503 - 11905: 0xDAED, - 38504 - 11905: 0xD4C9, - 38505 - 11905: 0xCFD5, - 38506 - 11905: 0xC5E3, - 38507 - 11905: 0xEA8A, - 38508 - 11905: 0xDAEE, - 38509 - 11905: 0xEA8B, - 38510 - 11905: 0xEA8C, - 38511 - 11905: 0xEA8D, - 38512 - 11905: 0xEA8E, - 38513 - 11905: 0xEA8F, - 38514 - 11905: 0xDAEF, - 38515 - 11905: 0xEA90, - 38516 - 11905: 0xDAF0, - 38517 - 11905: 0xC1EA, - 38518 - 11905: 0xCCD5, - 38519 - 11905: 0xCFDD, - 38520 - 11905: 0xEA91, - 38521 - 11905: 0xEA92, - 38522 - 11905: 0xEA93, - 38523 - 11905: 0xEA94, - 38524 - 11905: 0xEA95, - 38525 - 11905: 0xEA96, - 38526 - 11905: 0xEA97, - 38527 - 11905: 0xEA98, - 38528 - 11905: 0xEA99, - 38529 - 11905: 0xEA9A, - 38530 - 11905: 0xEA9B, - 38531 - 11905: 0xEA9C, - 38532 - 11905: 0xEA9D, - 38533 - 11905: 0xD3E7, - 38534 - 11905: 0xC2A1, - 38535 - 11905: 0xEA9E, - 38536 - 11905: 0xDAF1, - 38537 - 11905: 0xEA9F, - 38538 - 11905: 0xEAA0, - 38539 - 11905: 0xCBE5, - 38540 - 11905: 0xEB40, - 38541 - 11905: 0xDAF2, - 38542 - 11905: 0xEB41, - 38543 - 11905: 0xCBE6, - 38544 - 11905: 0xD2FE, - 38545 - 11905: 0xEB42, - 38546 - 11905: 0xEB43, - 38547 - 11905: 0xEB44, - 38548 - 11905: 0xB8F4, - 38549 - 11905: 0xEB45, - 38550 - 11905: 0xEB46, - 38551 - 11905: 0xDAF3, - 38552 - 11905: 0xB0AF, - 38553 - 11905: 0xCFB6, - 38554 - 11905: 0xEB47, - 38555 - 11905: 0xEB48, - 38556 - 11905: 0xD5CF, - 38557 - 11905: 0xEB49, - 38558 - 11905: 0xEB4A, - 38559 - 11905: 0xEB4B, - 38560 - 11905: 0xEB4C, - 38561 - 11905: 0xEB4D, - 38562 - 11905: 0xEB4E, - 38563 - 11905: 0xEB4F, - 38564 - 11905: 0xEB50, - 38565 - 11905: 0xEB51, - 38566 - 11905: 0xEB52, - 38567 - 11905: 0xCBED, - 38568 - 11905: 0xEB53, - 38569 - 11905: 0xEB54, - 38570 - 11905: 0xEB55, - 38571 - 11905: 0xEB56, - 38572 - 11905: 0xEB57, - 38573 - 11905: 0xEB58, - 38574 - 11905: 0xEB59, - 38575 - 11905: 0xEB5A, - 38576 - 11905: 0xDAF4, - 38577 - 11905: 0xEB5B, - 38578 - 11905: 0xEB5C, - 38579 - 11905: 0xE3C4, - 38580 - 11905: 0xEB5D, - 38581 - 11905: 0xEB5E, - 38582 - 11905: 0xC1A5, - 38583 - 11905: 0xEB5F, - 38584 - 11905: 0xEB60, - 38585 - 11905: 0xF6BF, - 38586 - 11905: 0xEB61, - 38587 - 11905: 0xEB62, - 38588 - 11905: 0xF6C0, - 38589 - 11905: 0xF6C1, - 38590 - 11905: 0xC4D1, - 38591 - 11905: 0xEB63, - 38592 - 11905: 0xC8B8, - 38593 - 11905: 0xD1E3, - 38594 - 11905: 0xEB64, - 38595 - 11905: 0xEB65, - 38596 - 11905: 0xD0DB, - 38597 - 11905: 0xD1C5, - 38598 - 11905: 0xBCAF, - 38599 - 11905: 0xB9CD, - 38600 - 11905: 0xEB66, - 38601 - 11905: 0xEFF4, - 38602 - 11905: 0xEB67, - 38603 - 11905: 0xEB68, - 38604 - 11905: 0xB4C6, - 38605 - 11905: 0xD3BA, - 38606 - 11905: 0xF6C2, - 38607 - 11905: 0xB3FB, - 38608 - 11905: 0xEB69, - 38609 - 11905: 0xEB6A, - 38610 - 11905: 0xF6C3, - 38611 - 11905: 0xEB6B, - 38612 - 11905: 0xEB6C, - 38613 - 11905: 0xB5F1, - 38614 - 11905: 0xEB6D, - 38615 - 11905: 0xEB6E, - 38616 - 11905: 0xEB6F, - 38617 - 11905: 0xEB70, - 38618 - 11905: 0xEB71, - 38619 - 11905: 0xEB72, - 38620 - 11905: 0xEB73, - 38621 - 11905: 0xEB74, - 38622 - 11905: 0xEB75, - 38623 - 11905: 0xEB76, - 38624 - 11905: 0xF6C5, - 38625 - 11905: 0xEB77, - 38626 - 11905: 0xEB78, - 38627 - 11905: 0xEB79, - 38628 - 11905: 0xEB7A, - 38629 - 11905: 0xEB7B, - 38630 - 11905: 0xEB7C, - 38631 - 11905: 0xEB7D, - 38632 - 11905: 0xD3EA, - 38633 - 11905: 0xF6A7, - 38634 - 11905: 0xD1A9, - 38635 - 11905: 0xEB7E, - 38636 - 11905: 0xEB80, - 38637 - 11905: 0xEB81, - 38638 - 11905: 0xEB82, - 38639 - 11905: 0xF6A9, - 38640 - 11905: 0xEB83, - 38641 - 11905: 0xEB84, - 38642 - 11905: 0xEB85, - 38643 - 11905: 0xF6A8, - 38644 - 11905: 0xEB86, - 38645 - 11905: 0xEB87, - 38646 - 11905: 0xC1E3, - 38647 - 11905: 0xC0D7, - 38648 - 11905: 0xEB88, - 38649 - 11905: 0xB1A2, - 38650 - 11905: 0xEB89, - 38651 - 11905: 0xEB8A, - 38652 - 11905: 0xEB8B, - 38653 - 11905: 0xEB8C, - 38654 - 11905: 0xCEED, - 38655 - 11905: 0xEB8D, - 38656 - 11905: 0xD0E8, - 38657 - 11905: 0xF6AB, - 38658 - 11905: 0xEB8E, - 38659 - 11905: 0xEB8F, - 38660 - 11905: 0xCFF6, - 38661 - 11905: 0xEB90, - 38662 - 11905: 0xF6AA, - 38663 - 11905: 0xD5F0, - 38664 - 11905: 0xF6AC, - 38665 - 11905: 0xC3B9, - 38666 - 11905: 0xEB91, - 38667 - 11905: 0xEB92, - 38668 - 11905: 0xEB93, - 38669 - 11905: 0xBBF4, - 38670 - 11905: 0xF6AE, - 38671 - 11905: 0xF6AD, - 38672 - 11905: 0xEB94, - 38673 - 11905: 0xEB95, - 38674 - 11905: 0xEB96, - 38675 - 11905: 0xC4DE, - 38676 - 11905: 0xEB97, - 38677 - 11905: 0xEB98, - 38678 - 11905: 0xC1D8, - 38679 - 11905: 0xEB99, - 38680 - 11905: 0xEB9A, - 38681 - 11905: 0xEB9B, - 38682 - 11905: 0xEB9C, - 38683 - 11905: 0xEB9D, - 38684 - 11905: 0xCBAA, - 38685 - 11905: 0xEB9E, - 38686 - 11905: 0xCFBC, - 38687 - 11905: 0xEB9F, - 38688 - 11905: 0xEBA0, - 38689 - 11905: 0xEC40, - 38690 - 11905: 0xEC41, - 38691 - 11905: 0xEC42, - 38692 - 11905: 0xEC43, - 38693 - 11905: 0xEC44, - 38694 - 11905: 0xEC45, - 38695 - 11905: 0xEC46, - 38696 - 11905: 0xEC47, - 38697 - 11905: 0xEC48, - 38698 - 11905: 0xF6AF, - 38699 - 11905: 0xEC49, - 38700 - 11905: 0xEC4A, - 38701 - 11905: 0xF6B0, - 38702 - 11905: 0xEC4B, - 38703 - 11905: 0xEC4C, - 38704 - 11905: 0xF6B1, - 38705 - 11905: 0xEC4D, - 38706 - 11905: 0xC2B6, - 38707 - 11905: 0xEC4E, - 38708 - 11905: 0xEC4F, - 38709 - 11905: 0xEC50, - 38710 - 11905: 0xEC51, - 38711 - 11905: 0xEC52, - 38712 - 11905: 0xB0D4, - 38713 - 11905: 0xC5F9, - 38714 - 11905: 0xEC53, - 38715 - 11905: 0xEC54, - 38716 - 11905: 0xEC55, - 38717 - 11905: 0xEC56, - 38718 - 11905: 0xF6B2, - 38719 - 11905: 0xEC57, - 38720 - 11905: 0xEC58, - 38721 - 11905: 0xEC59, - 38722 - 11905: 0xEC5A, - 38723 - 11905: 0xEC5B, - 38724 - 11905: 0xEC5C, - 38725 - 11905: 0xEC5D, - 38726 - 11905: 0xEC5E, - 38727 - 11905: 0xEC5F, - 38728 - 11905: 0xEC60, - 38729 - 11905: 0xEC61, - 38730 - 11905: 0xEC62, - 38731 - 11905: 0xEC63, - 38732 - 11905: 0xEC64, - 38733 - 11905: 0xEC65, - 38734 - 11905: 0xEC66, - 38735 - 11905: 0xEC67, - 38736 - 11905: 0xEC68, - 38737 - 11905: 0xEC69, - 38738 - 11905: 0xC7E0, - 38739 - 11905: 0xF6A6, - 38740 - 11905: 0xEC6A, - 38741 - 11905: 0xEC6B, - 38742 - 11905: 0xBEB8, - 38743 - 11905: 0xEC6C, - 38744 - 11905: 0xEC6D, - 38745 - 11905: 0xBEB2, - 38746 - 11905: 0xEC6E, - 38747 - 11905: 0xB5E5, - 38748 - 11905: 0xEC6F, - 38749 - 11905: 0xEC70, - 38750 - 11905: 0xB7C7, - 38751 - 11905: 0xEC71, - 38752 - 11905: 0xBFBF, - 38753 - 11905: 0xC3D2, - 38754 - 11905: 0xC3E6, - 38755 - 11905: 0xEC72, - 38756 - 11905: 0xEC73, - 38757 - 11905: 0xD8CC, - 38758 - 11905: 0xEC74, - 38759 - 11905: 0xEC75, - 38760 - 11905: 0xEC76, - 38761 - 11905: 0xB8EF, - 38762 - 11905: 0xEC77, - 38763 - 11905: 0xEC78, - 38764 - 11905: 0xEC79, - 38765 - 11905: 0xEC7A, - 38766 - 11905: 0xEC7B, - 38767 - 11905: 0xEC7C, - 38768 - 11905: 0xEC7D, - 38769 - 11905: 0xEC7E, - 38770 - 11905: 0xEC80, - 38771 - 11905: 0xBDF9, - 38772 - 11905: 0xD1A5, - 38773 - 11905: 0xEC81, - 38774 - 11905: 0xB0D0, - 38775 - 11905: 0xEC82, - 38776 - 11905: 0xEC83, - 38777 - 11905: 0xEC84, - 38778 - 11905: 0xEC85, - 38779 - 11905: 0xEC86, - 38780 - 11905: 0xF7B0, - 38781 - 11905: 0xEC87, - 38782 - 11905: 0xEC88, - 38783 - 11905: 0xEC89, - 38784 - 11905: 0xEC8A, - 38785 - 11905: 0xEC8B, - 38786 - 11905: 0xEC8C, - 38787 - 11905: 0xEC8D, - 38788 - 11905: 0xEC8E, - 38789 - 11905: 0xF7B1, - 38790 - 11905: 0xEC8F, - 38791 - 11905: 0xEC90, - 38792 - 11905: 0xEC91, - 38793 - 11905: 0xEC92, - 38794 - 11905: 0xEC93, - 38795 - 11905: 0xD0AC, - 38796 - 11905: 0xEC94, - 38797 - 11905: 0xB0B0, - 38798 - 11905: 0xEC95, - 38799 - 11905: 0xEC96, - 38800 - 11905: 0xEC97, - 38801 - 11905: 0xF7B2, - 38802 - 11905: 0xF7B3, - 38803 - 11905: 0xEC98, - 38804 - 11905: 0xF7B4, - 38805 - 11905: 0xEC99, - 38806 - 11905: 0xEC9A, - 38807 - 11905: 0xEC9B, - 38808 - 11905: 0xC7CA, - 38809 - 11905: 0xEC9C, - 38810 - 11905: 0xEC9D, - 38811 - 11905: 0xEC9E, - 38812 - 11905: 0xEC9F, - 38813 - 11905: 0xECA0, - 38814 - 11905: 0xED40, - 38815 - 11905: 0xED41, - 38816 - 11905: 0xBECF, - 38817 - 11905: 0xED42, - 38818 - 11905: 0xED43, - 38819 - 11905: 0xF7B7, - 38820 - 11905: 0xED44, - 38821 - 11905: 0xED45, - 38822 - 11905: 0xED46, - 38823 - 11905: 0xED47, - 38824 - 11905: 0xED48, - 38825 - 11905: 0xED49, - 38826 - 11905: 0xED4A, - 38827 - 11905: 0xF7B6, - 38828 - 11905: 0xED4B, - 38829 - 11905: 0xB1DE, - 38830 - 11905: 0xED4C, - 38831 - 11905: 0xF7B5, - 38832 - 11905: 0xED4D, - 38833 - 11905: 0xED4E, - 38834 - 11905: 0xF7B8, - 38835 - 11905: 0xED4F, - 38836 - 11905: 0xF7B9, - 38837 - 11905: 0xED50, - 38838 - 11905: 0xED51, - 38839 - 11905: 0xED52, - 38840 - 11905: 0xED53, - 38841 - 11905: 0xED54, - 38842 - 11905: 0xED55, - 38843 - 11905: 0xED56, - 38844 - 11905: 0xED57, - 38845 - 11905: 0xED58, - 38846 - 11905: 0xED59, - 38847 - 11905: 0xED5A, - 38848 - 11905: 0xED5B, - 38849 - 11905: 0xED5C, - 38850 - 11905: 0xED5D, - 38851 - 11905: 0xED5E, - 38852 - 11905: 0xED5F, - 38853 - 11905: 0xED60, - 38854 - 11905: 0xED61, - 38855 - 11905: 0xED62, - 38856 - 11905: 0xED63, - 38857 - 11905: 0xED64, - 38858 - 11905: 0xED65, - 38859 - 11905: 0xED66, - 38860 - 11905: 0xED67, - 38861 - 11905: 0xED68, - 38862 - 11905: 0xED69, - 38863 - 11905: 0xED6A, - 38864 - 11905: 0xED6B, - 38865 - 11905: 0xED6C, - 38866 - 11905: 0xED6D, - 38867 - 11905: 0xED6E, - 38868 - 11905: 0xED6F, - 38869 - 11905: 0xED70, - 38870 - 11905: 0xED71, - 38871 - 11905: 0xED72, - 38872 - 11905: 0xED73, - 38873 - 11905: 0xED74, - 38874 - 11905: 0xED75, - 38875 - 11905: 0xED76, - 38876 - 11905: 0xED77, - 38877 - 11905: 0xED78, - 38878 - 11905: 0xED79, - 38879 - 11905: 0xED7A, - 38880 - 11905: 0xED7B, - 38881 - 11905: 0xED7C, - 38882 - 11905: 0xED7D, - 38883 - 11905: 0xED7E, - 38884 - 11905: 0xED80, - 38885 - 11905: 0xED81, - 38886 - 11905: 0xCEA4, - 38887 - 11905: 0xC8CD, - 38888 - 11905: 0xED82, - 38889 - 11905: 0xBAAB, - 38890 - 11905: 0xE8B8, - 38891 - 11905: 0xE8B9, - 38892 - 11905: 0xE8BA, - 38893 - 11905: 0xBEC2, - 38894 - 11905: 0xED83, - 38895 - 11905: 0xED84, - 38896 - 11905: 0xED85, - 38897 - 11905: 0xED86, - 38898 - 11905: 0xED87, - 38899 - 11905: 0xD2F4, - 38900 - 11905: 0xED88, - 38901 - 11905: 0xD4CF, - 38902 - 11905: 0xC9D8, - 38903 - 11905: 0xED89, - 38904 - 11905: 0xED8A, - 38905 - 11905: 0xED8B, - 38906 - 11905: 0xED8C, - 38907 - 11905: 0xED8D, - 38908 - 11905: 0xED8E, - 38909 - 11905: 0xED8F, - 38910 - 11905: 0xED90, - 38911 - 11905: 0xED91, - 38912 - 11905: 0xED92, - 38913 - 11905: 0xED93, - 38914 - 11905: 0xED94, - 38915 - 11905: 0xED95, - 38916 - 11905: 0xED96, - 38917 - 11905: 0xED97, - 38918 - 11905: 0xED98, - 38919 - 11905: 0xED99, - 38920 - 11905: 0xED9A, - 38921 - 11905: 0xED9B, - 38922 - 11905: 0xED9C, - 38923 - 11905: 0xED9D, - 38924 - 11905: 0xED9E, - 38925 - 11905: 0xED9F, - 38926 - 11905: 0xEDA0, - 38927 - 11905: 0xEE40, - 38928 - 11905: 0xEE41, - 38929 - 11905: 0xEE42, - 38930 - 11905: 0xEE43, - 38931 - 11905: 0xEE44, - 38932 - 11905: 0xEE45, - 38933 - 11905: 0xEE46, - 38934 - 11905: 0xEE47, - 38935 - 11905: 0xEE48, - 38936 - 11905: 0xEE49, - 38937 - 11905: 0xEE4A, - 38938 - 11905: 0xEE4B, - 38939 - 11905: 0xEE4C, - 38940 - 11905: 0xEE4D, - 38941 - 11905: 0xEE4E, - 38942 - 11905: 0xEE4F, - 38943 - 11905: 0xEE50, - 38944 - 11905: 0xEE51, - 38945 - 11905: 0xEE52, - 38946 - 11905: 0xEE53, - 38947 - 11905: 0xEE54, - 38948 - 11905: 0xEE55, - 38949 - 11905: 0xEE56, - 38950 - 11905: 0xEE57, - 38951 - 11905: 0xEE58, - 38952 - 11905: 0xEE59, - 38953 - 11905: 0xEE5A, - 38954 - 11905: 0xEE5B, - 38955 - 11905: 0xEE5C, - 38956 - 11905: 0xEE5D, - 38957 - 11905: 0xEE5E, - 38958 - 11905: 0xEE5F, - 38959 - 11905: 0xEE60, - 38960 - 11905: 0xEE61, - 38961 - 11905: 0xEE62, - 38962 - 11905: 0xEE63, - 38963 - 11905: 0xEE64, - 38964 - 11905: 0xEE65, - 38965 - 11905: 0xEE66, - 38966 - 11905: 0xEE67, - 38967 - 11905: 0xEE68, - 38968 - 11905: 0xEE69, - 38969 - 11905: 0xEE6A, - 38970 - 11905: 0xEE6B, - 38971 - 11905: 0xEE6C, - 38972 - 11905: 0xEE6D, - 38973 - 11905: 0xEE6E, - 38974 - 11905: 0xEE6F, - 38975 - 11905: 0xEE70, - 38976 - 11905: 0xEE71, - 38977 - 11905: 0xEE72, - 38978 - 11905: 0xEE73, - 38979 - 11905: 0xEE74, - 38980 - 11905: 0xEE75, - 38981 - 11905: 0xEE76, - 38982 - 11905: 0xEE77, - 38983 - 11905: 0xEE78, - 38984 - 11905: 0xEE79, - 38985 - 11905: 0xEE7A, - 38986 - 11905: 0xEE7B, - 38987 - 11905: 0xEE7C, - 38988 - 11905: 0xEE7D, - 38989 - 11905: 0xEE7E, - 38990 - 11905: 0xEE80, - 38991 - 11905: 0xEE81, - 38992 - 11905: 0xEE82, - 38993 - 11905: 0xEE83, - 38994 - 11905: 0xEE84, - 38995 - 11905: 0xEE85, - 38996 - 11905: 0xEE86, - 38997 - 11905: 0xEE87, - 38998 - 11905: 0xEE88, - 38999 - 11905: 0xEE89, - 39000 - 11905: 0xEE8A, - 39001 - 11905: 0xEE8B, - 39002 - 11905: 0xEE8C, - 39003 - 11905: 0xEE8D, - 39004 - 11905: 0xEE8E, - 39005 - 11905: 0xEE8F, - 39006 - 11905: 0xEE90, - 39007 - 11905: 0xEE91, - 39008 - 11905: 0xEE92, - 39009 - 11905: 0xEE93, - 39010 - 11905: 0xEE94, - 39011 - 11905: 0xEE95, - 39012 - 11905: 0xEE96, - 39013 - 11905: 0xEE97, - 39014 - 11905: 0xEE98, - 39015 - 11905: 0xEE99, - 39016 - 11905: 0xEE9A, - 39017 - 11905: 0xEE9B, - 39018 - 11905: 0xEE9C, - 39019 - 11905: 0xEE9D, - 39020 - 11905: 0xEE9E, - 39021 - 11905: 0xEE9F, - 39022 - 11905: 0xEEA0, - 39023 - 11905: 0xEF40, - 39024 - 11905: 0xEF41, - 39025 - 11905: 0xEF42, - 39026 - 11905: 0xEF43, - 39027 - 11905: 0xEF44, - 39028 - 11905: 0xEF45, - 39029 - 11905: 0xD2B3, - 39030 - 11905: 0xB6A5, - 39031 - 11905: 0xC7EA, - 39032 - 11905: 0xF1FC, - 39033 - 11905: 0xCFEE, - 39034 - 11905: 0xCBB3, - 39035 - 11905: 0xD0EB, - 39036 - 11905: 0xE7EF, - 39037 - 11905: 0xCDE7, - 39038 - 11905: 0xB9CB, - 39039 - 11905: 0xB6D9, - 39040 - 11905: 0xF1FD, - 39041 - 11905: 0xB0E4, - 39042 - 11905: 0xCBCC, - 39043 - 11905: 0xF1FE, - 39044 - 11905: 0xD4A4, - 39045 - 11905: 0xC2AD, - 39046 - 11905: 0xC1EC, - 39047 - 11905: 0xC6C4, - 39048 - 11905: 0xBEB1, - 39049 - 11905: 0xF2A1, - 39050 - 11905: 0xBCD5, - 39051 - 11905: 0xEF46, - 39052 - 11905: 0xF2A2, - 39053 - 11905: 0xF2A3, - 39054 - 11905: 0xEF47, - 39055 - 11905: 0xF2A4, - 39056 - 11905: 0xD2C3, - 39057 - 11905: 0xC6B5, - 39058 - 11905: 0xEF48, - 39059 - 11905: 0xCDC7, - 39060 - 11905: 0xF2A5, - 39061 - 11905: 0xEF49, - 39062 - 11905: 0xD3B1, - 39063 - 11905: 0xBFC5, - 39064 - 11905: 0xCCE2, - 39065 - 11905: 0xEF4A, - 39066 - 11905: 0xF2A6, - 39067 - 11905: 0xF2A7, - 39068 - 11905: 0xD1D5, - 39069 - 11905: 0xB6EE, - 39070 - 11905: 0xF2A8, - 39071 - 11905: 0xF2A9, - 39072 - 11905: 0xB5DF, - 39073 - 11905: 0xF2AA, - 39074 - 11905: 0xF2AB, - 39075 - 11905: 0xEF4B, - 39076 - 11905: 0xB2FC, - 39077 - 11905: 0xF2AC, - 39078 - 11905: 0xF2AD, - 39079 - 11905: 0xC8A7, - 39080 - 11905: 0xEF4C, - 39081 - 11905: 0xEF4D, - 39082 - 11905: 0xEF4E, - 39083 - 11905: 0xEF4F, - 39084 - 11905: 0xEF50, - 39085 - 11905: 0xEF51, - 39086 - 11905: 0xEF52, - 39087 - 11905: 0xEF53, - 39088 - 11905: 0xEF54, - 39089 - 11905: 0xEF55, - 39090 - 11905: 0xEF56, - 39091 - 11905: 0xEF57, - 39092 - 11905: 0xEF58, - 39093 - 11905: 0xEF59, - 39094 - 11905: 0xEF5A, - 39095 - 11905: 0xEF5B, - 39096 - 11905: 0xEF5C, - 39097 - 11905: 0xEF5D, - 39098 - 11905: 0xEF5E, - 39099 - 11905: 0xEF5F, - 39100 - 11905: 0xEF60, - 39101 - 11905: 0xEF61, - 39102 - 11905: 0xEF62, - 39103 - 11905: 0xEF63, - 39104 - 11905: 0xEF64, - 39105 - 11905: 0xEF65, - 39106 - 11905: 0xEF66, - 39107 - 11905: 0xEF67, - 39108 - 11905: 0xEF68, - 39109 - 11905: 0xEF69, - 39110 - 11905: 0xEF6A, - 39111 - 11905: 0xEF6B, - 39112 - 11905: 0xEF6C, - 39113 - 11905: 0xEF6D, - 39114 - 11905: 0xEF6E, - 39115 - 11905: 0xEF6F, - 39116 - 11905: 0xEF70, - 39117 - 11905: 0xEF71, - 39118 - 11905: 0xB7E7, - 39119 - 11905: 0xEF72, - 39120 - 11905: 0xEF73, - 39121 - 11905: 0xECA9, - 39122 - 11905: 0xECAA, - 39123 - 11905: 0xECAB, - 39124 - 11905: 0xEF74, - 39125 - 11905: 0xECAC, - 39126 - 11905: 0xEF75, - 39127 - 11905: 0xEF76, - 39128 - 11905: 0xC6AE, - 39129 - 11905: 0xECAD, - 39130 - 11905: 0xECAE, - 39131 - 11905: 0xEF77, - 39132 - 11905: 0xEF78, - 39133 - 11905: 0xEF79, - 39134 - 11905: 0xB7C9, - 39135 - 11905: 0xCAB3, - 39136 - 11905: 0xEF7A, - 39137 - 11905: 0xEF7B, - 39138 - 11905: 0xEF7C, - 39139 - 11905: 0xEF7D, - 39140 - 11905: 0xEF7E, - 39141 - 11905: 0xEF80, - 39142 - 11905: 0xEF81, - 39143 - 11905: 0xE2B8, - 39144 - 11905: 0xF7CF, - 39145 - 11905: 0xEF82, - 39146 - 11905: 0xEF83, - 39147 - 11905: 0xEF84, - 39148 - 11905: 0xEF85, - 39149 - 11905: 0xEF86, - 39150 - 11905: 0xEF87, - 39151 - 11905: 0xEF88, - 39152 - 11905: 0xEF89, - 39153 - 11905: 0xEF8A, - 39154 - 11905: 0xEF8B, - 39155 - 11905: 0xEF8C, - 39156 - 11905: 0xEF8D, - 39157 - 11905: 0xEF8E, - 39158 - 11905: 0xEF8F, - 39159 - 11905: 0xEF90, - 39160 - 11905: 0xEF91, - 39161 - 11905: 0xEF92, - 39162 - 11905: 0xEF93, - 39163 - 11905: 0xEF94, - 39164 - 11905: 0xEF95, - 39165 - 11905: 0xEF96, - 39166 - 11905: 0xEF97, - 39167 - 11905: 0xEF98, - 39168 - 11905: 0xEF99, - 39169 - 11905: 0xEF9A, - 39170 - 11905: 0xEF9B, - 39171 - 11905: 0xEF9C, - 39172 - 11905: 0xEF9D, - 39173 - 11905: 0xEF9E, - 39174 - 11905: 0xEF9F, - 39175 - 11905: 0xEFA0, - 39176 - 11905: 0xF040, - 39177 - 11905: 0xF041, - 39178 - 11905: 0xF042, - 39179 - 11905: 0xF043, - 39180 - 11905: 0xF044, - 39181 - 11905: 0xF7D0, - 39182 - 11905: 0xF045, - 39183 - 11905: 0xF046, - 39184 - 11905: 0xB2CD, - 39185 - 11905: 0xF047, - 39186 - 11905: 0xF048, - 39187 - 11905: 0xF049, - 39188 - 11905: 0xF04A, - 39189 - 11905: 0xF04B, - 39190 - 11905: 0xF04C, - 39191 - 11905: 0xF04D, - 39192 - 11905: 0xF04E, - 39193 - 11905: 0xF04F, - 39194 - 11905: 0xF050, - 39195 - 11905: 0xF051, - 39196 - 11905: 0xF052, - 39197 - 11905: 0xF053, - 39198 - 11905: 0xF054, - 39199 - 11905: 0xF055, - 39200 - 11905: 0xF056, - 39201 - 11905: 0xF057, - 39202 - 11905: 0xF058, - 39203 - 11905: 0xF059, - 39204 - 11905: 0xF05A, - 39205 - 11905: 0xF05B, - 39206 - 11905: 0xF05C, - 39207 - 11905: 0xF05D, - 39208 - 11905: 0xF05E, - 39209 - 11905: 0xF05F, - 39210 - 11905: 0xF060, - 39211 - 11905: 0xF061, - 39212 - 11905: 0xF062, - 39213 - 11905: 0xF063, - 39214 - 11905: 0xF7D1, - 39215 - 11905: 0xF064, - 39216 - 11905: 0xF065, - 39217 - 11905: 0xF066, - 39218 - 11905: 0xF067, - 39219 - 11905: 0xF068, - 39220 - 11905: 0xF069, - 39221 - 11905: 0xF06A, - 39222 - 11905: 0xF06B, - 39223 - 11905: 0xF06C, - 39224 - 11905: 0xF06D, - 39225 - 11905: 0xF06E, - 39226 - 11905: 0xF06F, - 39227 - 11905: 0xF070, - 39228 - 11905: 0xF071, - 39229 - 11905: 0xF072, - 39230 - 11905: 0xF073, - 39231 - 11905: 0xF074, - 39232 - 11905: 0xF075, - 39233 - 11905: 0xF076, - 39234 - 11905: 0xF077, - 39235 - 11905: 0xF078, - 39236 - 11905: 0xF079, - 39237 - 11905: 0xF07A, - 39238 - 11905: 0xF07B, - 39239 - 11905: 0xF07C, - 39240 - 11905: 0xF07D, - 39241 - 11905: 0xF07E, - 39242 - 11905: 0xF080, - 39243 - 11905: 0xF081, - 39244 - 11905: 0xF082, - 39245 - 11905: 0xF083, - 39246 - 11905: 0xF084, - 39247 - 11905: 0xF085, - 39248 - 11905: 0xF086, - 39249 - 11905: 0xF087, - 39250 - 11905: 0xF088, - 39251 - 11905: 0xF089, - 39252 - 11905: 0xF7D3, - 39253 - 11905: 0xF7D2, - 39254 - 11905: 0xF08A, - 39255 - 11905: 0xF08B, - 39256 - 11905: 0xF08C, - 39257 - 11905: 0xF08D, - 39258 - 11905: 0xF08E, - 39259 - 11905: 0xF08F, - 39260 - 11905: 0xF090, - 39261 - 11905: 0xF091, - 39262 - 11905: 0xF092, - 39263 - 11905: 0xF093, - 39264 - 11905: 0xF094, - 39265 - 11905: 0xF095, - 39266 - 11905: 0xF096, - 39267 - 11905: 0xE2BB, - 39268 - 11905: 0xF097, - 39269 - 11905: 0xBCA2, - 39270 - 11905: 0xF098, - 39271 - 11905: 0xE2BC, - 39272 - 11905: 0xE2BD, - 39273 - 11905: 0xE2BE, - 39274 - 11905: 0xE2BF, - 39275 - 11905: 0xE2C0, - 39276 - 11905: 0xE2C1, - 39277 - 11905: 0xB7B9, - 39278 - 11905: 0xD2FB, - 39279 - 11905: 0xBDA4, - 39280 - 11905: 0xCACE, - 39281 - 11905: 0xB1A5, - 39282 - 11905: 0xCBC7, - 39283 - 11905: 0xF099, - 39284 - 11905: 0xE2C2, - 39285 - 11905: 0xB6FC, - 39286 - 11905: 0xC8C4, - 39287 - 11905: 0xE2C3, - 39288 - 11905: 0xF09A, - 39289 - 11905: 0xF09B, - 39290 - 11905: 0xBDC8, - 39291 - 11905: 0xF09C, - 39292 - 11905: 0xB1FD, - 39293 - 11905: 0xE2C4, - 39294 - 11905: 0xF09D, - 39295 - 11905: 0xB6F6, - 39296 - 11905: 0xE2C5, - 39297 - 11905: 0xC4D9, - 39298 - 11905: 0xF09E, - 39299 - 11905: 0xF09F, - 39300 - 11905: 0xE2C6, - 39301 - 11905: 0xCFDA, - 39302 - 11905: 0xB9DD, - 39303 - 11905: 0xE2C7, - 39304 - 11905: 0xC0A1, - 39305 - 11905: 0xF0A0, - 39306 - 11905: 0xE2C8, - 39307 - 11905: 0xB2F6, - 39308 - 11905: 0xF140, - 39309 - 11905: 0xE2C9, - 39310 - 11905: 0xF141, - 39311 - 11905: 0xC1F3, - 39312 - 11905: 0xE2CA, - 39313 - 11905: 0xE2CB, - 39314 - 11905: 0xC2F8, - 39315 - 11905: 0xE2CC, - 39316 - 11905: 0xE2CD, - 39317 - 11905: 0xE2CE, - 39318 - 11905: 0xCAD7, - 39319 - 11905: 0xD8B8, - 39320 - 11905: 0xD9E5, - 39321 - 11905: 0xCFE3, - 39322 - 11905: 0xF142, - 39323 - 11905: 0xF143, - 39324 - 11905: 0xF144, - 39325 - 11905: 0xF145, - 39326 - 11905: 0xF146, - 39327 - 11905: 0xF147, - 39328 - 11905: 0xF148, - 39329 - 11905: 0xF149, - 39330 - 11905: 0xF14A, - 39331 - 11905: 0xF14B, - 39332 - 11905: 0xF14C, - 39333 - 11905: 0xF0A5, - 39334 - 11905: 0xF14D, - 39335 - 11905: 0xF14E, - 39336 - 11905: 0xDCB0, - 39337 - 11905: 0xF14F, - 39338 - 11905: 0xF150, - 39339 - 11905: 0xF151, - 39340 - 11905: 0xF152, - 39341 - 11905: 0xF153, - 39342 - 11905: 0xF154, - 39343 - 11905: 0xF155, - 39344 - 11905: 0xF156, - 39345 - 11905: 0xF157, - 39346 - 11905: 0xF158, - 39347 - 11905: 0xF159, - 39348 - 11905: 0xF15A, - 39349 - 11905: 0xF15B, - 39350 - 11905: 0xF15C, - 39351 - 11905: 0xF15D, - 39352 - 11905: 0xF15E, - 39353 - 11905: 0xF15F, - 39354 - 11905: 0xF160, - 39355 - 11905: 0xF161, - 39356 - 11905: 0xF162, - 39357 - 11905: 0xF163, - 39358 - 11905: 0xF164, - 39359 - 11905: 0xF165, - 39360 - 11905: 0xF166, - 39361 - 11905: 0xF167, - 39362 - 11905: 0xF168, - 39363 - 11905: 0xF169, - 39364 - 11905: 0xF16A, - 39365 - 11905: 0xF16B, - 39366 - 11905: 0xF16C, - 39367 - 11905: 0xF16D, - 39368 - 11905: 0xF16E, - 39369 - 11905: 0xF16F, - 39370 - 11905: 0xF170, - 39371 - 11905: 0xF171, - 39372 - 11905: 0xF172, - 39373 - 11905: 0xF173, - 39374 - 11905: 0xF174, - 39375 - 11905: 0xF175, - 39376 - 11905: 0xF176, - 39377 - 11905: 0xF177, - 39378 - 11905: 0xF178, - 39379 - 11905: 0xF179, - 39380 - 11905: 0xF17A, - 39381 - 11905: 0xF17B, - 39382 - 11905: 0xF17C, - 39383 - 11905: 0xF17D, - 39384 - 11905: 0xF17E, - 39385 - 11905: 0xF180, - 39386 - 11905: 0xF181, - 39387 - 11905: 0xF182, - 39388 - 11905: 0xF183, - 39389 - 11905: 0xF184, - 39390 - 11905: 0xF185, - 39391 - 11905: 0xF186, - 39392 - 11905: 0xF187, - 39393 - 11905: 0xF188, - 39394 - 11905: 0xF189, - 39395 - 11905: 0xF18A, - 39396 - 11905: 0xF18B, - 39397 - 11905: 0xF18C, - 39398 - 11905: 0xF18D, - 39399 - 11905: 0xF18E, - 39400 - 11905: 0xF18F, - 39401 - 11905: 0xF190, - 39402 - 11905: 0xF191, - 39403 - 11905: 0xF192, - 39404 - 11905: 0xF193, - 39405 - 11905: 0xF194, - 39406 - 11905: 0xF195, - 39407 - 11905: 0xF196, - 39408 - 11905: 0xF197, - 39409 - 11905: 0xF198, - 39410 - 11905: 0xF199, - 39411 - 11905: 0xF19A, - 39412 - 11905: 0xF19B, - 39413 - 11905: 0xF19C, - 39414 - 11905: 0xF19D, - 39415 - 11905: 0xF19E, - 39416 - 11905: 0xF19F, - 39417 - 11905: 0xF1A0, - 39418 - 11905: 0xF240, - 39419 - 11905: 0xF241, - 39420 - 11905: 0xF242, - 39421 - 11905: 0xF243, - 39422 - 11905: 0xF244, - 39423 - 11905: 0xF245, - 39424 - 11905: 0xF246, - 39425 - 11905: 0xF247, - 39426 - 11905: 0xF248, - 39427 - 11905: 0xF249, - 39428 - 11905: 0xF24A, - 39429 - 11905: 0xF24B, - 39430 - 11905: 0xF24C, - 39431 - 11905: 0xF24D, - 39432 - 11905: 0xF24E, - 39433 - 11905: 0xF24F, - 39434 - 11905: 0xF250, - 39435 - 11905: 0xF251, - 39436 - 11905: 0xF252, - 39437 - 11905: 0xF253, - 39438 - 11905: 0xF254, - 39439 - 11905: 0xF255, - 39440 - 11905: 0xF256, - 39441 - 11905: 0xF257, - 39442 - 11905: 0xF258, - 39443 - 11905: 0xF259, - 39444 - 11905: 0xF25A, - 39445 - 11905: 0xF25B, - 39446 - 11905: 0xF25C, - 39447 - 11905: 0xF25D, - 39448 - 11905: 0xF25E, - 39449 - 11905: 0xF25F, - 39450 - 11905: 0xF260, - 39451 - 11905: 0xF261, - 39452 - 11905: 0xF262, - 39453 - 11905: 0xF263, - 39454 - 11905: 0xF264, - 39455 - 11905: 0xF265, - 39456 - 11905: 0xF266, - 39457 - 11905: 0xF267, - 39458 - 11905: 0xF268, - 39459 - 11905: 0xF269, - 39460 - 11905: 0xF26A, - 39461 - 11905: 0xF26B, - 39462 - 11905: 0xF26C, - 39463 - 11905: 0xF26D, - 39464 - 11905: 0xF26E, - 39465 - 11905: 0xF26F, - 39466 - 11905: 0xF270, - 39467 - 11905: 0xF271, - 39468 - 11905: 0xF272, - 39469 - 11905: 0xF273, - 39470 - 11905: 0xF274, - 39471 - 11905: 0xF275, - 39472 - 11905: 0xF276, - 39473 - 11905: 0xF277, - 39474 - 11905: 0xF278, - 39475 - 11905: 0xF279, - 39476 - 11905: 0xF27A, - 39477 - 11905: 0xF27B, - 39478 - 11905: 0xF27C, - 39479 - 11905: 0xF27D, - 39480 - 11905: 0xF27E, - 39481 - 11905: 0xF280, - 39482 - 11905: 0xF281, - 39483 - 11905: 0xF282, - 39484 - 11905: 0xF283, - 39485 - 11905: 0xF284, - 39486 - 11905: 0xF285, - 39487 - 11905: 0xF286, - 39488 - 11905: 0xF287, - 39489 - 11905: 0xF288, - 39490 - 11905: 0xF289, - 39491 - 11905: 0xF28A, - 39492 - 11905: 0xF28B, - 39493 - 11905: 0xF28C, - 39494 - 11905: 0xF28D, - 39495 - 11905: 0xF28E, - 39496 - 11905: 0xF28F, - 39497 - 11905: 0xF290, - 39498 - 11905: 0xF291, - 39499 - 11905: 0xF292, - 39500 - 11905: 0xF293, - 39501 - 11905: 0xF294, - 39502 - 11905: 0xF295, - 39503 - 11905: 0xF296, - 39504 - 11905: 0xF297, - 39505 - 11905: 0xF298, - 39506 - 11905: 0xF299, - 39507 - 11905: 0xF29A, - 39508 - 11905: 0xF29B, - 39509 - 11905: 0xF29C, - 39510 - 11905: 0xF29D, - 39511 - 11905: 0xF29E, - 39512 - 11905: 0xF29F, - 39513 - 11905: 0xF2A0, - 39514 - 11905: 0xF340, - 39515 - 11905: 0xF341, - 39516 - 11905: 0xF342, - 39517 - 11905: 0xF343, - 39518 - 11905: 0xF344, - 39519 - 11905: 0xF345, - 39520 - 11905: 0xF346, - 39521 - 11905: 0xF347, - 39522 - 11905: 0xF348, - 39523 - 11905: 0xF349, - 39524 - 11905: 0xF34A, - 39525 - 11905: 0xF34B, - 39526 - 11905: 0xF34C, - 39527 - 11905: 0xF34D, - 39528 - 11905: 0xF34E, - 39529 - 11905: 0xF34F, - 39530 - 11905: 0xF350, - 39531 - 11905: 0xF351, - 39532 - 11905: 0xC2ED, - 39533 - 11905: 0xD4A6, - 39534 - 11905: 0xCDD4, - 39535 - 11905: 0xD1B1, - 39536 - 11905: 0xB3DB, - 39537 - 11905: 0xC7FD, - 39538 - 11905: 0xF352, - 39539 - 11905: 0xB2B5, - 39540 - 11905: 0xC2BF, - 39541 - 11905: 0xE6E0, - 39542 - 11905: 0xCABB, - 39543 - 11905: 0xE6E1, - 39544 - 11905: 0xE6E2, - 39545 - 11905: 0xBED4, - 39546 - 11905: 0xE6E3, - 39547 - 11905: 0xD7A4, - 39548 - 11905: 0xCDD5, - 39549 - 11905: 0xE6E5, - 39550 - 11905: 0xBCDD, - 39551 - 11905: 0xE6E4, - 39552 - 11905: 0xE6E6, - 39553 - 11905: 0xE6E7, - 39554 - 11905: 0xC2EE, - 39555 - 11905: 0xF353, - 39556 - 11905: 0xBDBE, - 39557 - 11905: 0xE6E8, - 39558 - 11905: 0xC2E6, - 39559 - 11905: 0xBAA7, - 39560 - 11905: 0xE6E9, - 39561 - 11905: 0xF354, - 39562 - 11905: 0xE6EA, - 39563 - 11905: 0xB3D2, - 39564 - 11905: 0xD1E9, - 39565 - 11905: 0xF355, - 39566 - 11905: 0xF356, - 39567 - 11905: 0xBFA5, - 39568 - 11905: 0xE6EB, - 39569 - 11905: 0xC6EF, - 39570 - 11905: 0xE6EC, - 39571 - 11905: 0xE6ED, - 39572 - 11905: 0xF357, - 39573 - 11905: 0xF358, - 39574 - 11905: 0xE6EE, - 39575 - 11905: 0xC6AD, - 39576 - 11905: 0xE6EF, - 39577 - 11905: 0xF359, - 39578 - 11905: 0xC9A7, - 39579 - 11905: 0xE6F0, - 39580 - 11905: 0xE6F1, - 39581 - 11905: 0xE6F2, - 39582 - 11905: 0xE5B9, - 39583 - 11905: 0xE6F3, - 39584 - 11905: 0xE6F4, - 39585 - 11905: 0xC2E2, - 39586 - 11905: 0xE6F5, - 39587 - 11905: 0xE6F6, - 39588 - 11905: 0xD6E8, - 39589 - 11905: 0xE6F7, - 39590 - 11905: 0xF35A, - 39591 - 11905: 0xE6F8, - 39592 - 11905: 0xB9C7, - 39593 - 11905: 0xF35B, - 39594 - 11905: 0xF35C, - 39595 - 11905: 0xF35D, - 39596 - 11905: 0xF35E, - 39597 - 11905: 0xF35F, - 39598 - 11905: 0xF360, - 39599 - 11905: 0xF361, - 39600 - 11905: 0xF7BB, - 39601 - 11905: 0xF7BA, - 39602 - 11905: 0xF362, - 39603 - 11905: 0xF363, - 39604 - 11905: 0xF364, - 39605 - 11905: 0xF365, - 39606 - 11905: 0xF7BE, - 39607 - 11905: 0xF7BC, - 39608 - 11905: 0xBAA1, - 39609 - 11905: 0xF366, - 39610 - 11905: 0xF7BF, - 39611 - 11905: 0xF367, - 39612 - 11905: 0xF7C0, - 39613 - 11905: 0xF368, - 39614 - 11905: 0xF369, - 39615 - 11905: 0xF36A, - 39616 - 11905: 0xF7C2, - 39617 - 11905: 0xF7C1, - 39618 - 11905: 0xF7C4, - 39619 - 11905: 0xF36B, - 39620 - 11905: 0xF36C, - 39621 - 11905: 0xF7C3, - 39622 - 11905: 0xF36D, - 39623 - 11905: 0xF36E, - 39624 - 11905: 0xF36F, - 39625 - 11905: 0xF370, - 39626 - 11905: 0xF371, - 39627 - 11905: 0xF7C5, - 39628 - 11905: 0xF7C6, - 39629 - 11905: 0xF372, - 39630 - 11905: 0xF373, - 39631 - 11905: 0xF374, - 39632 - 11905: 0xF375, - 39633 - 11905: 0xF7C7, - 39634 - 11905: 0xF376, - 39635 - 11905: 0xCBE8, - 39636 - 11905: 0xF377, - 39637 - 11905: 0xF378, - 39638 - 11905: 0xF379, - 39639 - 11905: 0xF37A, - 39640 - 11905: 0xB8DF, - 39641 - 11905: 0xF37B, - 39642 - 11905: 0xF37C, - 39643 - 11905: 0xF37D, - 39644 - 11905: 0xF37E, - 39645 - 11905: 0xF380, - 39646 - 11905: 0xF381, - 39647 - 11905: 0xF7D4, - 39648 - 11905: 0xF382, - 39649 - 11905: 0xF7D5, - 39650 - 11905: 0xF383, - 39651 - 11905: 0xF384, - 39652 - 11905: 0xF385, - 39653 - 11905: 0xF386, - 39654 - 11905: 0xF7D6, - 39655 - 11905: 0xF387, - 39656 - 11905: 0xF388, - 39657 - 11905: 0xF389, - 39658 - 11905: 0xF38A, - 39659 - 11905: 0xF7D8, - 39660 - 11905: 0xF38B, - 39661 - 11905: 0xF7DA, - 39662 - 11905: 0xF38C, - 39663 - 11905: 0xF7D7, - 39664 - 11905: 0xF38D, - 39665 - 11905: 0xF38E, - 39666 - 11905: 0xF38F, - 39667 - 11905: 0xF390, - 39668 - 11905: 0xF391, - 39669 - 11905: 0xF392, - 39670 - 11905: 0xF393, - 39671 - 11905: 0xF394, - 39672 - 11905: 0xF395, - 39673 - 11905: 0xF7DB, - 39674 - 11905: 0xF396, - 39675 - 11905: 0xF7D9, - 39676 - 11905: 0xF397, - 39677 - 11905: 0xF398, - 39678 - 11905: 0xF399, - 39679 - 11905: 0xF39A, - 39680 - 11905: 0xF39B, - 39681 - 11905: 0xF39C, - 39682 - 11905: 0xF39D, - 39683 - 11905: 0xD7D7, - 39684 - 11905: 0xF39E, - 39685 - 11905: 0xF39F, - 39686 - 11905: 0xF3A0, - 39687 - 11905: 0xF440, - 39688 - 11905: 0xF7DC, - 39689 - 11905: 0xF441, - 39690 - 11905: 0xF442, - 39691 - 11905: 0xF443, - 39692 - 11905: 0xF444, - 39693 - 11905: 0xF445, - 39694 - 11905: 0xF446, - 39695 - 11905: 0xF7DD, - 39696 - 11905: 0xF447, - 39697 - 11905: 0xF448, - 39698 - 11905: 0xF449, - 39699 - 11905: 0xF7DE, - 39700 - 11905: 0xF44A, - 39701 - 11905: 0xF44B, - 39702 - 11905: 0xF44C, - 39703 - 11905: 0xF44D, - 39704 - 11905: 0xF44E, - 39705 - 11905: 0xF44F, - 39706 - 11905: 0xF450, - 39707 - 11905: 0xF451, - 39708 - 11905: 0xF452, - 39709 - 11905: 0xF453, - 39710 - 11905: 0xF454, - 39711 - 11905: 0xF7DF, - 39712 - 11905: 0xF455, - 39713 - 11905: 0xF456, - 39714 - 11905: 0xF457, - 39715 - 11905: 0xF7E0, - 39716 - 11905: 0xF458, - 39717 - 11905: 0xF459, - 39718 - 11905: 0xF45A, - 39719 - 11905: 0xF45B, - 39720 - 11905: 0xF45C, - 39721 - 11905: 0xF45D, - 39722 - 11905: 0xF45E, - 39723 - 11905: 0xF45F, - 39724 - 11905: 0xF460, - 39725 - 11905: 0xF461, - 39726 - 11905: 0xF462, - 39727 - 11905: 0xDBCB, - 39728 - 11905: 0xF463, - 39729 - 11905: 0xF464, - 39730 - 11905: 0xD8AA, - 39731 - 11905: 0xF465, - 39732 - 11905: 0xF466, - 39733 - 11905: 0xF467, - 39734 - 11905: 0xF468, - 39735 - 11905: 0xF469, - 39736 - 11905: 0xF46A, - 39737 - 11905: 0xF46B, - 39738 - 11905: 0xF46C, - 39739 - 11905: 0xE5F7, - 39740 - 11905: 0xB9ED, - 39741 - 11905: 0xF46D, - 39742 - 11905: 0xF46E, - 39743 - 11905: 0xF46F, - 39744 - 11905: 0xF470, - 39745 - 11905: 0xBFFD, - 39746 - 11905: 0xBBEA, - 39747 - 11905: 0xF7C9, - 39748 - 11905: 0xC6C7, - 39749 - 11905: 0xF7C8, - 39750 - 11905: 0xF471, - 39751 - 11905: 0xF7CA, - 39752 - 11905: 0xF7CC, - 39753 - 11905: 0xF7CB, - 39754 - 11905: 0xF472, - 39755 - 11905: 0xF473, - 39756 - 11905: 0xF474, - 39757 - 11905: 0xF7CD, - 39758 - 11905: 0xF475, - 39759 - 11905: 0xCEBA, - 39760 - 11905: 0xF476, - 39761 - 11905: 0xF7CE, - 39762 - 11905: 0xF477, - 39763 - 11905: 0xF478, - 39764 - 11905: 0xC4A7, - 39765 - 11905: 0xF479, - 39766 - 11905: 0xF47A, - 39767 - 11905: 0xF47B, - 39768 - 11905: 0xF47C, - 39769 - 11905: 0xF47D, - 39770 - 11905: 0xF47E, - 39771 - 11905: 0xF480, - 39772 - 11905: 0xF481, - 39773 - 11905: 0xF482, - 39774 - 11905: 0xF483, - 39775 - 11905: 0xF484, - 39776 - 11905: 0xF485, - 39777 - 11905: 0xF486, - 39778 - 11905: 0xF487, - 39779 - 11905: 0xF488, - 39780 - 11905: 0xF489, - 39781 - 11905: 0xF48A, - 39782 - 11905: 0xF48B, - 39783 - 11905: 0xF48C, - 39784 - 11905: 0xF48D, - 39785 - 11905: 0xF48E, - 39786 - 11905: 0xF48F, - 39787 - 11905: 0xF490, - 39788 - 11905: 0xF491, - 39789 - 11905: 0xF492, - 39790 - 11905: 0xF493, - 39791 - 11905: 0xF494, - 39792 - 11905: 0xF495, - 39793 - 11905: 0xF496, - 39794 - 11905: 0xF497, - 39795 - 11905: 0xF498, - 39796 - 11905: 0xF499, - 39797 - 11905: 0xF49A, - 39798 - 11905: 0xF49B, - 39799 - 11905: 0xF49C, - 39800 - 11905: 0xF49D, - 39801 - 11905: 0xF49E, - 39802 - 11905: 0xF49F, - 39803 - 11905: 0xF4A0, - 39804 - 11905: 0xF540, - 39805 - 11905: 0xF541, - 39806 - 11905: 0xF542, - 39807 - 11905: 0xF543, - 39808 - 11905: 0xF544, - 39809 - 11905: 0xF545, - 39810 - 11905: 0xF546, - 39811 - 11905: 0xF547, - 39812 - 11905: 0xF548, - 39813 - 11905: 0xF549, - 39814 - 11905: 0xF54A, - 39815 - 11905: 0xF54B, - 39816 - 11905: 0xF54C, - 39817 - 11905: 0xF54D, - 39818 - 11905: 0xF54E, - 39819 - 11905: 0xF54F, - 39820 - 11905: 0xF550, - 39821 - 11905: 0xF551, - 39822 - 11905: 0xF552, - 39823 - 11905: 0xF553, - 39824 - 11905: 0xF554, - 39825 - 11905: 0xF555, - 39826 - 11905: 0xF556, - 39827 - 11905: 0xF557, - 39828 - 11905: 0xF558, - 39829 - 11905: 0xF559, - 39830 - 11905: 0xF55A, - 39831 - 11905: 0xF55B, - 39832 - 11905: 0xF55C, - 39833 - 11905: 0xF55D, - 39834 - 11905: 0xF55E, - 39835 - 11905: 0xF55F, - 39836 - 11905: 0xF560, - 39837 - 11905: 0xF561, - 39838 - 11905: 0xF562, - 39839 - 11905: 0xF563, - 39840 - 11905: 0xF564, - 39841 - 11905: 0xF565, - 39842 - 11905: 0xF566, - 39843 - 11905: 0xF567, - 39844 - 11905: 0xF568, - 39845 - 11905: 0xF569, - 39846 - 11905: 0xF56A, - 39847 - 11905: 0xF56B, - 39848 - 11905: 0xF56C, - 39849 - 11905: 0xF56D, - 39850 - 11905: 0xF56E, - 39851 - 11905: 0xF56F, - 39852 - 11905: 0xF570, - 39853 - 11905: 0xF571, - 39854 - 11905: 0xF572, - 39855 - 11905: 0xF573, - 39856 - 11905: 0xF574, - 39857 - 11905: 0xF575, - 39858 - 11905: 0xF576, - 39859 - 11905: 0xF577, - 39860 - 11905: 0xF578, - 39861 - 11905: 0xF579, - 39862 - 11905: 0xF57A, - 39863 - 11905: 0xF57B, - 39864 - 11905: 0xF57C, - 39865 - 11905: 0xF57D, - 39866 - 11905: 0xF57E, - 39867 - 11905: 0xF580, - 39868 - 11905: 0xF581, - 39869 - 11905: 0xF582, - 39870 - 11905: 0xF583, - 39871 - 11905: 0xF584, - 39872 - 11905: 0xF585, - 39873 - 11905: 0xF586, - 39874 - 11905: 0xF587, - 39875 - 11905: 0xF588, - 39876 - 11905: 0xF589, - 39877 - 11905: 0xF58A, - 39878 - 11905: 0xF58B, - 39879 - 11905: 0xF58C, - 39880 - 11905: 0xF58D, - 39881 - 11905: 0xF58E, - 39882 - 11905: 0xF58F, - 39883 - 11905: 0xF590, - 39884 - 11905: 0xF591, - 39885 - 11905: 0xF592, - 39886 - 11905: 0xF593, - 39887 - 11905: 0xF594, - 39888 - 11905: 0xF595, - 39889 - 11905: 0xF596, - 39890 - 11905: 0xF597, - 39891 - 11905: 0xF598, - 39892 - 11905: 0xF599, - 39893 - 11905: 0xF59A, - 39894 - 11905: 0xF59B, - 39895 - 11905: 0xF59C, - 39896 - 11905: 0xF59D, - 39897 - 11905: 0xF59E, - 39898 - 11905: 0xF59F, - 39899 - 11905: 0xF5A0, - 39900 - 11905: 0xF640, - 39901 - 11905: 0xF641, - 39902 - 11905: 0xF642, - 39903 - 11905: 0xF643, - 39904 - 11905: 0xF644, - 39905 - 11905: 0xF645, - 39906 - 11905: 0xF646, - 39907 - 11905: 0xF647, - 39908 - 11905: 0xF648, - 39909 - 11905: 0xF649, - 39910 - 11905: 0xF64A, - 39911 - 11905: 0xF64B, - 39912 - 11905: 0xF64C, - 39913 - 11905: 0xF64D, - 39914 - 11905: 0xF64E, - 39915 - 11905: 0xF64F, - 39916 - 11905: 0xF650, - 39917 - 11905: 0xF651, - 39918 - 11905: 0xF652, - 39919 - 11905: 0xF653, - 39920 - 11905: 0xF654, - 39921 - 11905: 0xF655, - 39922 - 11905: 0xF656, - 39923 - 11905: 0xF657, - 39924 - 11905: 0xF658, - 39925 - 11905: 0xF659, - 39926 - 11905: 0xF65A, - 39927 - 11905: 0xF65B, - 39928 - 11905: 0xF65C, - 39929 - 11905: 0xF65D, - 39930 - 11905: 0xF65E, - 39931 - 11905: 0xF65F, - 39932 - 11905: 0xF660, - 39933 - 11905: 0xF661, - 39934 - 11905: 0xF662, - 39935 - 11905: 0xF663, - 39936 - 11905: 0xF664, - 39937 - 11905: 0xF665, - 39938 - 11905: 0xF666, - 39939 - 11905: 0xF667, - 39940 - 11905: 0xF668, - 39941 - 11905: 0xF669, - 39942 - 11905: 0xF66A, - 39943 - 11905: 0xF66B, - 39944 - 11905: 0xF66C, - 39945 - 11905: 0xF66D, - 39946 - 11905: 0xF66E, - 39947 - 11905: 0xF66F, - 39948 - 11905: 0xF670, - 39949 - 11905: 0xF671, - 39950 - 11905: 0xF672, - 39951 - 11905: 0xF673, - 39952 - 11905: 0xF674, - 39953 - 11905: 0xF675, - 39954 - 11905: 0xF676, - 39955 - 11905: 0xF677, - 39956 - 11905: 0xF678, - 39957 - 11905: 0xF679, - 39958 - 11905: 0xF67A, - 39959 - 11905: 0xF67B, - 39960 - 11905: 0xF67C, - 39961 - 11905: 0xF67D, - 39962 - 11905: 0xF67E, - 39963 - 11905: 0xF680, - 39964 - 11905: 0xF681, - 39965 - 11905: 0xF682, - 39966 - 11905: 0xF683, - 39967 - 11905: 0xF684, - 39968 - 11905: 0xF685, - 39969 - 11905: 0xF686, - 39970 - 11905: 0xF687, - 39971 - 11905: 0xF688, - 39972 - 11905: 0xF689, - 39973 - 11905: 0xF68A, - 39974 - 11905: 0xF68B, - 39975 - 11905: 0xF68C, - 39976 - 11905: 0xF68D, - 39977 - 11905: 0xF68E, - 39978 - 11905: 0xF68F, - 39979 - 11905: 0xF690, - 39980 - 11905: 0xF691, - 39981 - 11905: 0xF692, - 39982 - 11905: 0xF693, - 39983 - 11905: 0xF694, - 39984 - 11905: 0xF695, - 39985 - 11905: 0xF696, - 39986 - 11905: 0xF697, - 39987 - 11905: 0xF698, - 39988 - 11905: 0xF699, - 39989 - 11905: 0xF69A, - 39990 - 11905: 0xF69B, - 39991 - 11905: 0xF69C, - 39992 - 11905: 0xF69D, - 39993 - 11905: 0xF69E, - 39994 - 11905: 0xF69F, - 39995 - 11905: 0xF6A0, - 39996 - 11905: 0xF740, - 39997 - 11905: 0xF741, - 39998 - 11905: 0xF742, - 39999 - 11905: 0xF743, - 40000 - 11905: 0xF744, - 40001 - 11905: 0xF745, - 40002 - 11905: 0xF746, - 40003 - 11905: 0xF747, - 40004 - 11905: 0xF748, - 40005 - 11905: 0xF749, - 40006 - 11905: 0xF74A, - 40007 - 11905: 0xF74B, - 40008 - 11905: 0xF74C, - 40009 - 11905: 0xF74D, - 40010 - 11905: 0xF74E, - 40011 - 11905: 0xF74F, - 40012 - 11905: 0xF750, - 40013 - 11905: 0xF751, - 40014 - 11905: 0xF752, - 40015 - 11905: 0xF753, - 40016 - 11905: 0xF754, - 40017 - 11905: 0xF755, - 40018 - 11905: 0xF756, - 40019 - 11905: 0xF757, - 40020 - 11905: 0xF758, - 40021 - 11905: 0xF759, - 40022 - 11905: 0xF75A, - 40023 - 11905: 0xF75B, - 40024 - 11905: 0xF75C, - 40025 - 11905: 0xF75D, - 40026 - 11905: 0xF75E, - 40027 - 11905: 0xF75F, - 40028 - 11905: 0xF760, - 40029 - 11905: 0xF761, - 40030 - 11905: 0xF762, - 40031 - 11905: 0xF763, - 40032 - 11905: 0xF764, - 40033 - 11905: 0xF765, - 40034 - 11905: 0xF766, - 40035 - 11905: 0xF767, - 40036 - 11905: 0xF768, - 40037 - 11905: 0xF769, - 40038 - 11905: 0xF76A, - 40039 - 11905: 0xF76B, - 40040 - 11905: 0xF76C, - 40041 - 11905: 0xF76D, - 40042 - 11905: 0xF76E, - 40043 - 11905: 0xF76F, - 40044 - 11905: 0xF770, - 40045 - 11905: 0xF771, - 40046 - 11905: 0xF772, - 40047 - 11905: 0xF773, - 40048 - 11905: 0xF774, - 40049 - 11905: 0xF775, - 40050 - 11905: 0xF776, - 40051 - 11905: 0xF777, - 40052 - 11905: 0xF778, - 40053 - 11905: 0xF779, - 40054 - 11905: 0xF77A, - 40055 - 11905: 0xF77B, - 40056 - 11905: 0xF77C, - 40057 - 11905: 0xF77D, - 40058 - 11905: 0xF77E, - 40059 - 11905: 0xF780, - 40060 - 11905: 0xD3E3, - 40061 - 11905: 0xF781, - 40062 - 11905: 0xF782, - 40063 - 11905: 0xF6CF, - 40064 - 11905: 0xF783, - 40065 - 11905: 0xC2B3, - 40066 - 11905: 0xF6D0, - 40067 - 11905: 0xF784, - 40068 - 11905: 0xF785, - 40069 - 11905: 0xF6D1, - 40070 - 11905: 0xF6D2, - 40071 - 11905: 0xF6D3, - 40072 - 11905: 0xF6D4, - 40073 - 11905: 0xF786, - 40074 - 11905: 0xF787, - 40075 - 11905: 0xF6D6, - 40076 - 11905: 0xF788, - 40077 - 11905: 0xB1AB, - 40078 - 11905: 0xF6D7, - 40079 - 11905: 0xF789, - 40080 - 11905: 0xF6D8, - 40081 - 11905: 0xF6D9, - 40082 - 11905: 0xF6DA, - 40083 - 11905: 0xF78A, - 40084 - 11905: 0xF6DB, - 40085 - 11905: 0xF6DC, - 40086 - 11905: 0xF78B, - 40087 - 11905: 0xF78C, - 40088 - 11905: 0xF78D, - 40089 - 11905: 0xF78E, - 40090 - 11905: 0xF6DD, - 40091 - 11905: 0xF6DE, - 40092 - 11905: 0xCFCA, - 40093 - 11905: 0xF78F, - 40094 - 11905: 0xF6DF, - 40095 - 11905: 0xF6E0, - 40096 - 11905: 0xF6E1, - 40097 - 11905: 0xF6E2, - 40098 - 11905: 0xF6E3, - 40099 - 11905: 0xF6E4, - 40100 - 11905: 0xC0F0, - 40101 - 11905: 0xF6E5, - 40102 - 11905: 0xF6E6, - 40103 - 11905: 0xF6E7, - 40104 - 11905: 0xF6E8, - 40105 - 11905: 0xF6E9, - 40106 - 11905: 0xF790, - 40107 - 11905: 0xF6EA, - 40108 - 11905: 0xF791, - 40109 - 11905: 0xF6EB, - 40110 - 11905: 0xF6EC, - 40111 - 11905: 0xF792, - 40112 - 11905: 0xF6ED, - 40113 - 11905: 0xF6EE, - 40114 - 11905: 0xF6EF, - 40115 - 11905: 0xF6F0, - 40116 - 11905: 0xF6F1, - 40117 - 11905: 0xF6F2, - 40118 - 11905: 0xF6F3, - 40119 - 11905: 0xF6F4, - 40120 - 11905: 0xBEA8, - 40121 - 11905: 0xF793, - 40122 - 11905: 0xF6F5, - 40123 - 11905: 0xF6F6, - 40124 - 11905: 0xF6F7, - 40125 - 11905: 0xF6F8, - 40126 - 11905: 0xF794, - 40127 - 11905: 0xF795, - 40128 - 11905: 0xF796, - 40129 - 11905: 0xF797, - 40130 - 11905: 0xF798, - 40131 - 11905: 0xC8FA, - 40132 - 11905: 0xF6F9, - 40133 - 11905: 0xF6FA, - 40134 - 11905: 0xF6FB, - 40135 - 11905: 0xF6FC, - 40136 - 11905: 0xF799, - 40137 - 11905: 0xF79A, - 40138 - 11905: 0xF6FD, - 40139 - 11905: 0xF6FE, - 40140 - 11905: 0xF7A1, - 40141 - 11905: 0xF7A2, - 40142 - 11905: 0xF7A3, - 40143 - 11905: 0xF7A4, - 40144 - 11905: 0xF7A5, - 40145 - 11905: 0xF79B, - 40146 - 11905: 0xF79C, - 40147 - 11905: 0xF7A6, - 40148 - 11905: 0xF7A7, - 40149 - 11905: 0xF7A8, - 40150 - 11905: 0xB1EE, - 40151 - 11905: 0xF7A9, - 40152 - 11905: 0xF7AA, - 40153 - 11905: 0xF7AB, - 40154 - 11905: 0xF79D, - 40155 - 11905: 0xF79E, - 40156 - 11905: 0xF7AC, - 40157 - 11905: 0xF7AD, - 40158 - 11905: 0xC1DB, - 40159 - 11905: 0xF7AE, - 40160 - 11905: 0xF79F, - 40161 - 11905: 0xF7A0, - 40162 - 11905: 0xF7AF, - 40163 - 11905: 0xF840, - 40164 - 11905: 0xF841, - 40165 - 11905: 0xF842, - 40166 - 11905: 0xF843, - 40167 - 11905: 0xF844, - 40168 - 11905: 0xF845, - 40169 - 11905: 0xF846, - 40170 - 11905: 0xF847, - 40171 - 11905: 0xF848, - 40172 - 11905: 0xF849, - 40173 - 11905: 0xF84A, - 40174 - 11905: 0xF84B, - 40175 - 11905: 0xF84C, - 40176 - 11905: 0xF84D, - 40177 - 11905: 0xF84E, - 40178 - 11905: 0xF84F, - 40179 - 11905: 0xF850, - 40180 - 11905: 0xF851, - 40181 - 11905: 0xF852, - 40182 - 11905: 0xF853, - 40183 - 11905: 0xF854, - 40184 - 11905: 0xF855, - 40185 - 11905: 0xF856, - 40186 - 11905: 0xF857, - 40187 - 11905: 0xF858, - 40188 - 11905: 0xF859, - 40189 - 11905: 0xF85A, - 40190 - 11905: 0xF85B, - 40191 - 11905: 0xF85C, - 40192 - 11905: 0xF85D, - 40193 - 11905: 0xF85E, - 40194 - 11905: 0xF85F, - 40195 - 11905: 0xF860, - 40196 - 11905: 0xF861, - 40197 - 11905: 0xF862, - 40198 - 11905: 0xF863, - 40199 - 11905: 0xF864, - 40200 - 11905: 0xF865, - 40201 - 11905: 0xF866, - 40202 - 11905: 0xF867, - 40203 - 11905: 0xF868, - 40204 - 11905: 0xF869, - 40205 - 11905: 0xF86A, - 40206 - 11905: 0xF86B, - 40207 - 11905: 0xF86C, - 40208 - 11905: 0xF86D, - 40209 - 11905: 0xF86E, - 40210 - 11905: 0xF86F, - 40211 - 11905: 0xF870, - 40212 - 11905: 0xF871, - 40213 - 11905: 0xF872, - 40214 - 11905: 0xF873, - 40215 - 11905: 0xF874, - 40216 - 11905: 0xF875, - 40217 - 11905: 0xF876, - 40218 - 11905: 0xF877, - 40219 - 11905: 0xF878, - 40220 - 11905: 0xF879, - 40221 - 11905: 0xF87A, - 40222 - 11905: 0xF87B, - 40223 - 11905: 0xF87C, - 40224 - 11905: 0xF87D, - 40225 - 11905: 0xF87E, - 40226 - 11905: 0xF880, - 40227 - 11905: 0xF881, - 40228 - 11905: 0xF882, - 40229 - 11905: 0xF883, - 40230 - 11905: 0xF884, - 40231 - 11905: 0xF885, - 40232 - 11905: 0xF886, - 40233 - 11905: 0xF887, - 40234 - 11905: 0xF888, - 40235 - 11905: 0xF889, - 40236 - 11905: 0xF88A, - 40237 - 11905: 0xF88B, - 40238 - 11905: 0xF88C, - 40239 - 11905: 0xF88D, - 40240 - 11905: 0xF88E, - 40241 - 11905: 0xF88F, - 40242 - 11905: 0xF890, - 40243 - 11905: 0xF891, - 40244 - 11905: 0xF892, - 40245 - 11905: 0xF893, - 40246 - 11905: 0xF894, - 40247 - 11905: 0xF895, - 40248 - 11905: 0xF896, - 40249 - 11905: 0xF897, - 40250 - 11905: 0xF898, - 40251 - 11905: 0xF899, - 40252 - 11905: 0xF89A, - 40253 - 11905: 0xF89B, - 40254 - 11905: 0xF89C, - 40255 - 11905: 0xF89D, - 40256 - 11905: 0xF89E, - 40257 - 11905: 0xF89F, - 40258 - 11905: 0xF8A0, - 40259 - 11905: 0xF940, - 40260 - 11905: 0xF941, - 40261 - 11905: 0xF942, - 40262 - 11905: 0xF943, - 40263 - 11905: 0xF944, - 40264 - 11905: 0xF945, - 40265 - 11905: 0xF946, - 40266 - 11905: 0xF947, - 40267 - 11905: 0xF948, - 40268 - 11905: 0xF949, - 40269 - 11905: 0xF94A, - 40270 - 11905: 0xF94B, - 40271 - 11905: 0xF94C, - 40272 - 11905: 0xF94D, - 40273 - 11905: 0xF94E, - 40274 - 11905: 0xF94F, - 40275 - 11905: 0xF950, - 40276 - 11905: 0xF951, - 40277 - 11905: 0xF952, - 40278 - 11905: 0xF953, - 40279 - 11905: 0xF954, - 40280 - 11905: 0xF955, - 40281 - 11905: 0xF956, - 40282 - 11905: 0xF957, - 40283 - 11905: 0xF958, - 40284 - 11905: 0xF959, - 40285 - 11905: 0xF95A, - 40286 - 11905: 0xF95B, - 40287 - 11905: 0xF95C, - 40288 - 11905: 0xF95D, - 40289 - 11905: 0xF95E, - 40290 - 11905: 0xF95F, - 40291 - 11905: 0xF960, - 40292 - 11905: 0xF961, - 40293 - 11905: 0xF962, - 40294 - 11905: 0xF963, - 40295 - 11905: 0xF964, - 40296 - 11905: 0xF965, - 40297 - 11905: 0xF966, - 40298 - 11905: 0xF967, - 40299 - 11905: 0xF968, - 40300 - 11905: 0xF969, - 40301 - 11905: 0xF96A, - 40302 - 11905: 0xF96B, - 40303 - 11905: 0xF96C, - 40304 - 11905: 0xF96D, - 40305 - 11905: 0xF96E, - 40306 - 11905: 0xF96F, - 40307 - 11905: 0xF970, - 40308 - 11905: 0xF971, - 40309 - 11905: 0xF972, - 40310 - 11905: 0xF973, - 40311 - 11905: 0xF974, - 40312 - 11905: 0xF975, - 40313 - 11905: 0xF976, - 40314 - 11905: 0xF977, - 40315 - 11905: 0xF978, - 40316 - 11905: 0xF979, - 40317 - 11905: 0xF97A, - 40318 - 11905: 0xF97B, - 40319 - 11905: 0xF97C, - 40320 - 11905: 0xF97D, - 40321 - 11905: 0xF97E, - 40322 - 11905: 0xF980, - 40323 - 11905: 0xF981, - 40324 - 11905: 0xF982, - 40325 - 11905: 0xF983, - 40326 - 11905: 0xF984, - 40327 - 11905: 0xF985, - 40328 - 11905: 0xF986, - 40329 - 11905: 0xF987, - 40330 - 11905: 0xF988, - 40331 - 11905: 0xF989, - 40332 - 11905: 0xF98A, - 40333 - 11905: 0xF98B, - 40334 - 11905: 0xF98C, - 40335 - 11905: 0xF98D, - 40336 - 11905: 0xF98E, - 40337 - 11905: 0xF98F, - 40338 - 11905: 0xF990, - 40339 - 11905: 0xF991, - 40340 - 11905: 0xF992, - 40341 - 11905: 0xF993, - 40342 - 11905: 0xF994, - 40343 - 11905: 0xF995, - 40344 - 11905: 0xF996, - 40345 - 11905: 0xF997, - 40346 - 11905: 0xF998, - 40347 - 11905: 0xF999, - 40348 - 11905: 0xF99A, - 40349 - 11905: 0xF99B, - 40350 - 11905: 0xF99C, - 40351 - 11905: 0xF99D, - 40352 - 11905: 0xF99E, - 40353 - 11905: 0xF99F, - 40354 - 11905: 0xF9A0, - 40355 - 11905: 0xFA40, - 40356 - 11905: 0xFA41, - 40357 - 11905: 0xFA42, - 40358 - 11905: 0xFA43, - 40359 - 11905: 0xFA44, - 40360 - 11905: 0xFA45, - 40361 - 11905: 0xFA46, - 40362 - 11905: 0xFA47, - 40363 - 11905: 0xFA48, - 40364 - 11905: 0xFA49, - 40365 - 11905: 0xFA4A, - 40366 - 11905: 0xFA4B, - 40367 - 11905: 0xFA4C, - 40368 - 11905: 0xFA4D, - 40369 - 11905: 0xFA4E, - 40370 - 11905: 0xFA4F, - 40371 - 11905: 0xFA50, - 40372 - 11905: 0xFA51, - 40373 - 11905: 0xFA52, - 40374 - 11905: 0xFA53, - 40375 - 11905: 0xFA54, - 40376 - 11905: 0xFA55, - 40377 - 11905: 0xFA56, - 40378 - 11905: 0xFA57, - 40379 - 11905: 0xFA58, - 40380 - 11905: 0xFA59, - 40381 - 11905: 0xFA5A, - 40382 - 11905: 0xFA5B, - 40383 - 11905: 0xFA5C, - 40384 - 11905: 0xFA5D, - 40385 - 11905: 0xFA5E, - 40386 - 11905: 0xFA5F, - 40387 - 11905: 0xFA60, - 40388 - 11905: 0xFA61, - 40389 - 11905: 0xFA62, - 40390 - 11905: 0xFA63, - 40391 - 11905: 0xFA64, - 40392 - 11905: 0xFA65, - 40393 - 11905: 0xFA66, - 40394 - 11905: 0xFA67, - 40395 - 11905: 0xFA68, - 40396 - 11905: 0xFA69, - 40397 - 11905: 0xFA6A, - 40398 - 11905: 0xFA6B, - 40399 - 11905: 0xFA6C, - 40400 - 11905: 0xFA6D, - 40401 - 11905: 0xFA6E, - 40402 - 11905: 0xFA6F, - 40403 - 11905: 0xFA70, - 40404 - 11905: 0xFA71, - 40405 - 11905: 0xFA72, - 40406 - 11905: 0xFA73, - 40407 - 11905: 0xFA74, - 40408 - 11905: 0xFA75, - 40409 - 11905: 0xFA76, - 40410 - 11905: 0xFA77, - 40411 - 11905: 0xFA78, - 40412 - 11905: 0xFA79, - 40413 - 11905: 0xFA7A, - 40414 - 11905: 0xFA7B, - 40415 - 11905: 0xFA7C, - 40416 - 11905: 0xFA7D, - 40417 - 11905: 0xFA7E, - 40418 - 11905: 0xFA80, - 40419 - 11905: 0xFA81, - 40420 - 11905: 0xFA82, - 40421 - 11905: 0xFA83, - 40422 - 11905: 0xFA84, - 40423 - 11905: 0xFA85, - 40424 - 11905: 0xFA86, - 40425 - 11905: 0xFA87, - 40426 - 11905: 0xFA88, - 40427 - 11905: 0xFA89, - 40428 - 11905: 0xFA8A, - 40429 - 11905: 0xFA8B, - 40430 - 11905: 0xFA8C, - 40431 - 11905: 0xFA8D, - 40432 - 11905: 0xFA8E, - 40433 - 11905: 0xFA8F, - 40434 - 11905: 0xFA90, - 40435 - 11905: 0xFA91, - 40436 - 11905: 0xFA92, - 40437 - 11905: 0xFA93, - 40438 - 11905: 0xFA94, - 40439 - 11905: 0xFA95, - 40440 - 11905: 0xFA96, - 40441 - 11905: 0xFA97, - 40442 - 11905: 0xFA98, - 40443 - 11905: 0xFA99, - 40444 - 11905: 0xFA9A, - 40445 - 11905: 0xFA9B, - 40446 - 11905: 0xFA9C, - 40447 - 11905: 0xFA9D, - 40448 - 11905: 0xFA9E, - 40449 - 11905: 0xFA9F, - 40450 - 11905: 0xFAA0, - 40451 - 11905: 0xFB40, - 40452 - 11905: 0xFB41, - 40453 - 11905: 0xFB42, - 40454 - 11905: 0xFB43, - 40455 - 11905: 0xFB44, - 40456 - 11905: 0xFB45, - 40457 - 11905: 0xFB46, - 40458 - 11905: 0xFB47, - 40459 - 11905: 0xFB48, - 40460 - 11905: 0xFB49, - 40461 - 11905: 0xFB4A, - 40462 - 11905: 0xFB4B, - 40463 - 11905: 0xFB4C, - 40464 - 11905: 0xFB4D, - 40465 - 11905: 0xFB4E, - 40466 - 11905: 0xFB4F, - 40467 - 11905: 0xFB50, - 40468 - 11905: 0xFB51, - 40469 - 11905: 0xFB52, - 40470 - 11905: 0xFB53, - 40471 - 11905: 0xFB54, - 40472 - 11905: 0xFB55, - 40473 - 11905: 0xFB56, - 40474 - 11905: 0xFB57, - 40475 - 11905: 0xFB58, - 40476 - 11905: 0xFB59, - 40477 - 11905: 0xFB5A, - 40478 - 11905: 0xFB5B, - 40479 - 11905: 0xC4F1, - 40480 - 11905: 0xF0AF, - 40481 - 11905: 0xBCA6, - 40482 - 11905: 0xF0B0, - 40483 - 11905: 0xC3F9, - 40484 - 11905: 0xFB5C, - 40485 - 11905: 0xC5B8, - 40486 - 11905: 0xD1BB, - 40487 - 11905: 0xFB5D, - 40488 - 11905: 0xF0B1, - 40489 - 11905: 0xF0B2, - 40490 - 11905: 0xF0B3, - 40491 - 11905: 0xF0B4, - 40492 - 11905: 0xF0B5, - 40493 - 11905: 0xD1BC, - 40494 - 11905: 0xFB5E, - 40495 - 11905: 0xD1EC, - 40496 - 11905: 0xFB5F, - 40497 - 11905: 0xF0B7, - 40498 - 11905: 0xF0B6, - 40499 - 11905: 0xD4A7, - 40500 - 11905: 0xFB60, - 40501 - 11905: 0xCDD2, - 40502 - 11905: 0xF0B8, - 40503 - 11905: 0xF0BA, - 40504 - 11905: 0xF0B9, - 40505 - 11905: 0xF0BB, - 40506 - 11905: 0xF0BC, - 40507 - 11905: 0xFB61, - 40508 - 11905: 0xFB62, - 40509 - 11905: 0xB8EB, - 40510 - 11905: 0xF0BD, - 40511 - 11905: 0xBAE8, - 40512 - 11905: 0xFB63, - 40513 - 11905: 0xF0BE, - 40514 - 11905: 0xF0BF, - 40515 - 11905: 0xBEE9, - 40516 - 11905: 0xF0C0, - 40517 - 11905: 0xB6EC, - 40518 - 11905: 0xF0C1, - 40519 - 11905: 0xF0C2, - 40520 - 11905: 0xF0C3, - 40521 - 11905: 0xF0C4, - 40522 - 11905: 0xC8B5, - 40523 - 11905: 0xF0C5, - 40524 - 11905: 0xF0C6, - 40525 - 11905: 0xFB64, - 40526 - 11905: 0xF0C7, - 40527 - 11905: 0xC5F4, - 40528 - 11905: 0xFB65, - 40529 - 11905: 0xF0C8, - 40530 - 11905: 0xFB66, - 40531 - 11905: 0xFB67, - 40532 - 11905: 0xFB68, - 40533 - 11905: 0xF0C9, - 40534 - 11905: 0xFB69, - 40535 - 11905: 0xF0CA, - 40536 - 11905: 0xF7BD, - 40537 - 11905: 0xFB6A, - 40538 - 11905: 0xF0CB, - 40539 - 11905: 0xF0CC, - 40540 - 11905: 0xF0CD, - 40541 - 11905: 0xFB6B, - 40542 - 11905: 0xF0CE, - 40543 - 11905: 0xFB6C, - 40544 - 11905: 0xFB6D, - 40545 - 11905: 0xFB6E, - 40546 - 11905: 0xFB6F, - 40547 - 11905: 0xF0CF, - 40548 - 11905: 0xBAD7, - 40549 - 11905: 0xFB70, - 40550 - 11905: 0xF0D0, - 40551 - 11905: 0xF0D1, - 40552 - 11905: 0xF0D2, - 40553 - 11905: 0xF0D3, - 40554 - 11905: 0xF0D4, - 40555 - 11905: 0xF0D5, - 40556 - 11905: 0xF0D6, - 40557 - 11905: 0xF0D8, - 40558 - 11905: 0xFB71, - 40559 - 11905: 0xFB72, - 40560 - 11905: 0xD3A5, - 40561 - 11905: 0xF0D7, - 40562 - 11905: 0xFB73, - 40563 - 11905: 0xF0D9, - 40564 - 11905: 0xFB74, - 40565 - 11905: 0xFB75, - 40566 - 11905: 0xFB76, - 40567 - 11905: 0xFB77, - 40568 - 11905: 0xFB78, - 40569 - 11905: 0xFB79, - 40570 - 11905: 0xFB7A, - 40571 - 11905: 0xFB7B, - 40572 - 11905: 0xFB7C, - 40573 - 11905: 0xFB7D, - 40574 - 11905: 0xF5BA, - 40575 - 11905: 0xC2B9, - 40576 - 11905: 0xFB7E, - 40577 - 11905: 0xFB80, - 40578 - 11905: 0xF7E4, - 40579 - 11905: 0xFB81, - 40580 - 11905: 0xFB82, - 40581 - 11905: 0xFB83, - 40582 - 11905: 0xFB84, - 40583 - 11905: 0xF7E5, - 40584 - 11905: 0xF7E6, - 40585 - 11905: 0xFB85, - 40586 - 11905: 0xFB86, - 40587 - 11905: 0xF7E7, - 40588 - 11905: 0xFB87, - 40589 - 11905: 0xFB88, - 40590 - 11905: 0xFB89, - 40591 - 11905: 0xFB8A, - 40592 - 11905: 0xFB8B, - 40593 - 11905: 0xFB8C, - 40594 - 11905: 0xF7E8, - 40595 - 11905: 0xC2B4, - 40596 - 11905: 0xFB8D, - 40597 - 11905: 0xFB8E, - 40598 - 11905: 0xFB8F, - 40599 - 11905: 0xFB90, - 40600 - 11905: 0xFB91, - 40601 - 11905: 0xFB92, - 40602 - 11905: 0xFB93, - 40603 - 11905: 0xFB94, - 40604 - 11905: 0xFB95, - 40605 - 11905: 0xF7EA, - 40606 - 11905: 0xFB96, - 40607 - 11905: 0xF7EB, - 40608 - 11905: 0xFB97, - 40609 - 11905: 0xFB98, - 40610 - 11905: 0xFB99, - 40611 - 11905: 0xFB9A, - 40612 - 11905: 0xFB9B, - 40613 - 11905: 0xFB9C, - 40614 - 11905: 0xC2F3, - 40615 - 11905: 0xFB9D, - 40616 - 11905: 0xFB9E, - 40617 - 11905: 0xFB9F, - 40618 - 11905: 0xFBA0, - 40619 - 11905: 0xFC40, - 40620 - 11905: 0xFC41, - 40621 - 11905: 0xFC42, - 40622 - 11905: 0xFC43, - 40623 - 11905: 0xFC44, - 40624 - 11905: 0xFC45, - 40625 - 11905: 0xFC46, - 40626 - 11905: 0xFC47, - 40627 - 11905: 0xFC48, - 40628 - 11905: 0xF4F0, - 40629 - 11905: 0xFC49, - 40630 - 11905: 0xFC4A, - 40631 - 11905: 0xFC4B, - 40632 - 11905: 0xF4EF, - 40633 - 11905: 0xFC4C, - 40634 - 11905: 0xFC4D, - 40635 - 11905: 0xC2E9, - 40636 - 11905: 0xFC4E, - 40637 - 11905: 0xF7E1, - 40638 - 11905: 0xF7E2, - 40639 - 11905: 0xFC4F, - 40640 - 11905: 0xFC50, - 40641 - 11905: 0xFC51, - 40642 - 11905: 0xFC52, - 40643 - 11905: 0xFC53, - 40644 - 11905: 0xBBC6, - 40645 - 11905: 0xFC54, - 40646 - 11905: 0xFC55, - 40647 - 11905: 0xFC56, - 40648 - 11905: 0xFC57, - 40649 - 11905: 0xD9E4, - 40650 - 11905: 0xFC58, - 40651 - 11905: 0xFC59, - 40652 - 11905: 0xFC5A, - 40653 - 11905: 0xCAF2, - 40654 - 11905: 0xC0E8, - 40655 - 11905: 0xF0A4, - 40656 - 11905: 0xFC5B, - 40657 - 11905: 0xBADA, - 40658 - 11905: 0xFC5C, - 40659 - 11905: 0xFC5D, - 40660 - 11905: 0xC7AD, - 40661 - 11905: 0xFC5E, - 40662 - 11905: 0xFC5F, - 40663 - 11905: 0xFC60, - 40664 - 11905: 0xC4AC, - 40665 - 11905: 0xFC61, - 40666 - 11905: 0xFC62, - 40667 - 11905: 0xF7EC, - 40668 - 11905: 0xF7ED, - 40669 - 11905: 0xF7EE, - 40670 - 11905: 0xFC63, - 40671 - 11905: 0xF7F0, - 40672 - 11905: 0xF7EF, - 40673 - 11905: 0xFC64, - 40674 - 11905: 0xF7F1, - 40675 - 11905: 0xFC65, - 40676 - 11905: 0xFC66, - 40677 - 11905: 0xF7F4, - 40678 - 11905: 0xFC67, - 40679 - 11905: 0xF7F3, - 40680 - 11905: 0xFC68, - 40681 - 11905: 0xF7F2, - 40682 - 11905: 0xF7F5, - 40683 - 11905: 0xFC69, - 40684 - 11905: 0xFC6A, - 40685 - 11905: 0xFC6B, - 40686 - 11905: 0xFC6C, - 40687 - 11905: 0xF7F6, - 40688 - 11905: 0xFC6D, - 40689 - 11905: 0xFC6E, - 40690 - 11905: 0xFC6F, - 40691 - 11905: 0xFC70, - 40692 - 11905: 0xFC71, - 40693 - 11905: 0xFC72, - 40694 - 11905: 0xFC73, - 40695 - 11905: 0xFC74, - 40696 - 11905: 0xFC75, - 40697 - 11905: 0xEDE9, - 40698 - 11905: 0xFC76, - 40699 - 11905: 0xEDEA, - 40700 - 11905: 0xEDEB, - 40701 - 11905: 0xFC77, - 40702 - 11905: 0xF6BC, - 40703 - 11905: 0xFC78, - 40704 - 11905: 0xFC79, - 40705 - 11905: 0xFC7A, - 40706 - 11905: 0xFC7B, - 40707 - 11905: 0xFC7C, - 40708 - 11905: 0xFC7D, - 40709 - 11905: 0xFC7E, - 40710 - 11905: 0xFC80, - 40711 - 11905: 0xFC81, - 40712 - 11905: 0xFC82, - 40713 - 11905: 0xFC83, - 40714 - 11905: 0xFC84, - 40715 - 11905: 0xF6BD, - 40716 - 11905: 0xFC85, - 40717 - 11905: 0xF6BE, - 40718 - 11905: 0xB6A6, - 40719 - 11905: 0xFC86, - 40720 - 11905: 0xD8BE, - 40721 - 11905: 0xFC87, - 40722 - 11905: 0xFC88, - 40723 - 11905: 0xB9C4, - 40724 - 11905: 0xFC89, - 40725 - 11905: 0xFC8A, - 40726 - 11905: 0xFC8B, - 40727 - 11905: 0xD8BB, - 40728 - 11905: 0xFC8C, - 40729 - 11905: 0xDCB1, - 40730 - 11905: 0xFC8D, - 40731 - 11905: 0xFC8E, - 40732 - 11905: 0xFC8F, - 40733 - 11905: 0xFC90, - 40734 - 11905: 0xFC91, - 40735 - 11905: 0xFC92, - 40736 - 11905: 0xCAF3, - 40737 - 11905: 0xFC93, - 40738 - 11905: 0xF7F7, - 40739 - 11905: 0xFC94, - 40740 - 11905: 0xFC95, - 40741 - 11905: 0xFC96, - 40742 - 11905: 0xFC97, - 40743 - 11905: 0xFC98, - 40744 - 11905: 0xFC99, - 40745 - 11905: 0xFC9A, - 40746 - 11905: 0xFC9B, - 40747 - 11905: 0xFC9C, - 40748 - 11905: 0xF7F8, - 40749 - 11905: 0xFC9D, - 40750 - 11905: 0xFC9E, - 40751 - 11905: 0xF7F9, - 40752 - 11905: 0xFC9F, - 40753 - 11905: 0xFCA0, - 40754 - 11905: 0xFD40, - 40755 - 11905: 0xFD41, - 40756 - 11905: 0xFD42, - 40757 - 11905: 0xFD43, - 40758 - 11905: 0xFD44, - 40759 - 11905: 0xF7FB, - 40760 - 11905: 0xFD45, - 40761 - 11905: 0xF7FA, - 40762 - 11905: 0xFD46, - 40763 - 11905: 0xB1C7, - 40764 - 11905: 0xFD47, - 40765 - 11905: 0xF7FC, - 40766 - 11905: 0xF7FD, - 40767 - 11905: 0xFD48, - 40768 - 11905: 0xFD49, - 40769 - 11905: 0xFD4A, - 40770 - 11905: 0xFD4B, - 40771 - 11905: 0xFD4C, - 40772 - 11905: 0xF7FE, - 40773 - 11905: 0xFD4D, - 40774 - 11905: 0xFD4E, - 40775 - 11905: 0xFD4F, - 40776 - 11905: 0xFD50, - 40777 - 11905: 0xFD51, - 40778 - 11905: 0xFD52, - 40779 - 11905: 0xFD53, - 40780 - 11905: 0xFD54, - 40781 - 11905: 0xFD55, - 40782 - 11905: 0xFD56, - 40783 - 11905: 0xFD57, - 40784 - 11905: 0xC6EB, - 40785 - 11905: 0xECB4, - 40786 - 11905: 0xFD58, - 40787 - 11905: 0xFD59, - 40788 - 11905: 0xFD5A, - 40789 - 11905: 0xFD5B, - 40790 - 11905: 0xFD5C, - 40791 - 11905: 0xFD5D, - 40792 - 11905: 0xFD5E, - 40793 - 11905: 0xFD5F, - 40794 - 11905: 0xFD60, - 40795 - 11905: 0xFD61, - 40796 - 11905: 0xFD62, - 40797 - 11905: 0xFD63, - 40798 - 11905: 0xFD64, - 40799 - 11905: 0xFD65, - 40800 - 11905: 0xFD66, - 40801 - 11905: 0xFD67, - 40802 - 11905: 0xFD68, - 40803 - 11905: 0xFD69, - 40804 - 11905: 0xFD6A, - 40805 - 11905: 0xFD6B, - 40806 - 11905: 0xFD6C, - 40807 - 11905: 0xFD6D, - 40808 - 11905: 0xFD6E, - 40809 - 11905: 0xFD6F, - 40810 - 11905: 0xFD70, - 40811 - 11905: 0xFD71, - 40812 - 11905: 0xFD72, - 40813 - 11905: 0xFD73, - 40814 - 11905: 0xFD74, - 40815 - 11905: 0xFD75, - 40816 - 11905: 0xFD76, - 40817 - 11905: 0xFD77, - 40818 - 11905: 0xFD78, - 40819 - 11905: 0xFD79, - 40820 - 11905: 0xFD7A, - 40821 - 11905: 0xFD7B, - 40822 - 11905: 0xFD7C, - 40823 - 11905: 0xFD7D, - 40824 - 11905: 0xFD7E, - 40825 - 11905: 0xFD80, - 40826 - 11905: 0xFD81, - 40827 - 11905: 0xFD82, - 40828 - 11905: 0xFD83, - 40829 - 11905: 0xFD84, - 40830 - 11905: 0xFD85, - 40831 - 11905: 0xB3DD, - 40832 - 11905: 0xF6B3, - 40833 - 11905: 0xFD86, - 40834 - 11905: 0xFD87, - 40835 - 11905: 0xF6B4, - 40836 - 11905: 0xC1E4, - 40837 - 11905: 0xF6B5, - 40838 - 11905: 0xF6B6, - 40839 - 11905: 0xF6B7, - 40840 - 11905: 0xF6B8, - 40841 - 11905: 0xF6B9, - 40842 - 11905: 0xF6BA, - 40843 - 11905: 0xC8A3, - 40844 - 11905: 0xF6BB, - 40845 - 11905: 0xFD88, - 40846 - 11905: 0xFD89, - 40847 - 11905: 0xFD8A, - 40848 - 11905: 0xFD8B, - 40849 - 11905: 0xFD8C, - 40850 - 11905: 0xFD8D, - 40851 - 11905: 0xFD8E, - 40852 - 11905: 0xFD8F, - 40853 - 11905: 0xFD90, - 40854 - 11905: 0xFD91, - 40855 - 11905: 0xFD92, - 40856 - 11905: 0xFD93, - 40857 - 11905: 0xC1FA, - 40858 - 11905: 0xB9A8, - 40859 - 11905: 0xEDE8, - 40860 - 11905: 0xFD94, - 40861 - 11905: 0xFD95, - 40862 - 11905: 0xFD96, - 40863 - 11905: 0xB9EA, - 40864 - 11905: 0xD9DF, - 40865 - 11905: 0xFD97, - 40866 - 11905: 0xFD98, - 40867 - 11905: 0xFD99, - 40868 - 11905: 0xFD9A, - 40869 - 11905: 0xFD9B, -} - -const encode1Low, encode1High = 8208, 9795 - -var encode1 = [...]uint16{ - 8208 - 8208: 0xA95C, - 8211 - 8208: 0xA843, - 8212 - 8208: 0xA1AA, - 8213 - 8208: 0xA844, - 8214 - 8208: 0xA1AC, - 8216 - 8208: 0xA1AE, - 8217 - 8208: 0xA1AF, - 8220 - 8208: 0xA1B0, - 8221 - 8208: 0xA1B1, - 8229 - 8208: 0xA845, - 8230 - 8208: 0xA1AD, - 8240 - 8208: 0xA1EB, - 8242 - 8208: 0xA1E4, - 8243 - 8208: 0xA1E5, - 8245 - 8208: 0xA846, - 8251 - 8208: 0xA1F9, - 8364 - 8208: 0xA2E3, - 8451 - 8208: 0xA1E6, - 8453 - 8208: 0xA847, - 8457 - 8208: 0xA848, - 8470 - 8208: 0xA1ED, - 8481 - 8208: 0xA959, - 8544 - 8208: 0xA2F1, - 8545 - 8208: 0xA2F2, - 8546 - 8208: 0xA2F3, - 8547 - 8208: 0xA2F4, - 8548 - 8208: 0xA2F5, - 8549 - 8208: 0xA2F6, - 8550 - 8208: 0xA2F7, - 8551 - 8208: 0xA2F8, - 8552 - 8208: 0xA2F9, - 8553 - 8208: 0xA2FA, - 8554 - 8208: 0xA2FB, - 8555 - 8208: 0xA2FC, - 8560 - 8208: 0xA2A1, - 8561 - 8208: 0xA2A2, - 8562 - 8208: 0xA2A3, - 8563 - 8208: 0xA2A4, - 8564 - 8208: 0xA2A5, - 8565 - 8208: 0xA2A6, - 8566 - 8208: 0xA2A7, - 8567 - 8208: 0xA2A8, - 8568 - 8208: 0xA2A9, - 8569 - 8208: 0xA2AA, - 8592 - 8208: 0xA1FB, - 8593 - 8208: 0xA1FC, - 8594 - 8208: 0xA1FA, - 8595 - 8208: 0xA1FD, - 8598 - 8208: 0xA849, - 8599 - 8208: 0xA84A, - 8600 - 8208: 0xA84B, - 8601 - 8208: 0xA84C, - 8712 - 8208: 0xA1CA, - 8719 - 8208: 0xA1C7, - 8721 - 8208: 0xA1C6, - 8725 - 8208: 0xA84D, - 8730 - 8208: 0xA1CC, - 8733 - 8208: 0xA1D8, - 8734 - 8208: 0xA1DE, - 8735 - 8208: 0xA84E, - 8736 - 8208: 0xA1CF, - 8739 - 8208: 0xA84F, - 8741 - 8208: 0xA1CE, - 8743 - 8208: 0xA1C4, - 8744 - 8208: 0xA1C5, - 8745 - 8208: 0xA1C9, - 8746 - 8208: 0xA1C8, - 8747 - 8208: 0xA1D2, - 8750 - 8208: 0xA1D3, - 8756 - 8208: 0xA1E0, - 8757 - 8208: 0xA1DF, - 8758 - 8208: 0xA1C3, - 8759 - 8208: 0xA1CB, - 8765 - 8208: 0xA1D7, - 8776 - 8208: 0xA1D6, - 8780 - 8208: 0xA1D5, - 8786 - 8208: 0xA850, - 8800 - 8208: 0xA1D9, - 8801 - 8208: 0xA1D4, - 8804 - 8208: 0xA1DC, - 8805 - 8208: 0xA1DD, - 8806 - 8208: 0xA851, - 8807 - 8208: 0xA852, - 8814 - 8208: 0xA1DA, - 8815 - 8208: 0xA1DB, - 8853 - 8208: 0xA892, - 8857 - 8208: 0xA1D1, - 8869 - 8208: 0xA1CD, - 8895 - 8208: 0xA853, - 8978 - 8208: 0xA1D0, - 9312 - 8208: 0xA2D9, - 9313 - 8208: 0xA2DA, - 9314 - 8208: 0xA2DB, - 9315 - 8208: 0xA2DC, - 9316 - 8208: 0xA2DD, - 9317 - 8208: 0xA2DE, - 9318 - 8208: 0xA2DF, - 9319 - 8208: 0xA2E0, - 9320 - 8208: 0xA2E1, - 9321 - 8208: 0xA2E2, - 9332 - 8208: 0xA2C5, - 9333 - 8208: 0xA2C6, - 9334 - 8208: 0xA2C7, - 9335 - 8208: 0xA2C8, - 9336 - 8208: 0xA2C9, - 9337 - 8208: 0xA2CA, - 9338 - 8208: 0xA2CB, - 9339 - 8208: 0xA2CC, - 9340 - 8208: 0xA2CD, - 9341 - 8208: 0xA2CE, - 9342 - 8208: 0xA2CF, - 9343 - 8208: 0xA2D0, - 9344 - 8208: 0xA2D1, - 9345 - 8208: 0xA2D2, - 9346 - 8208: 0xA2D3, - 9347 - 8208: 0xA2D4, - 9348 - 8208: 0xA2D5, - 9349 - 8208: 0xA2D6, - 9350 - 8208: 0xA2D7, - 9351 - 8208: 0xA2D8, - 9352 - 8208: 0xA2B1, - 9353 - 8208: 0xA2B2, - 9354 - 8208: 0xA2B3, - 9355 - 8208: 0xA2B4, - 9356 - 8208: 0xA2B5, - 9357 - 8208: 0xA2B6, - 9358 - 8208: 0xA2B7, - 9359 - 8208: 0xA2B8, - 9360 - 8208: 0xA2B9, - 9361 - 8208: 0xA2BA, - 9362 - 8208: 0xA2BB, - 9363 - 8208: 0xA2BC, - 9364 - 8208: 0xA2BD, - 9365 - 8208: 0xA2BE, - 9366 - 8208: 0xA2BF, - 9367 - 8208: 0xA2C0, - 9368 - 8208: 0xA2C1, - 9369 - 8208: 0xA2C2, - 9370 - 8208: 0xA2C3, - 9371 - 8208: 0xA2C4, - 9472 - 8208: 0xA9A4, - 9473 - 8208: 0xA9A5, - 9474 - 8208: 0xA9A6, - 9475 - 8208: 0xA9A7, - 9476 - 8208: 0xA9A8, - 9477 - 8208: 0xA9A9, - 9478 - 8208: 0xA9AA, - 9479 - 8208: 0xA9AB, - 9480 - 8208: 0xA9AC, - 9481 - 8208: 0xA9AD, - 9482 - 8208: 0xA9AE, - 9483 - 8208: 0xA9AF, - 9484 - 8208: 0xA9B0, - 9485 - 8208: 0xA9B1, - 9486 - 8208: 0xA9B2, - 9487 - 8208: 0xA9B3, - 9488 - 8208: 0xA9B4, - 9489 - 8208: 0xA9B5, - 9490 - 8208: 0xA9B6, - 9491 - 8208: 0xA9B7, - 9492 - 8208: 0xA9B8, - 9493 - 8208: 0xA9B9, - 9494 - 8208: 0xA9BA, - 9495 - 8208: 0xA9BB, - 9496 - 8208: 0xA9BC, - 9497 - 8208: 0xA9BD, - 9498 - 8208: 0xA9BE, - 9499 - 8208: 0xA9BF, - 9500 - 8208: 0xA9C0, - 9501 - 8208: 0xA9C1, - 9502 - 8208: 0xA9C2, - 9503 - 8208: 0xA9C3, - 9504 - 8208: 0xA9C4, - 9505 - 8208: 0xA9C5, - 9506 - 8208: 0xA9C6, - 9507 - 8208: 0xA9C7, - 9508 - 8208: 0xA9C8, - 9509 - 8208: 0xA9C9, - 9510 - 8208: 0xA9CA, - 9511 - 8208: 0xA9CB, - 9512 - 8208: 0xA9CC, - 9513 - 8208: 0xA9CD, - 9514 - 8208: 0xA9CE, - 9515 - 8208: 0xA9CF, - 9516 - 8208: 0xA9D0, - 9517 - 8208: 0xA9D1, - 9518 - 8208: 0xA9D2, - 9519 - 8208: 0xA9D3, - 9520 - 8208: 0xA9D4, - 9521 - 8208: 0xA9D5, - 9522 - 8208: 0xA9D6, - 9523 - 8208: 0xA9D7, - 9524 - 8208: 0xA9D8, - 9525 - 8208: 0xA9D9, - 9526 - 8208: 0xA9DA, - 9527 - 8208: 0xA9DB, - 9528 - 8208: 0xA9DC, - 9529 - 8208: 0xA9DD, - 9530 - 8208: 0xA9DE, - 9531 - 8208: 0xA9DF, - 9532 - 8208: 0xA9E0, - 9533 - 8208: 0xA9E1, - 9534 - 8208: 0xA9E2, - 9535 - 8208: 0xA9E3, - 9536 - 8208: 0xA9E4, - 9537 - 8208: 0xA9E5, - 9538 - 8208: 0xA9E6, - 9539 - 8208: 0xA9E7, - 9540 - 8208: 0xA9E8, - 9541 - 8208: 0xA9E9, - 9542 - 8208: 0xA9EA, - 9543 - 8208: 0xA9EB, - 9544 - 8208: 0xA9EC, - 9545 - 8208: 0xA9ED, - 9546 - 8208: 0xA9EE, - 9547 - 8208: 0xA9EF, - 9552 - 8208: 0xA854, - 9553 - 8208: 0xA855, - 9554 - 8208: 0xA856, - 9555 - 8208: 0xA857, - 9556 - 8208: 0xA858, - 9557 - 8208: 0xA859, - 9558 - 8208: 0xA85A, - 9559 - 8208: 0xA85B, - 9560 - 8208: 0xA85C, - 9561 - 8208: 0xA85D, - 9562 - 8208: 0xA85E, - 9563 - 8208: 0xA85F, - 9564 - 8208: 0xA860, - 9565 - 8208: 0xA861, - 9566 - 8208: 0xA862, - 9567 - 8208: 0xA863, - 9568 - 8208: 0xA864, - 9569 - 8208: 0xA865, - 9570 - 8208: 0xA866, - 9571 - 8208: 0xA867, - 9572 - 8208: 0xA868, - 9573 - 8208: 0xA869, - 9574 - 8208: 0xA86A, - 9575 - 8208: 0xA86B, - 9576 - 8208: 0xA86C, - 9577 - 8208: 0xA86D, - 9578 - 8208: 0xA86E, - 9579 - 8208: 0xA86F, - 9580 - 8208: 0xA870, - 9581 - 8208: 0xA871, - 9582 - 8208: 0xA872, - 9583 - 8208: 0xA873, - 9584 - 8208: 0xA874, - 9585 - 8208: 0xA875, - 9586 - 8208: 0xA876, - 9587 - 8208: 0xA877, - 9601 - 8208: 0xA878, - 9602 - 8208: 0xA879, - 9603 - 8208: 0xA87A, - 9604 - 8208: 0xA87B, - 9605 - 8208: 0xA87C, - 9606 - 8208: 0xA87D, - 9607 - 8208: 0xA87E, - 9608 - 8208: 0xA880, - 9609 - 8208: 0xA881, - 9610 - 8208: 0xA882, - 9611 - 8208: 0xA883, - 9612 - 8208: 0xA884, - 9613 - 8208: 0xA885, - 9614 - 8208: 0xA886, - 9615 - 8208: 0xA887, - 9619 - 8208: 0xA888, - 9620 - 8208: 0xA889, - 9621 - 8208: 0xA88A, - 9632 - 8208: 0xA1F6, - 9633 - 8208: 0xA1F5, - 9650 - 8208: 0xA1F8, - 9651 - 8208: 0xA1F7, - 9660 - 8208: 0xA88B, - 9661 - 8208: 0xA88C, - 9670 - 8208: 0xA1F4, - 9671 - 8208: 0xA1F3, - 9675 - 8208: 0xA1F0, - 9678 - 8208: 0xA1F2, - 9679 - 8208: 0xA1F1, - 9698 - 8208: 0xA88D, - 9699 - 8208: 0xA88E, - 9700 - 8208: 0xA88F, - 9701 - 8208: 0xA890, - 9733 - 8208: 0xA1EF, - 9734 - 8208: 0xA1EE, - 9737 - 8208: 0xA891, - 9792 - 8208: 0xA1E2, - 9794 - 8208: 0xA1E1, -} - -const encode2Low, encode2High = 164, 1106 - -var encode2 = [...]uint16{ - 164 - 164: 0xA1E8, - 167 - 164: 0xA1EC, - 168 - 164: 0xA1A7, - 176 - 164: 0xA1E3, - 177 - 164: 0xA1C0, - 183 - 164: 0xA1A4, - 215 - 164: 0xA1C1, - 224 - 164: 0xA8A4, - 225 - 164: 0xA8A2, - 232 - 164: 0xA8A8, - 233 - 164: 0xA8A6, - 234 - 164: 0xA8BA, - 236 - 164: 0xA8AC, - 237 - 164: 0xA8AA, - 242 - 164: 0xA8B0, - 243 - 164: 0xA8AE, - 247 - 164: 0xA1C2, - 249 - 164: 0xA8B4, - 250 - 164: 0xA8B2, - 252 - 164: 0xA8B9, - 257 - 164: 0xA8A1, - 275 - 164: 0xA8A5, - 283 - 164: 0xA8A7, - 299 - 164: 0xA8A9, - 324 - 164: 0xA8BD, - 328 - 164: 0xA8BE, - 333 - 164: 0xA8AD, - 363 - 164: 0xA8B1, - 462 - 164: 0xA8A3, - 464 - 164: 0xA8AB, - 466 - 164: 0xA8AF, - 468 - 164: 0xA8B3, - 470 - 164: 0xA8B5, - 472 - 164: 0xA8B6, - 474 - 164: 0xA8B7, - 476 - 164: 0xA8B8, - 505 - 164: 0xA8BF, - 593 - 164: 0xA8BB, - 609 - 164: 0xA8C0, - 711 - 164: 0xA1A6, - 713 - 164: 0xA1A5, - 714 - 164: 0xA840, - 715 - 164: 0xA841, - 729 - 164: 0xA842, - 913 - 164: 0xA6A1, - 914 - 164: 0xA6A2, - 915 - 164: 0xA6A3, - 916 - 164: 0xA6A4, - 917 - 164: 0xA6A5, - 918 - 164: 0xA6A6, - 919 - 164: 0xA6A7, - 920 - 164: 0xA6A8, - 921 - 164: 0xA6A9, - 922 - 164: 0xA6AA, - 923 - 164: 0xA6AB, - 924 - 164: 0xA6AC, - 925 - 164: 0xA6AD, - 926 - 164: 0xA6AE, - 927 - 164: 0xA6AF, - 928 - 164: 0xA6B0, - 929 - 164: 0xA6B1, - 931 - 164: 0xA6B2, - 932 - 164: 0xA6B3, - 933 - 164: 0xA6B4, - 934 - 164: 0xA6B5, - 935 - 164: 0xA6B6, - 936 - 164: 0xA6B7, - 937 - 164: 0xA6B8, - 945 - 164: 0xA6C1, - 946 - 164: 0xA6C2, - 947 - 164: 0xA6C3, - 948 - 164: 0xA6C4, - 949 - 164: 0xA6C5, - 950 - 164: 0xA6C6, - 951 - 164: 0xA6C7, - 952 - 164: 0xA6C8, - 953 - 164: 0xA6C9, - 954 - 164: 0xA6CA, - 955 - 164: 0xA6CB, - 956 - 164: 0xA6CC, - 957 - 164: 0xA6CD, - 958 - 164: 0xA6CE, - 959 - 164: 0xA6CF, - 960 - 164: 0xA6D0, - 961 - 164: 0xA6D1, - 963 - 164: 0xA6D2, - 964 - 164: 0xA6D3, - 965 - 164: 0xA6D4, - 966 - 164: 0xA6D5, - 967 - 164: 0xA6D6, - 968 - 164: 0xA6D7, - 969 - 164: 0xA6D8, - 1025 - 164: 0xA7A7, - 1040 - 164: 0xA7A1, - 1041 - 164: 0xA7A2, - 1042 - 164: 0xA7A3, - 1043 - 164: 0xA7A4, - 1044 - 164: 0xA7A5, - 1045 - 164: 0xA7A6, - 1046 - 164: 0xA7A8, - 1047 - 164: 0xA7A9, - 1048 - 164: 0xA7AA, - 1049 - 164: 0xA7AB, - 1050 - 164: 0xA7AC, - 1051 - 164: 0xA7AD, - 1052 - 164: 0xA7AE, - 1053 - 164: 0xA7AF, - 1054 - 164: 0xA7B0, - 1055 - 164: 0xA7B1, - 1056 - 164: 0xA7B2, - 1057 - 164: 0xA7B3, - 1058 - 164: 0xA7B4, - 1059 - 164: 0xA7B5, - 1060 - 164: 0xA7B6, - 1061 - 164: 0xA7B7, - 1062 - 164: 0xA7B8, - 1063 - 164: 0xA7B9, - 1064 - 164: 0xA7BA, - 1065 - 164: 0xA7BB, - 1066 - 164: 0xA7BC, - 1067 - 164: 0xA7BD, - 1068 - 164: 0xA7BE, - 1069 - 164: 0xA7BF, - 1070 - 164: 0xA7C0, - 1071 - 164: 0xA7C1, - 1072 - 164: 0xA7D1, - 1073 - 164: 0xA7D2, - 1074 - 164: 0xA7D3, - 1075 - 164: 0xA7D4, - 1076 - 164: 0xA7D5, - 1077 - 164: 0xA7D6, - 1078 - 164: 0xA7D8, - 1079 - 164: 0xA7D9, - 1080 - 164: 0xA7DA, - 1081 - 164: 0xA7DB, - 1082 - 164: 0xA7DC, - 1083 - 164: 0xA7DD, - 1084 - 164: 0xA7DE, - 1085 - 164: 0xA7DF, - 1086 - 164: 0xA7E0, - 1087 - 164: 0xA7E1, - 1088 - 164: 0xA7E2, - 1089 - 164: 0xA7E3, - 1090 - 164: 0xA7E4, - 1091 - 164: 0xA7E5, - 1092 - 164: 0xA7E6, - 1093 - 164: 0xA7E7, - 1094 - 164: 0xA7E8, - 1095 - 164: 0xA7E9, - 1096 - 164: 0xA7EA, - 1097 - 164: 0xA7EB, - 1098 - 164: 0xA7EC, - 1099 - 164: 0xA7ED, - 1100 - 164: 0xA7EE, - 1101 - 164: 0xA7EF, - 1102 - 164: 0xA7F0, - 1103 - 164: 0xA7F1, - 1105 - 164: 0xA7D7, -} - -const encode3Low, encode3High = 65072, 65510 - -var encode3 = [...]uint16{ - 65072 - 65072: 0xA955, - 65073 - 65072: 0xA6F2, - 65075 - 65072: 0xA6F4, - 65076 - 65072: 0xA6F5, - 65077 - 65072: 0xA6E0, - 65078 - 65072: 0xA6E1, - 65079 - 65072: 0xA6F0, - 65080 - 65072: 0xA6F1, - 65081 - 65072: 0xA6E2, - 65082 - 65072: 0xA6E3, - 65083 - 65072: 0xA6EE, - 65084 - 65072: 0xA6EF, - 65085 - 65072: 0xA6E6, - 65086 - 65072: 0xA6E7, - 65087 - 65072: 0xA6E4, - 65088 - 65072: 0xA6E5, - 65089 - 65072: 0xA6E8, - 65090 - 65072: 0xA6E9, - 65091 - 65072: 0xA6EA, - 65092 - 65072: 0xA6EB, - 65097 - 65072: 0xA968, - 65098 - 65072: 0xA969, - 65099 - 65072: 0xA96A, - 65100 - 65072: 0xA96B, - 65101 - 65072: 0xA96C, - 65102 - 65072: 0xA96D, - 65103 - 65072: 0xA96E, - 65104 - 65072: 0xA96F, - 65105 - 65072: 0xA970, - 65106 - 65072: 0xA971, - 65108 - 65072: 0xA972, - 65109 - 65072: 0xA973, - 65110 - 65072: 0xA974, - 65111 - 65072: 0xA975, - 65113 - 65072: 0xA976, - 65114 - 65072: 0xA977, - 65115 - 65072: 0xA978, - 65116 - 65072: 0xA979, - 65117 - 65072: 0xA97A, - 65118 - 65072: 0xA97B, - 65119 - 65072: 0xA97C, - 65120 - 65072: 0xA97D, - 65121 - 65072: 0xA97E, - 65122 - 65072: 0xA980, - 65123 - 65072: 0xA981, - 65124 - 65072: 0xA982, - 65125 - 65072: 0xA983, - 65126 - 65072: 0xA984, - 65128 - 65072: 0xA985, - 65129 - 65072: 0xA986, - 65130 - 65072: 0xA987, - 65131 - 65072: 0xA988, - 65281 - 65072: 0xA3A1, - 65282 - 65072: 0xA3A2, - 65283 - 65072: 0xA3A3, - 65284 - 65072: 0xA1E7, - 65285 - 65072: 0xA3A5, - 65286 - 65072: 0xA3A6, - 65287 - 65072: 0xA3A7, - 65288 - 65072: 0xA3A8, - 65289 - 65072: 0xA3A9, - 65290 - 65072: 0xA3AA, - 65291 - 65072: 0xA3AB, - 65292 - 65072: 0xA3AC, - 65293 - 65072: 0xA3AD, - 65294 - 65072: 0xA3AE, - 65295 - 65072: 0xA3AF, - 65296 - 65072: 0xA3B0, - 65297 - 65072: 0xA3B1, - 65298 - 65072: 0xA3B2, - 65299 - 65072: 0xA3B3, - 65300 - 65072: 0xA3B4, - 65301 - 65072: 0xA3B5, - 65302 - 65072: 0xA3B6, - 65303 - 65072: 0xA3B7, - 65304 - 65072: 0xA3B8, - 65305 - 65072: 0xA3B9, - 65306 - 65072: 0xA3BA, - 65307 - 65072: 0xA3BB, - 65308 - 65072: 0xA3BC, - 65309 - 65072: 0xA3BD, - 65310 - 65072: 0xA3BE, - 65311 - 65072: 0xA3BF, - 65312 - 65072: 0xA3C0, - 65313 - 65072: 0xA3C1, - 65314 - 65072: 0xA3C2, - 65315 - 65072: 0xA3C3, - 65316 - 65072: 0xA3C4, - 65317 - 65072: 0xA3C5, - 65318 - 65072: 0xA3C6, - 65319 - 65072: 0xA3C7, - 65320 - 65072: 0xA3C8, - 65321 - 65072: 0xA3C9, - 65322 - 65072: 0xA3CA, - 65323 - 65072: 0xA3CB, - 65324 - 65072: 0xA3CC, - 65325 - 65072: 0xA3CD, - 65326 - 65072: 0xA3CE, - 65327 - 65072: 0xA3CF, - 65328 - 65072: 0xA3D0, - 65329 - 65072: 0xA3D1, - 65330 - 65072: 0xA3D2, - 65331 - 65072: 0xA3D3, - 65332 - 65072: 0xA3D4, - 65333 - 65072: 0xA3D5, - 65334 - 65072: 0xA3D6, - 65335 - 65072: 0xA3D7, - 65336 - 65072: 0xA3D8, - 65337 - 65072: 0xA3D9, - 65338 - 65072: 0xA3DA, - 65339 - 65072: 0xA3DB, - 65340 - 65072: 0xA3DC, - 65341 - 65072: 0xA3DD, - 65342 - 65072: 0xA3DE, - 65343 - 65072: 0xA3DF, - 65344 - 65072: 0xA3E0, - 65345 - 65072: 0xA3E1, - 65346 - 65072: 0xA3E2, - 65347 - 65072: 0xA3E3, - 65348 - 65072: 0xA3E4, - 65349 - 65072: 0xA3E5, - 65350 - 65072: 0xA3E6, - 65351 - 65072: 0xA3E7, - 65352 - 65072: 0xA3E8, - 65353 - 65072: 0xA3E9, - 65354 - 65072: 0xA3EA, - 65355 - 65072: 0xA3EB, - 65356 - 65072: 0xA3EC, - 65357 - 65072: 0xA3ED, - 65358 - 65072: 0xA3EE, - 65359 - 65072: 0xA3EF, - 65360 - 65072: 0xA3F0, - 65361 - 65072: 0xA3F1, - 65362 - 65072: 0xA3F2, - 65363 - 65072: 0xA3F3, - 65364 - 65072: 0xA3F4, - 65365 - 65072: 0xA3F5, - 65366 - 65072: 0xA3F6, - 65367 - 65072: 0xA3F7, - 65368 - 65072: 0xA3F8, - 65369 - 65072: 0xA3F9, - 65370 - 65072: 0xA3FA, - 65371 - 65072: 0xA3FB, - 65372 - 65072: 0xA3FC, - 65373 - 65072: 0xA3FD, - 65374 - 65072: 0xA1AB, - 65504 - 65072: 0xA1E9, - 65505 - 65072: 0xA1EA, - 65506 - 65072: 0xA956, - 65507 - 65072: 0xA3FE, - 65508 - 65072: 0xA957, - 65509 - 65072: 0xA3A4, -} - -const encode4Low, encode4High = 63788, 64042 - -var encode4 = [...]uint16{ - 63788 - 63788: 0xFD9C, - 63865 - 63788: 0xFD9D, - 63893 - 63788: 0xFD9E, - 63975 - 63788: 0xFD9F, - 63985 - 63788: 0xFDA0, - 64012 - 63788: 0xFE40, - 64013 - 63788: 0xFE41, - 64014 - 63788: 0xFE42, - 64015 - 63788: 0xFE43, - 64017 - 63788: 0xFE44, - 64019 - 63788: 0xFE45, - 64020 - 63788: 0xFE46, - 64024 - 63788: 0xFE47, - 64031 - 63788: 0xFE48, - 64032 - 63788: 0xFE49, - 64033 - 63788: 0xFE4A, - 64035 - 63788: 0xFE4B, - 64036 - 63788: 0xFE4C, - 64039 - 63788: 0xFE4D, - 64040 - 63788: 0xFE4E, - 64041 - 63788: 0xFE4F, -} diff --git a/vendor/golang.org/x/text/transform/transform.go b/vendor/golang.org/x/text/transform/transform.go deleted file mode 100644 index 164ecca..0000000 --- a/vendor/golang.org/x/text/transform/transform.go +++ /dev/null @@ -1,616 +0,0 @@ -// Copyright 2013 The Go Authors. All rights reserved. -// Use of this source code is governed by a BSD-style -// license that can be found in the LICENSE file. - -// Package transform provides reader and writer wrappers that transform the -// bytes passing through as well as various transformations. Example -// transformations provided by other packages include normalization and -// conversion between character sets. -package transform // import "golang.org/x/text/transform" - -import ( - "bytes" - "errors" - "io" - "unicode/utf8" -) - -var ( - // ErrShortDst means that the destination buffer was too short to - // receive all of the transformed bytes. - ErrShortDst = errors.New("transform: short destination buffer") - - // ErrShortSrc means that the source buffer has insufficient data to - // complete the transformation. - ErrShortSrc = errors.New("transform: short source buffer") - - // errInconsistentByteCount means that Transform returned success (nil - // error) but also returned nSrc inconsistent with the src argument. - errInconsistentByteCount = errors.New("transform: inconsistent byte count returned") - - // errShortInternal means that an internal buffer is not large enough - // to make progress and the Transform operation must be aborted. - errShortInternal = errors.New("transform: short internal buffer") -) - -// Transformer transforms bytes. -type Transformer interface { - // Transform writes to dst the transformed bytes read from src, and - // returns the number of dst bytes written and src bytes read. The - // atEOF argument tells whether src represents the last bytes of the - // input. - // - // Callers should always process the nDst bytes produced and account - // for the nSrc bytes consumed before considering the error err. - // - // A nil error means that all of the transformed bytes (whether freshly - // transformed from src or left over from previous Transform calls) - // were written to dst. A nil error can be returned regardless of - // whether atEOF is true. If err is nil then nSrc must equal len(src); - // the converse is not necessarily true. - // - // ErrShortDst means that dst was too short to receive all of the - // transformed bytes. ErrShortSrc means that src had insufficient data - // to complete the transformation. If both conditions apply, then - // either error may be returned. Other than the error conditions listed - // here, implementations are free to report other errors that arise. - Transform(dst, src []byte, atEOF bool) (nDst, nSrc int, err error) - - // Reset resets the state and allows a Transformer to be reused. - Reset() -} - -// NopResetter can be embedded by implementations of Transformer to add a nop -// Reset method. -type NopResetter struct{} - -// Reset implements the Reset method of the Transformer interface. -func (NopResetter) Reset() {} - -// Reader wraps another io.Reader by transforming the bytes read. -type Reader struct { - r io.Reader - t Transformer - err error - - // dst[dst0:dst1] contains bytes that have been transformed by t but - // not yet copied out via Read. - dst []byte - dst0, dst1 int - - // src[src0:src1] contains bytes that have been read from r but not - // yet transformed through t. - src []byte - src0, src1 int - - // transformComplete is whether the transformation is complete, - // regardless of whether or not it was successful. - transformComplete bool -} - -const defaultBufSize = 4096 - -// NewReader returns a new Reader that wraps r by transforming the bytes read -// via t. It calls Reset on t. -func NewReader(r io.Reader, t Transformer) *Reader { - t.Reset() - return &Reader{ - r: r, - t: t, - dst: make([]byte, defaultBufSize), - src: make([]byte, defaultBufSize), - } -} - -// Read implements the io.Reader interface. -func (r *Reader) Read(p []byte) (int, error) { - n, err := 0, error(nil) - for { - // Copy out any transformed bytes and return the final error if we are done. - if r.dst0 != r.dst1 { - n = copy(p, r.dst[r.dst0:r.dst1]) - r.dst0 += n - if r.dst0 == r.dst1 && r.transformComplete { - return n, r.err - } - return n, nil - } else if r.transformComplete { - return 0, r.err - } - - // Try to transform some source bytes, or to flush the transformer if we - // are out of source bytes. We do this even if r.r.Read returned an error. - // As the io.Reader documentation says, "process the n > 0 bytes returned - // before considering the error". - if r.src0 != r.src1 || r.err != nil { - r.dst0 = 0 - r.dst1, n, err = r.t.Transform(r.dst, r.src[r.src0:r.src1], r.err == io.EOF) - r.src0 += n - - switch { - case err == nil: - if r.src0 != r.src1 { - r.err = errInconsistentByteCount - } - // The Transform call was successful; we are complete if we - // cannot read more bytes into src. - r.transformComplete = r.err != nil - continue - case err == ErrShortDst && (r.dst1 != 0 || n != 0): - // Make room in dst by copying out, and try again. - continue - case err == ErrShortSrc && r.src1-r.src0 != len(r.src) && r.err == nil: - // Read more bytes into src via the code below, and try again. - default: - r.transformComplete = true - // The reader error (r.err) takes precedence over the - // transformer error (err) unless r.err is nil or io.EOF. - if r.err == nil || r.err == io.EOF { - r.err = err - } - continue - } - } - - // Move any untransformed source bytes to the start of the buffer - // and read more bytes. - if r.src0 != 0 { - r.src0, r.src1 = 0, copy(r.src, r.src[r.src0:r.src1]) - } - n, r.err = r.r.Read(r.src[r.src1:]) - r.src1 += n - } -} - -// TODO: implement ReadByte (and ReadRune??). - -// Writer wraps another io.Writer by transforming the bytes read. -// The user needs to call Close to flush unwritten bytes that may -// be buffered. -type Writer struct { - w io.Writer - t Transformer - dst []byte - - // src[:n] contains bytes that have not yet passed through t. - src []byte - n int -} - -// NewWriter returns a new Writer that wraps w by transforming the bytes written -// via t. It calls Reset on t. -func NewWriter(w io.Writer, t Transformer) *Writer { - t.Reset() - return &Writer{ - w: w, - t: t, - dst: make([]byte, defaultBufSize), - src: make([]byte, defaultBufSize), - } -} - -// Write implements the io.Writer interface. If there are not enough -// bytes available to complete a Transform, the bytes will be buffered -// for the next write. Call Close to convert the remaining bytes. -func (w *Writer) Write(data []byte) (n int, err error) { - src := data - if w.n > 0 { - // Append bytes from data to the last remainder. - // TODO: limit the amount copied on first try. - n = copy(w.src[w.n:], data) - w.n += n - src = w.src[:w.n] - } - for { - nDst, nSrc, err := w.t.Transform(w.dst, src, false) - if _, werr := w.w.Write(w.dst[:nDst]); werr != nil { - return n, werr - } - src = src[nSrc:] - if w.n > 0 && len(src) <= n { - // Enough bytes from w.src have been consumed. We make src point - // to data instead to reduce the copying. - w.n = 0 - n -= len(src) - src = data[n:] - if n < len(data) && (err == nil || err == ErrShortSrc) { - continue - } - } else { - n += nSrc - } - switch { - case err == ErrShortDst && (nDst > 0 || nSrc > 0): - case err == ErrShortSrc && len(src) < len(w.src): - m := copy(w.src, src) - // If w.n > 0, bytes from data were already copied to w.src and n - // was already set to the number of bytes consumed. - if w.n == 0 { - n += m - } - w.n = m - return n, nil - case err == nil && w.n > 0: - return n, errInconsistentByteCount - default: - return n, err - } - } -} - -// Close implements the io.Closer interface. -func (w *Writer) Close() error { - for src := w.src[:w.n]; len(src) > 0; { - nDst, nSrc, err := w.t.Transform(w.dst, src, true) - if nDst == 0 { - return err - } - if _, werr := w.w.Write(w.dst[:nDst]); werr != nil { - return werr - } - if err != ErrShortDst { - return err - } - src = src[nSrc:] - } - return nil -} - -type nop struct{ NopResetter } - -func (nop) Transform(dst, src []byte, atEOF bool) (nDst, nSrc int, err error) { - n := copy(dst, src) - if n < len(src) { - err = ErrShortDst - } - return n, n, err -} - -type discard struct{ NopResetter } - -func (discard) Transform(dst, src []byte, atEOF bool) (nDst, nSrc int, err error) { - return 0, len(src), nil -} - -var ( - // Discard is a Transformer for which all Transform calls succeed - // by consuming all bytes and writing nothing. - Discard Transformer = discard{} - - // Nop is a Transformer that copies src to dst. - Nop Transformer = nop{} -) - -// chain is a sequence of links. A chain with N Transformers has N+1 links and -// N+1 buffers. Of those N+1 buffers, the first and last are the src and dst -// buffers given to chain.Transform and the middle N-1 buffers are intermediate -// buffers owned by the chain. The i'th link transforms bytes from the i'th -// buffer chain.link[i].b at read offset chain.link[i].p to the i+1'th buffer -// chain.link[i+1].b at write offset chain.link[i+1].n, for i in [0, N). -type chain struct { - link []link - err error - // errStart is the index at which the error occurred plus 1. Processing - // errStart at this level at the next call to Transform. As long as - // errStart > 0, chain will not consume any more source bytes. - errStart int -} - -func (c *chain) fatalError(errIndex int, err error) { - if i := errIndex + 1; i > c.errStart { - c.errStart = i - c.err = err - } -} - -type link struct { - t Transformer - // b[p:n] holds the bytes to be transformed by t. - b []byte - p int - n int -} - -func (l *link) src() []byte { - return l.b[l.p:l.n] -} - -func (l *link) dst() []byte { - return l.b[l.n:] -} - -// Chain returns a Transformer that applies t in sequence. -func Chain(t ...Transformer) Transformer { - if len(t) == 0 { - return nop{} - } - c := &chain{link: make([]link, len(t)+1)} - for i, tt := range t { - c.link[i].t = tt - } - // Allocate intermediate buffers. - b := make([][defaultBufSize]byte, len(t)-1) - for i := range b { - c.link[i+1].b = b[i][:] - } - return c -} - -// Reset resets the state of Chain. It calls Reset on all the Transformers. -func (c *chain) Reset() { - for i, l := range c.link { - if l.t != nil { - l.t.Reset() - } - c.link[i].p, c.link[i].n = 0, 0 - } -} - -// Transform applies the transformers of c in sequence. -func (c *chain) Transform(dst, src []byte, atEOF bool) (nDst, nSrc int, err error) { - // Set up src and dst in the chain. - srcL := &c.link[0] - dstL := &c.link[len(c.link)-1] - srcL.b, srcL.p, srcL.n = src, 0, len(src) - dstL.b, dstL.n = dst, 0 - var lastFull, needProgress bool // for detecting progress - - // i is the index of the next Transformer to apply, for i in [low, high]. - // low is the lowest index for which c.link[low] may still produce bytes. - // high is the highest index for which c.link[high] has a Transformer. - // The error returned by Transform determines whether to increase or - // decrease i. We try to completely fill a buffer before converting it. - for low, i, high := c.errStart, c.errStart, len(c.link)-2; low <= i && i <= high; { - in, out := &c.link[i], &c.link[i+1] - nDst, nSrc, err0 := in.t.Transform(out.dst(), in.src(), atEOF && low == i) - out.n += nDst - in.p += nSrc - if i > 0 && in.p == in.n { - in.p, in.n = 0, 0 - } - needProgress, lastFull = lastFull, false - switch err0 { - case ErrShortDst: - // Process the destination buffer next. Return if we are already - // at the high index. - if i == high { - return dstL.n, srcL.p, ErrShortDst - } - if out.n != 0 { - i++ - // If the Transformer at the next index is not able to process any - // source bytes there is nothing that can be done to make progress - // and the bytes will remain unprocessed. lastFull is used to - // detect this and break out of the loop with a fatal error. - lastFull = true - continue - } - // The destination buffer was too small, but is completely empty. - // Return a fatal error as this transformation can never complete. - c.fatalError(i, errShortInternal) - case ErrShortSrc: - if i == 0 { - // Save ErrShortSrc in err. All other errors take precedence. - err = ErrShortSrc - break - } - // Source bytes were depleted before filling up the destination buffer. - // Verify we made some progress, move the remaining bytes to the errStart - // and try to get more source bytes. - if needProgress && nSrc == 0 || in.n-in.p == len(in.b) { - // There were not enough source bytes to proceed while the source - // buffer cannot hold any more bytes. Return a fatal error as this - // transformation can never complete. - c.fatalError(i, errShortInternal) - break - } - // in.b is an internal buffer and we can make progress. - in.p, in.n = 0, copy(in.b, in.src()) - fallthrough - case nil: - // if i == low, we have depleted the bytes at index i or any lower levels. - // In that case we increase low and i. In all other cases we decrease i to - // fetch more bytes before proceeding to the next index. - if i > low { - i-- - continue - } - default: - c.fatalError(i, err0) - } - // Exhausted level low or fatal error: increase low and continue - // to process the bytes accepted so far. - i++ - low = i - } - - // If c.errStart > 0, this means we found a fatal error. We will clear - // all upstream buffers. At this point, no more progress can be made - // downstream, as Transform would have bailed while handling ErrShortDst. - if c.errStart > 0 { - for i := 1; i < c.errStart; i++ { - c.link[i].p, c.link[i].n = 0, 0 - } - err, c.errStart, c.err = c.err, 0, nil - } - return dstL.n, srcL.p, err -} - -// RemoveFunc returns a Transformer that removes from the input all runes r for -// which f(r) is true. Illegal bytes in the input are replaced by RuneError. -func RemoveFunc(f func(r rune) bool) Transformer { - return removeF(f) -} - -type removeF func(r rune) bool - -func (removeF) Reset() {} - -// Transform implements the Transformer interface. -func (t removeF) Transform(dst, src []byte, atEOF bool) (nDst, nSrc int, err error) { - for r, sz := rune(0), 0; len(src) > 0; src = src[sz:] { - - if r = rune(src[0]); r < utf8.RuneSelf { - sz = 1 - } else { - r, sz = utf8.DecodeRune(src) - - if sz == 1 { - // Invalid rune. - if !atEOF && !utf8.FullRune(src) { - err = ErrShortSrc - break - } - // We replace illegal bytes with RuneError. Not doing so might - // otherwise turn a sequence of invalid UTF-8 into valid UTF-8. - // The resulting byte sequence may subsequently contain runes - // for which t(r) is true that were passed unnoticed. - if !t(r) { - if nDst+3 > len(dst) { - err = ErrShortDst - break - } - nDst += copy(dst[nDst:], "\uFFFD") - } - nSrc++ - continue - } - } - - if !t(r) { - if nDst+sz > len(dst) { - err = ErrShortDst - break - } - nDst += copy(dst[nDst:], src[:sz]) - } - nSrc += sz - } - return -} - -// grow returns a new []byte that is longer than b, and copies the first n bytes -// of b to the start of the new slice. -func grow(b []byte, n int) []byte { - m := len(b) - if m <= 256 { - m *= 2 - } else { - m += m >> 1 - } - buf := make([]byte, m) - copy(buf, b[:n]) - return buf -} - -const initialBufSize = 128 - -// String returns a string with the result of converting s[:n] using t, where -// n <= len(s). If err == nil, n will be len(s). It calls Reset on t. -func String(t Transformer, s string) (result string, n int, err error) { - if s == "" { - return "", 0, nil - } - - t.Reset() - - // Allocate only once. Note that both dst and src escape when passed to - // Transform. - buf := [2 * initialBufSize]byte{} - dst := buf[:initialBufSize:initialBufSize] - src := buf[initialBufSize : 2*initialBufSize] - - // Avoid allocation if the transformed string is identical to the original. - // After this loop, pDst will point to the furthest point in s for which it - // could be detected that t gives equal results, src[:nSrc] will - // indicated the last processed chunk of s for which the output is not equal - // and dst[:nDst] will be the transform of this chunk. - var nDst, nSrc int - pDst := 0 // Used as index in both src and dst in this loop. - for { - n := copy(src, s[pDst:]) - nDst, nSrc, err = t.Transform(dst, src[:n], pDst+n == len(s)) - - // Note 1: we will not enter the loop with pDst == len(s) and we will - // not end the loop with it either. So if nSrc is 0, this means there is - // some kind of error from which we cannot recover given the current - // buffer sizes. We will give up in this case. - // Note 2: it is not entirely correct to simply do a bytes.Equal as - // a Transformer may buffer internally. It will work in most cases, - // though, and no harm is done if it doesn't work. - // TODO: let transformers implement an optional Spanner interface, akin - // to norm's QuickSpan. This would even allow us to avoid any allocation. - if nSrc == 0 || !bytes.Equal(dst[:nDst], src[:nSrc]) { - break - } - - if pDst += nDst; pDst == len(s) { - return s, pDst, nil - } - } - - // Move the bytes seen so far to dst. - pSrc := pDst + nSrc - if pDst+nDst <= initialBufSize { - copy(dst[pDst:], dst[:nDst]) - } else { - b := make([]byte, len(s)+nDst-nSrc) - copy(b[pDst:], dst[:nDst]) - dst = b - } - copy(dst, s[:pDst]) - pDst += nDst - - if err != nil && err != ErrShortDst && err != ErrShortSrc { - return string(dst[:pDst]), pSrc, err - } - - // Complete the string with the remainder. - for { - n := copy(src, s[pSrc:]) - nDst, nSrc, err = t.Transform(dst[pDst:], src[:n], pSrc+n == len(s)) - pDst += nDst - pSrc += nSrc - - switch err { - case nil: - if pSrc == len(s) { - return string(dst[:pDst]), pSrc, nil - } - case ErrShortDst: - // Do not grow as long as we can make progress. This may avoid - // excessive allocations. - if nDst == 0 { - dst = grow(dst, pDst) - } - case ErrShortSrc: - if nSrc == 0 { - src = grow(src, 0) - } - default: - return string(dst[:pDst]), pSrc, err - } - } -} - -// Bytes returns a new byte slice with the result of converting b[:n] using t, -// where n <= len(b). If err == nil, n will be len(b). It calls Reset on t. -func Bytes(t Transformer, b []byte) (result []byte, n int, err error) { - t.Reset() - dst := make([]byte, len(b)) - pDst, pSrc := 0, 0 - for { - nDst, nSrc, err := t.Transform(dst[pDst:], b[pSrc:], true) - pDst += nDst - pSrc += nSrc - if err != ErrShortDst { - return dst[:pDst], pSrc, err - } - - // Grow the destination buffer, but do not grow as long as we can make - // progress. This may avoid excessive allocations. - if nDst == 0 { - dst = grow(dst, pDst) - } - } -} diff --git a/vendor/golang.org/x/tools/.gitattributes b/vendor/golang.org/x/tools/.gitattributes deleted file mode 100644 index d2f212e..0000000 --- a/vendor/golang.org/x/tools/.gitattributes +++ /dev/null @@ -1,10 +0,0 @@ -# Treat all files in this repo as binary, with no git magic updating -# line endings. Windows users contributing to Go will need to use a -# modern version of git and editors capable of LF line endings. -# -# We'll prevent accidental CRLF line endings from entering the repo -# via the git-review gofmt checks. -# -# See golang.org/issue/9281 - -* -text diff --git a/vendor/golang.org/x/tools/.gitignore b/vendor/golang.org/x/tools/.gitignore deleted file mode 100644 index 5a9d62e..0000000 --- a/vendor/golang.org/x/tools/.gitignore +++ /dev/null @@ -1,2 +0,0 @@ -# Add no patterns to .gitignore except for files generated by the build. -last-change diff --git a/vendor/golang.org/x/tools/AUTHORS b/vendor/golang.org/x/tools/AUTHORS deleted file mode 100644 index 15167cd..0000000 --- a/vendor/golang.org/x/tools/AUTHORS +++ /dev/null @@ -1,3 +0,0 @@ -# This source code refers to The Go Authors for copyright purposes. -# The master list of authors is in the main Go distribution, -# visible at http://tip.golang.org/AUTHORS. diff --git a/vendor/golang.org/x/tools/CONTRIBUTING.md b/vendor/golang.org/x/tools/CONTRIBUTING.md deleted file mode 100644 index 88dff59..0000000 --- a/vendor/golang.org/x/tools/CONTRIBUTING.md +++ /dev/null @@ -1,31 +0,0 @@ -# Contributing to Go - -Go is an open source project. - -It is the work of hundreds of contributors. We appreciate your help! - - -## Filing issues - -When [filing an issue](https://golang.org/issue/new), make sure to answer these five questions: - -1. What version of Go are you using (`go version`)? -2. What operating system and processor architecture are you using? -3. What did you do? -4. What did you expect to see? -5. What did you see instead? - -General questions should go to the [golang-nuts mailing list](https://groups.google.com/group/golang-nuts) instead of the issue tracker. -The gophers there will answer or ask you to file an issue if you've tripped over a bug. - -## Contributing code - -Please read the [Contribution Guidelines](https://golang.org/doc/contribute.html) -before sending patches. - -**We do not accept GitHub pull requests** -(we use [Gerrit](https://code.google.com/p/gerrit/) instead for code review). - -Unless otherwise noted, the Go source files are distributed under -the BSD-style license found in the LICENSE file. - diff --git a/vendor/golang.org/x/tools/CONTRIBUTORS b/vendor/golang.org/x/tools/CONTRIBUTORS deleted file mode 100644 index 1c4577e..0000000 --- a/vendor/golang.org/x/tools/CONTRIBUTORS +++ /dev/null @@ -1,3 +0,0 @@ -# This source code was written by the Go contributors. -# The master list of contributors is in the main Go distribution, -# visible at http://tip.golang.org/CONTRIBUTORS. diff --git a/vendor/golang.org/x/tools/LICENSE b/vendor/golang.org/x/tools/LICENSE deleted file mode 100644 index 6a66aea..0000000 --- a/vendor/golang.org/x/tools/LICENSE +++ /dev/null @@ -1,27 +0,0 @@ -Copyright (c) 2009 The Go Authors. All rights reserved. - -Redistribution and use in source and binary forms, with or without -modification, are permitted provided that the following conditions are -met: - - * Redistributions of source code must retain the above copyright -notice, this list of conditions and the following disclaimer. - * Redistributions in binary form must reproduce the above -copyright notice, this list of conditions and the following disclaimer -in the documentation and/or other materials provided with the -distribution. - * Neither the name of Google Inc. nor the names of its -contributors may be used to endorse or promote products derived from -this software without specific prior written permission. - -THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS -"AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT -LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR -A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT -OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, -SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT -LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, -DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY -THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE -OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. diff --git a/vendor/golang.org/x/tools/PATENTS b/vendor/golang.org/x/tools/PATENTS deleted file mode 100644 index 7330990..0000000 --- a/vendor/golang.org/x/tools/PATENTS +++ /dev/null @@ -1,22 +0,0 @@ -Additional IP Rights Grant (Patents) - -"This implementation" means the copyrightable works distributed by -Google as part of the Go project. - -Google hereby grants to You a perpetual, worldwide, non-exclusive, -no-charge, royalty-free, irrevocable (except as stated in this section) -patent license to make, have made, use, offer to sell, sell, import, -transfer and otherwise run, modify and propagate the contents of this -implementation of Go, where such license applies only to those patent -claims, both currently owned or controlled by Google and acquired in -the future, licensable by Google that are necessarily infringed by this -implementation of Go. This grant does not include claims that would be -infringed only as a consequence of further modification of this -implementation. If you or your agent or exclusive licensee institute or -order or agree to the institution of patent litigation against any -entity (including a cross-claim or counterclaim in a lawsuit) alleging -that this implementation of Go or any code incorporated within this -implementation of Go constitutes direct or contributory patent -infringement, or inducement of patent infringement, then any patent -rights granted to you under this License for this implementation of Go -shall terminate as of the date such litigation is filed. diff --git a/vendor/golang.org/x/tools/README.md b/vendor/golang.org/x/tools/README.md deleted file mode 100644 index 20be9e1..0000000 --- a/vendor/golang.org/x/tools/README.md +++ /dev/null @@ -1,27 +0,0 @@ -# Go Tools - -This subrepository holds the source for various packages and tools that support -the Go programming language. - -Some of the tools, `godoc` and `vet` for example, are included in binary Go -distributions. - -Others, including the Go `guru` and the test coverage tool, can be fetched with -`go get`. - -Packages include a type-checker for Go and an implementation of the -Static Single Assignment form (SSA) representation for Go programs. - -## Download/Install - -The easiest way to install is to run `go get -u golang.org/x/tools/...`. You can -also manually git clone the repository to `$GOPATH/src/golang.org/x/tools`. - -## Report Issues / Send Patches - -This repository uses Gerrit for code changes. To learn how to submit changes to -this repository, see https://golang.org/doc/contribute.html. - -The main issue tracker for the tools repository is located at -https://github.com/golang/go/issues. Prefix your issue with "x/tools/(your -subdir):" in the subject line, so it is easy to find. diff --git a/vendor/golang.org/x/tools/benchmark/parse/parse.go b/vendor/golang.org/x/tools/benchmark/parse/parse.go deleted file mode 100644 index b37e6f0..0000000 --- a/vendor/golang.org/x/tools/benchmark/parse/parse.go +++ /dev/null @@ -1,131 +0,0 @@ -// Copyright 2014 The Go Authors. All rights reserved. -// Use of this source code is governed by a BSD-style -// license that can be found in the LICENSE file. - -// Package parse provides support for parsing benchmark results as -// generated by 'go test -bench'. -package parse // import "golang.org/x/tools/benchmark/parse" - -import ( - "bufio" - "bytes" - "fmt" - "io" - "strconv" - "strings" -) - -// Flags used by Benchmark.Measured to indicate -// which measurements a Benchmark contains. -const ( - NsPerOp = 1 << iota - MBPerS - AllocedBytesPerOp - AllocsPerOp -) - -// Benchmark is one run of a single benchmark. -type Benchmark struct { - Name string // benchmark name - N int // number of iterations - NsPerOp float64 // nanoseconds per iteration - AllocedBytesPerOp uint64 // bytes allocated per iteration - AllocsPerOp uint64 // allocs per iteration - MBPerS float64 // MB processed per second - Measured int // which measurements were recorded - Ord int // ordinal position within a benchmark run -} - -// ParseLine extracts a Benchmark from a single line of testing.B -// output. -func ParseLine(line string) (*Benchmark, error) { - fields := strings.Fields(line) - - // Two required, positional fields: Name and iterations. - if len(fields) < 2 { - return nil, fmt.Errorf("two fields required, have %d", len(fields)) - } - if !strings.HasPrefix(fields[0], "Benchmark") { - return nil, fmt.Errorf(`first field does not start with "Benchmark"`) - } - n, err := strconv.Atoi(fields[1]) - if err != nil { - return nil, err - } - b := &Benchmark{Name: fields[0], N: n} - - // Parse any remaining pairs of fields; we've parsed one pair already. - for i := 1; i < len(fields)/2; i++ { - b.parseMeasurement(fields[i*2], fields[i*2+1]) - } - return b, nil -} - -func (b *Benchmark) parseMeasurement(quant string, unit string) { - switch unit { - case "ns/op": - if f, err := strconv.ParseFloat(quant, 64); err == nil { - b.NsPerOp = f - b.Measured |= NsPerOp - } - case "MB/s": - if f, err := strconv.ParseFloat(quant, 64); err == nil { - b.MBPerS = f - b.Measured |= MBPerS - } - case "B/op": - if i, err := strconv.ParseUint(quant, 10, 64); err == nil { - b.AllocedBytesPerOp = i - b.Measured |= AllocedBytesPerOp - } - case "allocs/op": - if i, err := strconv.ParseUint(quant, 10, 64); err == nil { - b.AllocsPerOp = i - b.Measured |= AllocsPerOp - } - } -} - -func (b *Benchmark) String() string { - buf := new(bytes.Buffer) - fmt.Fprintf(buf, "%s %d", b.Name, b.N) - if (b.Measured & NsPerOp) != 0 { - fmt.Fprintf(buf, " %.2f ns/op", b.NsPerOp) - } - if (b.Measured & MBPerS) != 0 { - fmt.Fprintf(buf, " %.2f MB/s", b.MBPerS) - } - if (b.Measured & AllocedBytesPerOp) != 0 { - fmt.Fprintf(buf, " %d B/op", b.AllocedBytesPerOp) - } - if (b.Measured & AllocsPerOp) != 0 { - fmt.Fprintf(buf, " %d allocs/op", b.AllocsPerOp) - } - return buf.String() -} - -// Set is a collection of benchmarks from one -// testing.B run, keyed by name to facilitate comparison. -type Set map[string][]*Benchmark - -// ParseSet extracts a Set from testing.B output. -// ParseSet preserves the order of benchmarks that have identical -// names. -func ParseSet(r io.Reader) (Set, error) { - bb := make(Set) - scan := bufio.NewScanner(r) - ord := 0 - for scan.Scan() { - if b, err := ParseLine(scan.Text()); err == nil { - b.Ord = ord - ord++ - bb[b.Name] = append(bb[b.Name], b) - } - } - - if err := scan.Err(); err != nil { - return nil, err - } - - return bb, nil -} diff --git a/vendor/golang.org/x/tools/benchmark/parse/parse_test.go b/vendor/golang.org/x/tools/benchmark/parse/parse_test.go deleted file mode 100644 index 06db848..0000000 --- a/vendor/golang.org/x/tools/benchmark/parse/parse_test.go +++ /dev/null @@ -1,154 +0,0 @@ -// Copyright 2014 The Go Authors. All rights reserved. -// Use of this source code is governed by a BSD-style -// license that can be found in the LICENSE file. - -package parse - -import ( - "reflect" - "strings" - "testing" -) - -func TestParseLine(t *testing.T) { - cases := []struct { - line string - want *Benchmark - err bool // expect an error - }{ - { - line: "BenchmarkEncrypt 100000000 19.6 ns/op", - want: &Benchmark{ - Name: "BenchmarkEncrypt", - N: 100000000, NsPerOp: 19.6, - Measured: NsPerOp, - }, - }, - { - line: "BenchmarkEncrypt 100000000 19.6 ns/op 817.77 MB/s", - want: &Benchmark{ - Name: "BenchmarkEncrypt", - N: 100000000, NsPerOp: 19.6, MBPerS: 817.77, - Measured: NsPerOp | MBPerS, - }, - }, - { - line: "BenchmarkEncrypt 100000000 19.6 ns/op 817.77", - want: &Benchmark{ - Name: "BenchmarkEncrypt", - N: 100000000, NsPerOp: 19.6, - Measured: NsPerOp, - }, - }, - { - line: "BenchmarkEncrypt 100000000 19.6 ns/op 817.77 MB/s 5 allocs/op", - want: &Benchmark{ - Name: "BenchmarkEncrypt", - N: 100000000, NsPerOp: 19.6, MBPerS: 817.77, AllocsPerOp: 5, - Measured: NsPerOp | MBPerS | AllocsPerOp, - }, - }, - { - line: "BenchmarkEncrypt 100000000 19.6 ns/op 817.77 MB/s 3 B/op 5 allocs/op", - want: &Benchmark{ - Name: "BenchmarkEncrypt", - N: 100000000, NsPerOp: 19.6, MBPerS: 817.77, AllocedBytesPerOp: 3, AllocsPerOp: 5, - Measured: NsPerOp | MBPerS | AllocedBytesPerOp | AllocsPerOp, - }, - }, - // error handling cases - { - line: "BenchPress 100 19.6 ns/op", // non-benchmark - err: true, - }, - { - line: "BenchmarkEncrypt lots 19.6 ns/op", // non-int iterations - err: true, - }, - { - line: "BenchmarkBridge 100000000 19.6 smoots", // unknown unit - want: &Benchmark{ - Name: "BenchmarkBridge", - N: 100000000, - }, - }, - { - line: "PASS", - err: true, - }, - } - - for _, tt := range cases { - have, err := ParseLine(tt.line) - if tt.err && err == nil { - t.Errorf("parsing line %q should have failed", tt.line) - continue - } - if !reflect.DeepEqual(have, tt.want) { - t.Errorf("parsed line %q incorrectly, want %v have %v", tt.line, tt.want, have) - } - } -} - -func TestParseSet(t *testing.T) { - // Test two things: - // 1. The noise that can accompany testing.B output gets ignored. - // 2. Benchmarks with the same name have their order preserved. - in := ` - ? crypto [no test files] - PASS - pem_decrypt_test.go:17: test 4. %!s(x509.PEMCipher=5) - ... [output truncated] - - BenchmarkEncrypt 100000000 19.6 ns/op - BenchmarkEncrypt 5000000 517 ns/op - === RUN TestChunk - --- PASS: TestChunk (0.00 seconds) - --- SKIP: TestLinuxSendfile (0.00 seconds) - fs_test.go:716: skipping; linux-only test - BenchmarkReadRequestApachebench 1000000 2960 ns/op 27.70 MB/s 839 B/op 9 allocs/op - BenchmarkClientServerParallel64 50000 59192 ns/op 7028 B/op 60 allocs/op - ok net/http 95.783s - ` - - want := Set{ - "BenchmarkReadRequestApachebench": []*Benchmark{ - { - Name: "BenchmarkReadRequestApachebench", - N: 1000000, NsPerOp: 2960, MBPerS: 27.70, AllocedBytesPerOp: 839, AllocsPerOp: 9, - Measured: NsPerOp | MBPerS | AllocedBytesPerOp | AllocsPerOp, - Ord: 2, - }, - }, - "BenchmarkClientServerParallel64": []*Benchmark{ - { - Name: "BenchmarkClientServerParallel64", - N: 50000, NsPerOp: 59192, AllocedBytesPerOp: 7028, AllocsPerOp: 60, - Measured: NsPerOp | AllocedBytesPerOp | AllocsPerOp, - Ord: 3, - }, - }, - "BenchmarkEncrypt": []*Benchmark{ - { - Name: "BenchmarkEncrypt", - N: 100000000, NsPerOp: 19.6, - Measured: NsPerOp, - Ord: 0, - }, - { - Name: "BenchmarkEncrypt", - N: 5000000, NsPerOp: 517, - Measured: NsPerOp, - Ord: 1, - }, - }, - } - - have, err := ParseSet(strings.NewReader(in)) - if err != nil { - t.Fatalf("unexpected err during ParseSet: %v", err) - } - if !reflect.DeepEqual(want, have) { - t.Errorf("parsed bench set incorrectly, want %v have %v", want, have) - } -} diff --git a/vendor/golang.org/x/tools/blog/atom/atom.go b/vendor/golang.org/x/tools/blog/atom/atom.go deleted file mode 100644 index 542c50e..0000000 --- a/vendor/golang.org/x/tools/blog/atom/atom.go +++ /dev/null @@ -1,61 +0,0 @@ -// Copyright 2009 The Go Authors. All rights reserved. -// Use of this source code is governed by a BSD-style -// license that can be found in the LICENSE file. - -// Adapted from encoding/xml/read_test.go. - -// Package atom defines XML data structures for an Atom feed. -package atom // import "golang.org/x/tools/blog/atom" - -import ( - "encoding/xml" - "time" -) - -type Feed struct { - XMLName xml.Name `xml:"http://www.w3.org/2005/Atom feed"` - Title string `xml:"title"` - ID string `xml:"id"` - Link []Link `xml:"link"` - Updated TimeStr `xml:"updated"` - Author *Person `xml:"author"` - Entry []*Entry `xml:"entry"` -} - -type Entry struct { - Title string `xml:"title"` - ID string `xml:"id"` - Link []Link `xml:"link"` - Published TimeStr `xml:"published"` - Updated TimeStr `xml:"updated"` - Author *Person `xml:"author"` - Summary *Text `xml:"summary"` - Content *Text `xml:"content"` -} - -type Link struct { - Rel string `xml:"rel,attr,omitempty"` - Href string `xml:"href,attr"` - Type string `xml:"type,attr,omitempty"` - HrefLang string `xml:"hreflang,attr,omitempty"` - Title string `xml:"title,attr,omitempty"` - Length uint `xml:"length,attr,omitempty"` -} - -type Person struct { - Name string `xml:"name"` - URI string `xml:"uri,omitempty"` - Email string `xml:"email,omitempty"` - InnerXML string `xml:",innerxml"` -} - -type Text struct { - Type string `xml:"type,attr"` - Body string `xml:",chardata"` -} - -type TimeStr string - -func Time(t time.Time) TimeStr { - return TimeStr(t.Format("2006-01-02T15:04:05-07:00")) -} diff --git a/vendor/golang.org/x/tools/blog/blog.go b/vendor/golang.org/x/tools/blog/blog.go deleted file mode 100644 index 4055b1b..0000000 --- a/vendor/golang.org/x/tools/blog/blog.go +++ /dev/null @@ -1,437 +0,0 @@ -// Copyright 2013 The Go Authors. All rights reserved. -// Use of this source code is governed by a BSD-style -// license that can be found in the LICENSE file. - -// Package blog implements a web server for articles written in present format. -package blog // import "golang.org/x/tools/blog" - -import ( - "bytes" - "encoding/json" - "encoding/xml" - "fmt" - "html/template" - "log" - "net/http" - "os" - "path/filepath" - "regexp" - "sort" - "strings" - "time" - - "golang.org/x/tools/blog/atom" - "golang.org/x/tools/present" -) - -var validJSONPFunc = regexp.MustCompile(`(?i)^[a-z_][a-z0-9_.]*$`) - -// Config specifies Server configuration values. -type Config struct { - ContentPath string // Relative or absolute location of article files and related content. - TemplatePath string // Relative or absolute location of template files. - - BaseURL string // Absolute base URL (for permalinks; no trailing slash). - BasePath string // Base URL path relative to server root (no trailing slash). - GodocURL string // The base URL of godoc (for menu bar; no trailing slash). - Hostname string // Server host name, used for rendering ATOM feeds. - - HomeArticles int // Articles to display on the home page. - FeedArticles int // Articles to include in Atom and JSON feeds. - FeedTitle string // The title of the Atom XML feed - - PlayEnabled bool -} - -// Doc represents an article adorned with presentation data. -type Doc struct { - *present.Doc - Permalink string // Canonical URL for this document. - Path string // Path relative to server root (including base). - HTML template.HTML // rendered article - - Related []*Doc - Newer, Older *Doc -} - -// Server implements an http.Handler that serves blog articles. -type Server struct { - cfg Config - docs []*Doc - tags []string - docPaths map[string]*Doc // key is path without BasePath. - docTags map[string][]*Doc - template struct { - home, index, article, doc *template.Template - } - atomFeed []byte // pre-rendered Atom feed - jsonFeed []byte // pre-rendered JSON feed - content http.Handler -} - -// NewServer constructs a new Server using the specified config. -func NewServer(cfg Config) (*Server, error) { - present.PlayEnabled = cfg.PlayEnabled - - if notExist(cfg.TemplatePath) { - return nil, fmt.Errorf("template directory not found: %s", cfg.TemplatePath) - } - root := filepath.Join(cfg.TemplatePath, "root.tmpl") - parse := func(name string) (*template.Template, error) { - path := filepath.Join(cfg.TemplatePath, name) - if notExist(path) { - return nil, fmt.Errorf("template %s was not found in %s", name, cfg.TemplatePath) - } - t := template.New("").Funcs(funcMap) - return t.ParseFiles(root, path) - } - - s := &Server{cfg: cfg} - - // Parse templates. - var err error - s.template.home, err = parse("home.tmpl") - if err != nil { - return nil, err - } - s.template.index, err = parse("index.tmpl") - if err != nil { - return nil, err - } - s.template.article, err = parse("article.tmpl") - if err != nil { - return nil, err - } - p := present.Template().Funcs(funcMap) - s.template.doc, err = p.ParseFiles(filepath.Join(cfg.TemplatePath, "doc.tmpl")) - if err != nil { - return nil, err - } - - // Load content. - err = s.loadDocs(filepath.Clean(cfg.ContentPath)) - if err != nil { - return nil, err - } - - err = s.renderAtomFeed() - if err != nil { - return nil, err - } - - err = s.renderJSONFeed() - if err != nil { - return nil, err - } - - // Set up content file server. - s.content = http.StripPrefix(s.cfg.BasePath, http.FileServer(http.Dir(cfg.ContentPath))) - - return s, nil -} - -var funcMap = template.FuncMap{ - "sectioned": sectioned, - "authors": authors, -} - -// sectioned returns true if the provided Doc contains more than one section. -// This is used to control whether to display the table of contents and headings. -func sectioned(d *present.Doc) bool { - return len(d.Sections) > 1 -} - -// authors returns a comma-separated list of author names. -func authors(authors []present.Author) string { - var b bytes.Buffer - last := len(authors) - 1 - for i, a := range authors { - if i > 0 { - if i == last { - b.WriteString(" and ") - } else { - b.WriteString(", ") - } - } - b.WriteString(authorName(a)) - } - return b.String() -} - -// authorName returns the first line of the Author text: the author's name. -func authorName(a present.Author) string { - el := a.TextElem() - if len(el) == 0 { - return "" - } - text, ok := el[0].(present.Text) - if !ok || len(text.Lines) == 0 { - return "" - } - return text.Lines[0] -} - -// loadDocs reads all content from the provided file system root, renders all -// the articles it finds, adds them to the Server's docs field, computes the -// denormalized docPaths, docTags, and tags fields, and populates the various -// helper fields (Next, Previous, Related) for each Doc. -func (s *Server) loadDocs(root string) error { - // Read content into docs field. - const ext = ".article" - fn := func(p string, info os.FileInfo, err error) error { - if filepath.Ext(p) != ext { - return nil - } - f, err := os.Open(p) - if err != nil { - return err - } - defer f.Close() - d, err := present.Parse(f, p, 0) - if err != nil { - return err - } - html := new(bytes.Buffer) - err = d.Render(html, s.template.doc) - if err != nil { - return err - } - p = p[len(root) : len(p)-len(ext)] // trim root and extension - p = filepath.ToSlash(p) - s.docs = append(s.docs, &Doc{ - Doc: d, - Path: s.cfg.BasePath + p, - Permalink: s.cfg.BaseURL + p, - HTML: template.HTML(html.String()), - }) - return nil - } - err := filepath.Walk(root, fn) - if err != nil { - return err - } - sort.Sort(docsByTime(s.docs)) - - // Pull out doc paths and tags and put in reverse-associating maps. - s.docPaths = make(map[string]*Doc) - s.docTags = make(map[string][]*Doc) - for _, d := range s.docs { - s.docPaths[strings.TrimPrefix(d.Path, s.cfg.BasePath)] = d - for _, t := range d.Tags { - s.docTags[t] = append(s.docTags[t], d) - } - } - - // Pull out unique sorted list of tags. - for t := range s.docTags { - s.tags = append(s.tags, t) - } - sort.Strings(s.tags) - - // Set up presentation-related fields, Newer, Older, and Related. - for _, doc := range s.docs { - // Newer, Older: docs adjacent to doc - for i := range s.docs { - if s.docs[i] != doc { - continue - } - if i > 0 { - doc.Newer = s.docs[i-1] - } - if i+1 < len(s.docs) { - doc.Older = s.docs[i+1] - } - break - } - - // Related: all docs that share tags with doc. - related := make(map[*Doc]bool) - for _, t := range doc.Tags { - for _, d := range s.docTags[t] { - if d != doc { - related[d] = true - } - } - } - for d := range related { - doc.Related = append(doc.Related, d) - } - sort.Sort(docsByTime(doc.Related)) - } - - return nil -} - -// renderAtomFeed generates an XML Atom feed and stores it in the Server's -// atomFeed field. -func (s *Server) renderAtomFeed() error { - var updated time.Time - if len(s.docs) > 0 { - updated = s.docs[0].Time - } - feed := atom.Feed{ - Title: s.cfg.FeedTitle, - ID: "tag:" + s.cfg.Hostname + ",2013:" + s.cfg.Hostname, - Updated: atom.Time(updated), - Link: []atom.Link{{ - Rel: "self", - Href: s.cfg.BaseURL + "/feed.atom", - }}, - } - for i, doc := range s.docs { - if i >= s.cfg.FeedArticles { - break - } - e := &atom.Entry{ - Title: doc.Title, - ID: feed.ID + doc.Path, - Link: []atom.Link{{ - Rel: "alternate", - Href: doc.Permalink, - }}, - Published: atom.Time(doc.Time), - Updated: atom.Time(doc.Time), - Summary: &atom.Text{ - Type: "html", - Body: summary(doc), - }, - Content: &atom.Text{ - Type: "html", - Body: string(doc.HTML), - }, - Author: &atom.Person{ - Name: authors(doc.Authors), - }, - } - feed.Entry = append(feed.Entry, e) - } - data, err := xml.Marshal(&feed) - if err != nil { - return err - } - s.atomFeed = data - return nil -} - -type jsonItem struct { - Title string - Link string - Time time.Time - Summary string - Content string - Author string -} - -// renderJSONFeed generates a JSON feed and stores it in the Server's jsonFeed -// field. -func (s *Server) renderJSONFeed() error { - var feed []jsonItem - for i, doc := range s.docs { - if i >= s.cfg.FeedArticles { - break - } - item := jsonItem{ - Title: doc.Title, - Link: doc.Permalink, - Time: doc.Time, - Summary: summary(doc), - Content: string(doc.HTML), - Author: authors(doc.Authors), - } - feed = append(feed, item) - } - data, err := json.Marshal(feed) - if err != nil { - return err - } - s.jsonFeed = data - return nil -} - -// summary returns the first paragraph of text from the provided Doc. -func summary(d *Doc) string { - if len(d.Sections) == 0 { - return "" - } - for _, elem := range d.Sections[0].Elem { - text, ok := elem.(present.Text) - if !ok || text.Pre { - // skip everything but non-text elements - continue - } - var buf bytes.Buffer - for _, s := range text.Lines { - buf.WriteString(string(present.Style(s))) - buf.WriteByte('\n') - } - return buf.String() - } - return "" -} - -// rootData encapsulates data destined for the root template. -type rootData struct { - Doc *Doc - BasePath string - GodocURL string - Data interface{} -} - -// ServeHTTP serves the front, index, and article pages -// as well as the ATOM and JSON feeds. -func (s *Server) ServeHTTP(w http.ResponseWriter, r *http.Request) { - var ( - d = rootData{BasePath: s.cfg.BasePath, GodocURL: s.cfg.GodocURL} - t *template.Template - ) - switch p := strings.TrimPrefix(r.URL.Path, s.cfg.BasePath); p { - case "/": - d.Data = s.docs - if len(s.docs) > s.cfg.HomeArticles { - d.Data = s.docs[:s.cfg.HomeArticles] - } - t = s.template.home - case "/index": - d.Data = s.docs - t = s.template.index - case "/feed.atom", "/feeds/posts/default": - w.Header().Set("Content-type", "application/atom+xml; charset=utf-8") - w.Write(s.atomFeed) - return - case "/.json": - if p := r.FormValue("jsonp"); validJSONPFunc.MatchString(p) { - w.Header().Set("Content-type", "application/javascript; charset=utf-8") - fmt.Fprintf(w, "%v(%s)", p, s.jsonFeed) - return - } - w.Header().Set("Content-type", "application/json; charset=utf-8") - w.Write(s.jsonFeed) - return - default: - doc, ok := s.docPaths[p] - if !ok { - // Not a doc; try to just serve static content. - s.content.ServeHTTP(w, r) - return - } - d.Doc = doc - t = s.template.article - } - err := t.ExecuteTemplate(w, "root", d) - if err != nil { - log.Println(err) - } -} - -// docsByTime implements sort.Interface, sorting Docs by their Time field. -type docsByTime []*Doc - -func (s docsByTime) Len() int { return len(s) } -func (s docsByTime) Swap(i, j int) { s[i], s[j] = s[j], s[i] } -func (s docsByTime) Less(i, j int) bool { return s[i].Time.After(s[j].Time) } - -// notExist reports whether the path exists or not. -func notExist(path string) bool { - _, err := os.Stat(path) - return os.IsNotExist(err) -} diff --git a/vendor/golang.org/x/tools/cmd/benchcmp/benchcmp.go b/vendor/golang.org/x/tools/cmd/benchcmp/benchcmp.go deleted file mode 100644 index 32f3a1c..0000000 --- a/vendor/golang.org/x/tools/cmd/benchcmp/benchcmp.go +++ /dev/null @@ -1,184 +0,0 @@ -// Copyright 2014 The Go Authors. All rights reserved. -// Use of this source code is governed by a BSD-style -// license that can be found in the LICENSE file. - -package main - -import ( - "flag" - "fmt" - "os" - "sort" - "strconv" - "text/tabwriter" - - "golang.org/x/tools/benchmark/parse" -) - -var ( - changedOnly = flag.Bool("changed", false, "show only benchmarks that have changed") - magSort = flag.Bool("mag", false, "sort benchmarks by magnitude of change") - best = flag.Bool("best", false, "compare best times from old and new") -) - -const usageFooter = ` -Each input file should be from: - go test -run=NONE -bench=. > [old,new].txt - -Benchcmp compares old and new for each benchmark. - -If -test.benchmem=true is added to the "go test" command -benchcmp will also compare memory allocations. -` - -func main() { - flag.Usage = func() { - fmt.Fprintf(os.Stderr, "usage: %s old.txt new.txt\n\n", os.Args[0]) - flag.PrintDefaults() - fmt.Fprint(os.Stderr, usageFooter) - os.Exit(2) - } - flag.Parse() - if flag.NArg() != 2 { - flag.Usage() - } - - before := parseFile(flag.Arg(0)) - after := parseFile(flag.Arg(1)) - - cmps, warnings := Correlate(before, after) - - for _, warn := range warnings { - fmt.Fprintln(os.Stderr, warn) - } - - if len(cmps) == 0 { - fatal("benchcmp: no repeated benchmarks") - } - - w := new(tabwriter.Writer) - w.Init(os.Stdout, 0, 0, 5, ' ', 0) - defer w.Flush() - - var header bool // Has the header has been displayed yet for a given block? - - if *magSort { - sort.Sort(ByDeltaNsPerOp(cmps)) - } else { - sort.Sort(ByParseOrder(cmps)) - } - for _, cmp := range cmps { - if !cmp.Measured(parse.NsPerOp) { - continue - } - if delta := cmp.DeltaNsPerOp(); !*changedOnly || delta.Changed() { - if !header { - fmt.Fprint(w, "benchmark\told ns/op\tnew ns/op\tdelta\n") - header = true - } - fmt.Fprintf(w, "%s\t%s\t%s\t%s\n", cmp.Name(), formatNs(cmp.Before.NsPerOp), formatNs(cmp.After.NsPerOp), delta.Percent()) - } - } - - header = false - if *magSort { - sort.Sort(ByDeltaMBPerS(cmps)) - } - for _, cmp := range cmps { - if !cmp.Measured(parse.MBPerS) { - continue - } - if delta := cmp.DeltaMBPerS(); !*changedOnly || delta.Changed() { - if !header { - fmt.Fprint(w, "\nbenchmark\told MB/s\tnew MB/s\tspeedup\n") - header = true - } - fmt.Fprintf(w, "%s\t%.2f\t%.2f\t%s\n", cmp.Name(), cmp.Before.MBPerS, cmp.After.MBPerS, delta.Multiple()) - } - } - - header = false - if *magSort { - sort.Sort(ByDeltaAllocsPerOp(cmps)) - } - for _, cmp := range cmps { - if !cmp.Measured(parse.AllocsPerOp) { - continue - } - if delta := cmp.DeltaAllocsPerOp(); !*changedOnly || delta.Changed() { - if !header { - fmt.Fprint(w, "\nbenchmark\told allocs\tnew allocs\tdelta\n") - header = true - } - fmt.Fprintf(w, "%s\t%d\t%d\t%s\n", cmp.Name(), cmp.Before.AllocsPerOp, cmp.After.AllocsPerOp, delta.Percent()) - } - } - - header = false - if *magSort { - sort.Sort(ByDeltaAllocedBytesPerOp(cmps)) - } - for _, cmp := range cmps { - if !cmp.Measured(parse.AllocedBytesPerOp) { - continue - } - if delta := cmp.DeltaAllocedBytesPerOp(); !*changedOnly || delta.Changed() { - if !header { - fmt.Fprint(w, "\nbenchmark\told bytes\tnew bytes\tdelta\n") - header = true - } - fmt.Fprintf(w, "%s\t%d\t%d\t%s\n", cmp.Name(), cmp.Before.AllocedBytesPerOp, cmp.After.AllocedBytesPerOp, cmp.DeltaAllocedBytesPerOp().Percent()) - } - } -} - -func fatal(msg interface{}) { - fmt.Fprintln(os.Stderr, msg) - os.Exit(1) -} - -func parseFile(path string) parse.Set { - f, err := os.Open(path) - if err != nil { - fatal(err) - } - defer f.Close() - bb, err := parse.ParseSet(f) - if err != nil { - fatal(err) - } - if *best { - selectBest(bb) - } - return bb -} - -func selectBest(bs parse.Set) { - for name, bb := range bs { - if len(bb) < 2 { - continue - } - ord := bb[0].Ord - best := bb[0] - for _, b := range bb { - if b.NsPerOp < best.NsPerOp { - b.Ord = ord - best = b - } - } - bs[name] = []*parse.Benchmark{best} - } -} - -// formatNs formats ns measurements to expose a useful amount of -// precision. It mirrors the ns precision logic of testing.B. -func formatNs(ns float64) string { - prec := 0 - switch { - case ns < 10: - prec = 2 - case ns < 100: - prec = 1 - } - return strconv.FormatFloat(ns, 'f', prec, 64) -} diff --git a/vendor/golang.org/x/tools/cmd/benchcmp/benchcmp_test.go b/vendor/golang.org/x/tools/cmd/benchcmp/benchcmp_test.go deleted file mode 100644 index 2226079..0000000 --- a/vendor/golang.org/x/tools/cmd/benchcmp/benchcmp_test.go +++ /dev/null @@ -1,59 +0,0 @@ -package main - -import ( - "reflect" - "testing" - - "golang.org/x/tools/benchmark/parse" -) - -func TestSelectBest(t *testing.T) { - have := parse.Set{ - "Benchmark1": []*parse.Benchmark{ - { - Name: "Benchmark1", - N: 10, NsPerOp: 100, Measured: parse.NsPerOp, - Ord: 0, - }, - { - Name: "Benchmark1", - N: 10, NsPerOp: 50, Measured: parse.NsPerOp, - Ord: 3, - }, - }, - "Benchmark2": []*parse.Benchmark{ - { - Name: "Benchmark2", - N: 10, NsPerOp: 60, Measured: parse.NsPerOp, - Ord: 1, - }, - { - Name: "Benchmark2", - N: 10, NsPerOp: 500, Measured: parse.NsPerOp, - Ord: 2, - }, - }, - } - - want := parse.Set{ - "Benchmark1": []*parse.Benchmark{ - { - Name: "Benchmark1", - N: 10, NsPerOp: 50, Measured: parse.NsPerOp, - Ord: 0, - }, - }, - "Benchmark2": []*parse.Benchmark{ - { - Name: "Benchmark2", - N: 10, NsPerOp: 60, Measured: parse.NsPerOp, - Ord: 1, - }, - }, - } - - selectBest(have) - if !reflect.DeepEqual(want, have) { - t.Errorf("filtered bench set incorrectly, want %v have %v", want, have) - } -} diff --git a/vendor/golang.org/x/tools/cmd/benchcmp/compare.go b/vendor/golang.org/x/tools/cmd/benchcmp/compare.go deleted file mode 100644 index c3f5e89..0000000 --- a/vendor/golang.org/x/tools/cmd/benchcmp/compare.go +++ /dev/null @@ -1,156 +0,0 @@ -// Copyright 2014 The Go Authors. All rights reserved. -// Use of this source code is governed by a BSD-style -// license that can be found in the LICENSE file. - -package main - -import ( - "fmt" - "math" - - "golang.org/x/tools/benchmark/parse" -) - -// BenchCmp is a pair of benchmarks. -type BenchCmp struct { - Before *parse.Benchmark - After *parse.Benchmark -} - -// Correlate correlates benchmarks from two BenchSets. -func Correlate(before, after parse.Set) (cmps []BenchCmp, warnings []string) { - cmps = make([]BenchCmp, 0, len(after)) - for name, beforebb := range before { - afterbb := after[name] - if len(beforebb) != len(afterbb) { - warnings = append(warnings, fmt.Sprintf("ignoring %s: before has %d instances, after has %d", name, len(beforebb), len(afterbb))) - continue - } - for i, beforeb := range beforebb { - afterb := afterbb[i] - cmps = append(cmps, BenchCmp{beforeb, afterb}) - } - } - return -} - -func (c BenchCmp) Name() string { return c.Before.Name } -func (c BenchCmp) String() string { return fmt.Sprintf("<%s, %s>", c.Before, c.After) } -func (c BenchCmp) Measured(flag int) bool { return (c.Before.Measured & c.After.Measured & flag) != 0 } -func (c BenchCmp) DeltaNsPerOp() Delta { return Delta{c.Before.NsPerOp, c.After.NsPerOp} } -func (c BenchCmp) DeltaMBPerS() Delta { return Delta{c.Before.MBPerS, c.After.MBPerS} } -func (c BenchCmp) DeltaAllocedBytesPerOp() Delta { - return Delta{float64(c.Before.AllocedBytesPerOp), float64(c.After.AllocedBytesPerOp)} -} -func (c BenchCmp) DeltaAllocsPerOp() Delta { - return Delta{float64(c.Before.AllocsPerOp), float64(c.After.AllocsPerOp)} -} - -// Delta is the before and after value for a benchmark measurement. -// Both must be non-negative. -type Delta struct { - Before float64 - After float64 -} - -// mag calculates the magnitude of a change, regardless of the direction of -// the change. mag is intended for sorting and has no independent meaning. -func (d Delta) mag() float64 { - switch { - case d.Before != 0 && d.After != 0 && d.Before >= d.After: - return d.After / d.Before - case d.Before != 0 && d.After != 0 && d.Before < d.After: - return d.Before / d.After - case d.Before == 0 && d.After == 0: - return 1 - default: - // 0 -> 1 or 1 -> 0 - // These are significant changes and worth surfacing. - return math.Inf(1) - } -} - -// Changed reports whether the benchmark quantities are different. -func (d Delta) Changed() bool { return d.Before != d.After } - -// Float64 returns After / Before. If Before is 0, Float64 returns -// 1 if After is also 0, and +Inf otherwise. -func (d Delta) Float64() float64 { - switch { - case d.Before != 0: - return d.After / d.Before - case d.After == 0: - return 1 - default: - return math.Inf(1) - } -} - -// Percent formats a Delta as a percent change, ranging from -100% up. -func (d Delta) Percent() string { - return fmt.Sprintf("%+.2f%%", 100*d.Float64()-100) -} - -// Multiple formats a Delta as a multiplier, ranging from 0.00x up. -func (d Delta) Multiple() string { - return fmt.Sprintf("%.2fx", d.Float64()) -} - -func (d Delta) String() string { - return fmt.Sprintf("Δ(%f, %f)", d.Before, d.After) -} - -// ByParseOrder sorts BenchCmps to match the order in -// which the Before benchmarks were presented to Parse. -type ByParseOrder []BenchCmp - -func (x ByParseOrder) Len() int { return len(x) } -func (x ByParseOrder) Swap(i, j int) { x[i], x[j] = x[j], x[i] } -func (x ByParseOrder) Less(i, j int) bool { return x[i].Before.Ord < x[j].Before.Ord } - -// lessByDelta provides lexicographic ordering: -// * largest delta by magnitude -// * alphabetic by name -func lessByDelta(i, j BenchCmp, calcDelta func(BenchCmp) Delta) bool { - iDelta, jDelta := calcDelta(i).mag(), calcDelta(j).mag() - if iDelta != jDelta { - return iDelta < jDelta - } - return i.Name() < j.Name() -} - -// ByDeltaNsPerOp sorts BenchCmps lexicographically by change -// in ns/op, descending, then by benchmark name. -type ByDeltaNsPerOp []BenchCmp - -func (x ByDeltaNsPerOp) Len() int { return len(x) } -func (x ByDeltaNsPerOp) Swap(i, j int) { x[i], x[j] = x[j], x[i] } -func (x ByDeltaNsPerOp) Less(i, j int) bool { return lessByDelta(x[i], x[j], BenchCmp.DeltaNsPerOp) } - -// ByDeltaMBPerS sorts BenchCmps lexicographically by change -// in MB/s, descending, then by benchmark name. -type ByDeltaMBPerS []BenchCmp - -func (x ByDeltaMBPerS) Len() int { return len(x) } -func (x ByDeltaMBPerS) Swap(i, j int) { x[i], x[j] = x[j], x[i] } -func (x ByDeltaMBPerS) Less(i, j int) bool { return lessByDelta(x[i], x[j], BenchCmp.DeltaMBPerS) } - -// ByDeltaAllocedBytesPerOp sorts BenchCmps lexicographically by change -// in B/op, descending, then by benchmark name. -type ByDeltaAllocedBytesPerOp []BenchCmp - -func (x ByDeltaAllocedBytesPerOp) Len() int { return len(x) } -func (x ByDeltaAllocedBytesPerOp) Swap(i, j int) { x[i], x[j] = x[j], x[i] } -func (x ByDeltaAllocedBytesPerOp) Less(i, j int) bool { - return lessByDelta(x[i], x[j], BenchCmp.DeltaAllocedBytesPerOp) -} - -// ByDeltaAllocsPerOp sorts BenchCmps lexicographically by change -// in allocs/op, descending, then by benchmark name. -type ByDeltaAllocsPerOp []BenchCmp - -func (x ByDeltaAllocsPerOp) Len() int { return len(x) } -func (x ByDeltaAllocsPerOp) Swap(i, j int) { x[i], x[j] = x[j], x[i] } -func (x ByDeltaAllocsPerOp) Less(i, j int) bool { - return lessByDelta(x[i], x[j], BenchCmp.DeltaAllocsPerOp) -} diff --git a/vendor/golang.org/x/tools/cmd/benchcmp/compare_test.go b/vendor/golang.org/x/tools/cmd/benchcmp/compare_test.go deleted file mode 100644 index 3403796..0000000 --- a/vendor/golang.org/x/tools/cmd/benchcmp/compare_test.go +++ /dev/null @@ -1,133 +0,0 @@ -// Copyright 2014 The Go Authors. All rights reserved. -// Use of this source code is governed by a BSD-style -// license that can be found in the LICENSE file. - -package main - -import ( - "math" - "reflect" - "sort" - "testing" - - "golang.org/x/tools/benchmark/parse" -) - -func TestDelta(t *testing.T) { - cases := []struct { - before float64 - after float64 - mag float64 - f float64 - changed bool - pct string - mult string - }{ - {before: 1, after: 1, mag: 1, f: 1, changed: false, pct: "+0.00%", mult: "1.00x"}, - {before: 1, after: 2, mag: 0.5, f: 2, changed: true, pct: "+100.00%", mult: "2.00x"}, - {before: 2, after: 1, mag: 0.5, f: 0.5, changed: true, pct: "-50.00%", mult: "0.50x"}, - {before: 0, after: 0, mag: 1, f: 1, changed: false, pct: "+0.00%", mult: "1.00x"}, - {before: 1, after: 0, mag: math.Inf(1), f: 0, changed: true, pct: "-100.00%", mult: "0.00x"}, - {before: 0, after: 1, mag: math.Inf(1), f: math.Inf(1), changed: true, pct: "+Inf%", mult: "+Infx"}, - } - for _, tt := range cases { - d := Delta{tt.before, tt.after} - if want, have := tt.mag, d.mag(); want != have { - t.Errorf("%s.mag(): want %f have %f", d, want, have) - } - if want, have := tt.f, d.Float64(); want != have { - t.Errorf("%s.Float64(): want %f have %f", d, want, have) - } - if want, have := tt.changed, d.Changed(); want != have { - t.Errorf("%s.Changed(): want %t have %t", d, want, have) - } - if want, have := tt.pct, d.Percent(); want != have { - t.Errorf("%s.Percent(): want %q have %q", d, want, have) - } - if want, have := tt.mult, d.Multiple(); want != have { - t.Errorf("%s.Multiple(): want %q have %q", d, want, have) - } - } -} - -func TestCorrelate(t *testing.T) { - // Benches that are going to be successfully correlated get N thus: - // 0x - // Read this: " of , from ". - before := parse.Set{ - "BenchmarkOneEach": []*parse.Benchmark{{Name: "BenchmarkOneEach", N: 0x11b}}, - "BenchmarkOneToNone": []*parse.Benchmark{{Name: "BenchmarkOneToNone"}}, - "BenchmarkOneToTwo": []*parse.Benchmark{{Name: "BenchmarkOneToTwo"}}, - "BenchmarkTwoToOne": []*parse.Benchmark{ - {Name: "BenchmarkTwoToOne"}, - {Name: "BenchmarkTwoToOne"}, - }, - "BenchmarkTwoEach": []*parse.Benchmark{ - {Name: "BenchmarkTwoEach", N: 0x12b}, - {Name: "BenchmarkTwoEach", N: 0x22b}, - }, - } - - after := parse.Set{ - "BenchmarkOneEach": []*parse.Benchmark{{Name: "BenchmarkOneEach", N: 0x11a}}, - "BenchmarkNoneToOne": []*parse.Benchmark{{Name: "BenchmarkNoneToOne"}}, - "BenchmarkTwoToOne": []*parse.Benchmark{{Name: "BenchmarkTwoToOne"}}, - "BenchmarkOneToTwo": []*parse.Benchmark{ - {Name: "BenchmarkOneToTwo"}, - {Name: "BenchmarkOneToTwo"}, - }, - "BenchmarkTwoEach": []*parse.Benchmark{ - {Name: "BenchmarkTwoEach", N: 0x12a}, - {Name: "BenchmarkTwoEach", N: 0x22a}, - }, - } - - pairs, errs := Correlate(before, after) - - // Fail to match: BenchmarkOneToNone, BenchmarkOneToTwo, BenchmarkTwoToOne. - // Correlate does not notice BenchmarkNoneToOne. - if len(errs) != 3 { - t.Errorf("Correlated expected 4 errors, got %d: %v", len(errs), errs) - } - - // Want three correlated pairs: one BenchmarkOneEach, two BenchmarkTwoEach. - if len(pairs) != 3 { - t.Fatalf("Correlated expected 3 pairs, got %v", pairs) - } - - for _, pair := range pairs { - if pair.Before.N&0xF != 0xb { - t.Errorf("unexpected Before in pair %s", pair) - } - if pair.After.N&0xF != 0xa { - t.Errorf("unexpected After in pair %s", pair) - } - if pair.Before.N>>4 != pair.After.N>>4 { - t.Errorf("mismatched pair %s", pair) - } - } -} - -func TestBenchCmpSorting(t *testing.T) { - c := []BenchCmp{ - {&parse.Benchmark{Name: "BenchmarkMuchFaster", NsPerOp: 10, Ord: 3}, &parse.Benchmark{Name: "BenchmarkMuchFaster", NsPerOp: 1}}, - {&parse.Benchmark{Name: "BenchmarkSameB", NsPerOp: 5, Ord: 1}, &parse.Benchmark{Name: "BenchmarkSameB", NsPerOp: 5}}, - {&parse.Benchmark{Name: "BenchmarkSameA", NsPerOp: 5, Ord: 2}, &parse.Benchmark{Name: "BenchmarkSameA", NsPerOp: 5}}, - {&parse.Benchmark{Name: "BenchmarkSlower", NsPerOp: 10, Ord: 0}, &parse.Benchmark{Name: "BenchmarkSlower", NsPerOp: 11}}, - } - - // Test just one magnitude-based sort order; they are symmetric. - sort.Sort(ByDeltaNsPerOp(c)) - want := []string{"BenchmarkMuchFaster", "BenchmarkSlower", "BenchmarkSameA", "BenchmarkSameB"} - have := []string{c[0].Name(), c[1].Name(), c[2].Name(), c[3].Name()} - if !reflect.DeepEqual(want, have) { - t.Errorf("ByDeltaNsOp incorrect sorting: want %v have %v", want, have) - } - - sort.Sort(ByParseOrder(c)) - want = []string{"BenchmarkSlower", "BenchmarkSameB", "BenchmarkSameA", "BenchmarkMuchFaster"} - have = []string{c[0].Name(), c[1].Name(), c[2].Name(), c[3].Name()} - if !reflect.DeepEqual(want, have) { - t.Errorf("ByParseOrder incorrect sorting: want %v have %v", want, have) - } -} diff --git a/vendor/golang.org/x/tools/cmd/benchcmp/doc.go b/vendor/golang.org/x/tools/cmd/benchcmp/doc.go deleted file mode 100644 index f5c7a36..0000000 --- a/vendor/golang.org/x/tools/cmd/benchcmp/doc.go +++ /dev/null @@ -1,37 +0,0 @@ -// Copyright 2014 The Go Authors. All rights reserved. -// Use of this source code is governed by a BSD-style -// license that can be found in the LICENSE file. - -/* - -The benchcmp command displays performance changes between benchmarks. - -Benchcmp parses the output of two 'go test' benchmark runs, -correlates the results per benchmark, and displays the deltas. - -To measure the performance impact of a change, use 'go test' -to run benchmarks before and after the change: - - go test -run=NONE -bench=. ./... > old.txt - # make changes - go test -run=NONE -bench=. ./... > new.txt - -Then feed the benchmark results to benchcmp: - - benchcmp old.txt new.txt - -Benchcmp will summarize and display the performance changes, -in a format like this: - - $ benchcmp old.txt new.txt - benchmark old ns/op new ns/op delta - BenchmarkConcat 523 68.6 -86.88% - - benchmark old allocs new allocs delta - BenchmarkConcat 3 1 -66.67% - - benchmark old bytes new bytes delta - BenchmarkConcat 80 48 -40.00% - -*/ -package main // import "golang.org/x/tools/cmd/benchcmp" diff --git a/vendor/golang.org/x/tools/cmd/bundle/.gitignore b/vendor/golang.org/x/tools/cmd/bundle/.gitignore deleted file mode 100644 index caaeb09..0000000 --- a/vendor/golang.org/x/tools/cmd/bundle/.gitignore +++ /dev/null @@ -1 +0,0 @@ -testdata/out.got diff --git a/vendor/golang.org/x/tools/cmd/bundle/main.go b/vendor/golang.org/x/tools/cmd/bundle/main.go deleted file mode 100644 index 601da7f..0000000 --- a/vendor/golang.org/x/tools/cmd/bundle/main.go +++ /dev/null @@ -1,468 +0,0 @@ -// Copyright 2015 The Go Authors. All rights reserved. -// Use of this source code is governed by a BSD-style -// license that can be found in the LICENSE file. - -// Bundle creates a single-source-file version of a source package -// suitable for inclusion in a particular target package. -// -// Usage: -// -// bundle [-o file] [-dst path] [-pkg name] [-prefix p] [-import old=new] -// -// The src argument specifies the import path of the package to bundle. -// The bundling of a directory of source files into a single source file -// necessarily imposes a number of constraints. -// The package being bundled must not use cgo; must not use conditional -// file compilation, whether with build tags or system-specific file names -// like code_amd64.go; must not depend on any special comments, which -// may not be preserved; must not use any assembly sources; -// must not use renaming imports; and must not use reflection-based APIs -// that depend on the specific names of types or struct fields. -// -// By default, bundle writes the bundled code to standard output. -// If the -o argument is given, bundle writes to the named file -// and also includes a ``//go:generate'' comment giving the exact -// command line used, for regenerating the file with ``go generate.'' -// -// Bundle customizes its output for inclusion in a particular package, the destination package. -// By default bundle assumes the destination is the package in the current directory, -// but the destination package can be specified explicitly using the -dst option, -// which takes an import path as its argument. -// If the source package imports the destination package, bundle will remove -// those imports and rewrite any references to use direct references to the -// corresponding symbols. -// Bundle also must write a package declaration in the output and must -// choose a name to use in that declaration. -// If the -package option is given, bundle uses that name. -// Otherwise, if the -dst option is given, bundle uses the last -// element of the destination import path. -// Otherwise, by default bundle uses the package name found in the -// package sources in the current directory. -// -// To avoid collisions, bundle inserts a prefix at the beginning of -// every package-level const, func, type, and var identifier in src's code, -// updating references accordingly. The default prefix is the package name -// of the source package followed by an underscore. The -prefix option -// specifies an alternate prefix. -// -// Occasionally it is necessary to rewrite imports during the bundling -// process. The -import option, which may be repeated, specifies that -// an import of "old" should be rewritten to import "new" instead. -// -// Example -// -// Bundle archive/zip for inclusion in cmd/dist: -// -// cd $GOROOT/src/cmd/dist -// bundle -o zip.go archive/zip -// -// Bundle golang.org/x/net/http2 for inclusion in net/http, -// prefixing all identifiers by "http2" instead of "http2_", -// and rewriting the import "golang.org/x/net/http2/hpack" -// to "internal/golang.org/x/net/http2/hpack": -// -// cd $GOROOT/src/net/http -// bundle -o h2_bundle.go \ -// -prefix http2 \ -// -import golang.org/x/net/http2/hpack=internal/golang.org/x/net/http2/hpack \ -// golang.org/x/net/http2 -// -// Two ways to update the http2 bundle: -// -// go generate net/http -// -// cd $GOROOT/src/net/http -// go generate -// -// Update both bundles, restricting ``go generate'' to running bundle commands: -// -// go generate -run bundle cmd/dist net/http -// -package main - -import ( - "bytes" - "flag" - "fmt" - "go/ast" - "go/build" - "go/format" - "go/parser" - "go/printer" - "go/token" - "go/types" - "io/ioutil" - "log" - "os" - "path" - "strconv" - "strings" - - "golang.org/x/tools/go/loader" -) - -var ( - outputFile = flag.String("o", "", "write output to `file` (default standard output)") - dstPath = flag.String("dst", "", "set destination import `path` (default taken from current directory)") - pkgName = flag.String("pkg", "", "set destination package `name` (default taken from current directory)") - prefix = flag.String("prefix", "", "set bundled identifier prefix to `p` (default source package name + \"_\")") - underscore = flag.Bool("underscore", false, "rewrite golang.org to golang_org in imports; temporary workaround for golang.org/issue/16333") - - importMap = map[string]string{} -) - -func init() { - flag.Var(flagFunc(addImportMap), "import", "rewrite import using `map`, of form old=new (can be repeated)") -} - -func addImportMap(s string) { - if strings.Count(s, "=") != 1 { - log.Fatal("-import argument must be of the form old=new") - } - i := strings.Index(s, "=") - old, new := s[:i], s[i+1:] - if old == "" || new == "" { - log.Fatal("-import argument must be of the form old=new; old and new must be non-empty") - } - importMap[old] = new -} - -func usage() { - fmt.Fprintf(os.Stderr, "Usage: bundle [options] \n") - flag.PrintDefaults() -} - -func main() { - log.SetPrefix("bundle: ") - log.SetFlags(0) - - flag.Usage = usage - flag.Parse() - args := flag.Args() - if len(args) != 1 { - usage() - os.Exit(2) - } - - if *dstPath != "" { - if *pkgName == "" { - *pkgName = path.Base(*dstPath) - } - } else { - wd, _ := os.Getwd() - pkg, err := build.ImportDir(wd, 0) - if err != nil { - log.Fatalf("cannot find package in current directory: %v", err) - } - *dstPath = pkg.ImportPath - if *pkgName == "" { - *pkgName = pkg.Name - } - } - - code, err := bundle(args[0], *dstPath, *pkgName, *prefix) - if err != nil { - log.Fatal(err) - } - if *outputFile != "" { - err := ioutil.WriteFile(*outputFile, code, 0666) - if err != nil { - log.Fatal(err) - } - } else { - _, err := os.Stdout.Write(code) - if err != nil { - log.Fatal(err) - } - } -} - -// isStandardImportPath is copied from cmd/go in the standard library. -func isStandardImportPath(path string) bool { - i := strings.Index(path, "/") - if i < 0 { - i = len(path) - } - elem := path[:i] - return !strings.Contains(elem, ".") -} - -var ctxt = &build.Default - -func bundle(src, dst, dstpkg, prefix string) ([]byte, error) { - // Load the initial package. - conf := loader.Config{ParserMode: parser.ParseComments, Build: ctxt} - conf.TypeCheckFuncBodies = func(p string) bool { return p == src } - conf.Import(src) - - lprog, err := conf.Load() - if err != nil { - return nil, err - } - - // Because there was a single Import call and Load succeeded, - // InitialPackages is guaranteed to hold the sole requested package. - info := lprog.InitialPackages()[0] - if prefix == "" { - pkgName := info.Files[0].Name.Name - prefix = pkgName + "_" - } - - objsToUpdate := make(map[types.Object]bool) - var rename func(from types.Object) - rename = func(from types.Object) { - if !objsToUpdate[from] { - objsToUpdate[from] = true - - // Renaming a type that is used as an embedded field - // requires renaming the field too. e.g. - // type T int // if we rename this to U.. - // var s struct {T} - // print(s.T) // ...this must change too - if _, ok := from.(*types.TypeName); ok { - for id, obj := range info.Uses { - if obj == from { - if field := info.Defs[id]; field != nil { - rename(field) - } - } - } - } - } - } - - // Rename each package-level object. - scope := info.Pkg.Scope() - for _, name := range scope.Names() { - rename(scope.Lookup(name)) - } - - var out bytes.Buffer - - fmt.Fprintf(&out, "// Code generated by golang.org/x/tools/cmd/bundle. DO NOT EDIT.\n") - if *outputFile != "" { - fmt.Fprintf(&out, "//go:generate bundle %s\n", strings.Join(os.Args[1:], " ")) - } else { - fmt.Fprintf(&out, "// $ bundle %s\n", strings.Join(os.Args[1:], " ")) - } - fmt.Fprintf(&out, "\n") - - // Concatenate package comments from all files... - for _, f := range info.Files { - if doc := f.Doc.Text(); strings.TrimSpace(doc) != "" { - for _, line := range strings.Split(doc, "\n") { - fmt.Fprintf(&out, "// %s\n", line) - } - } - } - // ...but don't let them become the actual package comment. - fmt.Fprintln(&out) - - fmt.Fprintf(&out, "package %s\n\n", dstpkg) - - // BUG(adonovan,shurcooL): bundle may generate incorrect code - // due to shadowing between identifiers and imported package names. - // - // The generated code will either fail to compile or - // (unlikely) compile successfully but have different behavior - // than the original package. The risk of this happening is higher - // when the original package has renamed imports (they're typically - // renamed in order to resolve a shadow inside that particular .go file). - - // TODO(adonovan,shurcooL): - // - detect shadowing issues, and either return error or resolve them - // - preserve comments from the original import declarations. - - // pkgStd and pkgExt are sets of printed import specs. This is done - // to deduplicate instances of the same import name and path. - var pkgStd = make(map[string]bool) - var pkgExt = make(map[string]bool) - for _, f := range info.Files { - for _, imp := range f.Imports { - path, err := strconv.Unquote(imp.Path.Value) - if err != nil { - log.Fatalf("invalid import path string: %v", err) // Shouldn't happen here since conf.Load succeeded. - } - if path == dst { - continue - } - if newPath, ok := importMap[path]; ok { - path = newPath - } - - var name string - if imp.Name != nil { - name = imp.Name.Name - } - spec := fmt.Sprintf("%s %q", name, path) - if isStandardImportPath(path) { - pkgStd[spec] = true - } else { - if *underscore { - spec = strings.Replace(spec, "golang.org/", "golang_org/", 1) - } - pkgExt[spec] = true - } - } - } - - // Print a single declaration that imports all necessary packages. - fmt.Fprintln(&out, "import (") - for p := range pkgStd { - fmt.Fprintf(&out, "\t%s\n", p) - } - if len(pkgExt) > 0 { - fmt.Fprintln(&out) - } - for p := range pkgExt { - fmt.Fprintf(&out, "\t%s\n", p) - } - fmt.Fprint(&out, ")\n\n") - - // Modify and print each file. - for _, f := range info.Files { - // Update renamed identifiers. - for id, obj := range info.Defs { - if objsToUpdate[obj] { - id.Name = prefix + obj.Name() - } - } - for id, obj := range info.Uses { - if objsToUpdate[obj] { - id.Name = prefix + obj.Name() - } - } - - // For each qualified identifier that refers to the - // destination package, remove the qualifier. - // The "@@@." strings are removed in postprocessing. - ast.Inspect(f, func(n ast.Node) bool { - if sel, ok := n.(*ast.SelectorExpr); ok { - if id, ok := sel.X.(*ast.Ident); ok { - if obj, ok := info.Uses[id].(*types.PkgName); ok { - if obj.Imported().Path() == dst { - id.Name = "@@@" - } - } - } - } - return true - }) - - last := f.Package - if len(f.Imports) > 0 { - imp := f.Imports[len(f.Imports)-1] - last = imp.End() - if imp.Comment != nil { - if e := imp.Comment.End(); e > last { - last = e - } - } - } - - // Pretty-print package-level declarations. - // but no package or import declarations. - var buf bytes.Buffer - for _, decl := range f.Decls { - if decl, ok := decl.(*ast.GenDecl); ok && decl.Tok == token.IMPORT { - continue - } - - beg, end := sourceRange(decl) - - printComments(&out, f.Comments, last, beg) - - buf.Reset() - format.Node(&buf, lprog.Fset, &printer.CommentedNode{Node: decl, Comments: f.Comments}) - // Remove each "@@@." in the output. - // TODO(adonovan): not hygienic. - out.Write(bytes.Replace(buf.Bytes(), []byte("@@@."), nil, -1)) - - last = printSameLineComment(&out, f.Comments, lprog.Fset, end) - - out.WriteString("\n\n") - } - - printLastComments(&out, f.Comments, last) - } - - // Now format the entire thing. - result, err := format.Source(out.Bytes()) - if err != nil { - log.Fatalf("formatting failed: %v", err) - } - - return result, nil -} - -// sourceRange returns the [beg, end) interval of source code -// belonging to decl (incl. associated comments). -func sourceRange(decl ast.Decl) (beg, end token.Pos) { - beg = decl.Pos() - end = decl.End() - - var doc, com *ast.CommentGroup - - switch d := decl.(type) { - case *ast.GenDecl: - doc = d.Doc - if len(d.Specs) > 0 { - switch spec := d.Specs[len(d.Specs)-1].(type) { - case *ast.ValueSpec: - com = spec.Comment - case *ast.TypeSpec: - com = spec.Comment - } - } - case *ast.FuncDecl: - doc = d.Doc - } - - if doc != nil { - beg = doc.Pos() - } - if com != nil && com.End() > end { - end = com.End() - } - - return beg, end -} - -func printComments(out *bytes.Buffer, comments []*ast.CommentGroup, pos, end token.Pos) { - for _, cg := range comments { - if pos <= cg.Pos() && cg.Pos() < end { - for _, c := range cg.List { - fmt.Fprintln(out, c.Text) - } - fmt.Fprintln(out) - } - } -} - -const infinity = 1 << 30 - -func printLastComments(out *bytes.Buffer, comments []*ast.CommentGroup, pos token.Pos) { - printComments(out, comments, pos, infinity) -} - -func printSameLineComment(out *bytes.Buffer, comments []*ast.CommentGroup, fset *token.FileSet, pos token.Pos) token.Pos { - tf := fset.File(pos) - for _, cg := range comments { - if pos <= cg.Pos() && tf.Line(cg.Pos()) == tf.Line(pos) { - for _, c := range cg.List { - fmt.Fprintln(out, c.Text) - } - return cg.End() - } - } - return pos -} - -type flagFunc func(string) - -func (f flagFunc) Set(s string) error { - f(s) - return nil -} - -func (f flagFunc) String() string { return "" } diff --git a/vendor/golang.org/x/tools/cmd/bundle/main_test.go b/vendor/golang.org/x/tools/cmd/bundle/main_test.go deleted file mode 100644 index b96f7d9..0000000 --- a/vendor/golang.org/x/tools/cmd/bundle/main_test.go +++ /dev/null @@ -1,74 +0,0 @@ -// Copyright 2015 The Go Authors. All rights reserved. -// Use of this source code is governed by a BSD-style -// license that can be found in the LICENSE file. - -// +build go1.9 - -package main - -import ( - "bytes" - "io/ioutil" - "os" - "os/exec" - "runtime" - "testing" - - "golang.org/x/tools/go/buildutil" -) - -func TestBundle(t *testing.T) { - load := func(name string) string { - data, err := ioutil.ReadFile(name) - if err != nil { - t.Fatal(err) - } - return string(data) - } - - ctxt = buildutil.FakeContext(map[string]map[string]string{ - "initial": { - "a.go": load("testdata/src/initial/a.go"), - "b.go": load("testdata/src/initial/b.go"), - "c.go": load("testdata/src/initial/c.go"), - }, - "domain.name/importdecl": { - "p.go": load("testdata/src/domain.name/importdecl/p.go"), - }, - "fmt": { - "print.go": `package fmt; func Println(...interface{})`, - }, - }) - - os.Args = os.Args[:1] // avoid e.g. -test=short in the output - out, err := bundle("initial", "github.com/dest", "dest", "prefix") - if err != nil { - t.Fatal(err) - } - if got, want := string(out), load("testdata/out.golden"); got != want { - t.Errorf("-- got --\n%s\n-- want --\n%s\n-- diff --", got, want) - - if err := ioutil.WriteFile("testdata/out.got", out, 0644); err != nil { - t.Fatal(err) - } - t.Log(diff("testdata/out.golden", "testdata/out.got")) - } -} - -func diff(a, b string) string { - var cmd *exec.Cmd - switch runtime.GOOS { - case "plan9": - cmd = exec.Command("/bin/diff", "-c", a, b) - default: - cmd = exec.Command("/usr/bin/diff", "-u", a, b) - } - var out bytes.Buffer - cmd.Stdout = &out - cmd.Stderr = &out - cmd.Run() // nonzero exit is expected - if out.Len() == 0 { - return "(failed to compute diff)" - } - return out.String() -} diff --git a/vendor/golang.org/x/tools/cmd/bundle/testdata/out.golden b/vendor/golang.org/x/tools/cmd/bundle/testdata/out.golden deleted file mode 100644 index 5260fdd..0000000 --- a/vendor/golang.org/x/tools/cmd/bundle/testdata/out.golden +++ /dev/null @@ -1,62 +0,0 @@ -// Code generated by golang.org/x/tools/cmd/bundle. DO NOT EDIT. -// $ bundle - -// The package doc comment -// - -package dest - -import ( - "fmt" - . "fmt" - _ "fmt" - renamedfmt "fmt" - renamedfmt2 "fmt" - - "domain.name/importdecl" -) - -// init functions are not renamed -func init() { prefixfoo() } - -// Type S. -type prefixS struct { - prefixt - u int -} /* multi-line -comment -*/ - -// non-associated comment - -/* - non-associated comment2 -*/ - -// Function bar. -func prefixbar(s *prefixS) { - fmt.Println(s.prefixt, s.u) // comment inside function -} - -// file-end comment - -type prefixt int // type1 - -// const1 -const prefixc = 1 // const2 - -func prefixfoo() { - fmt.Println(importdecl.F()) -} - -// zinit -const ( - prefixz1 = iota // z1 - prefixz2 // z2 -) // zend - -func prefixbaz() { - renamedfmt.Println() - renamedfmt2.Println() - Println() -} diff --git a/vendor/golang.org/x/tools/cmd/bundle/testdata/src/domain.name/importdecl/p.go b/vendor/golang.org/x/tools/cmd/bundle/testdata/src/domain.name/importdecl/p.go deleted file mode 100644 index 36dfd15..0000000 --- a/vendor/golang.org/x/tools/cmd/bundle/testdata/src/domain.name/importdecl/p.go +++ /dev/null @@ -1,3 +0,0 @@ -package importdecl - -func F() int { return 1 } diff --git a/vendor/golang.org/x/tools/cmd/bundle/testdata/src/initial/a.go b/vendor/golang.org/x/tools/cmd/bundle/testdata/src/initial/a.go deleted file mode 100644 index ded6c64..0000000 --- a/vendor/golang.org/x/tools/cmd/bundle/testdata/src/initial/a.go +++ /dev/null @@ -1,27 +0,0 @@ -package initial - -import "fmt" // this comment should not be visible - -// init functions are not renamed -func init() { foo() } - -// Type S. -type S struct { - t - u int -} /* multi-line -comment -*/ - -// non-associated comment - -/* - non-associated comment2 -*/ - -// Function bar. -func bar(s *S) { - fmt.Println(s.t, s.u) // comment inside function -} - -// file-end comment diff --git a/vendor/golang.org/x/tools/cmd/bundle/testdata/src/initial/b.go b/vendor/golang.org/x/tools/cmd/bundle/testdata/src/initial/b.go deleted file mode 100644 index 31d5cab..0000000 --- a/vendor/golang.org/x/tools/cmd/bundle/testdata/src/initial/b.go +++ /dev/null @@ -1,23 +0,0 @@ -// The package doc comment -package initial - -import ( - "fmt" - - "domain.name/importdecl" -) - -type t int // type1 - -// const1 -const c = 1 // const2 - -func foo() { - fmt.Println(importdecl.F()) -} - -// zinit -const ( - z1 = iota // z1 - z2 // z2 -) // zend diff --git a/vendor/golang.org/x/tools/cmd/bundle/testdata/src/initial/c.go b/vendor/golang.org/x/tools/cmd/bundle/testdata/src/initial/c.go deleted file mode 100644 index 6a9cbc6..0000000 --- a/vendor/golang.org/x/tools/cmd/bundle/testdata/src/initial/c.go +++ /dev/null @@ -1,12 +0,0 @@ -package initial - -import _ "fmt" -import renamedfmt "fmt" -import renamedfmt2 "fmt" -import . "fmt" - -func baz() { - renamedfmt.Println() - renamedfmt2.Println() - Println() -} diff --git a/vendor/golang.org/x/tools/cmd/callgraph/main.go b/vendor/golang.org/x/tools/cmd/callgraph/main.go deleted file mode 100644 index 8ef4597..0000000 --- a/vendor/golang.org/x/tools/cmd/callgraph/main.go +++ /dev/null @@ -1,361 +0,0 @@ -// Copyright 2014 The Go Authors. All rights reserved. -// Use of this source code is governed by a BSD-style -// license that can be found in the LICENSE file. - -// callgraph: a tool for reporting the call graph of a Go program. -// See Usage for details, or run with -help. -package main // import "golang.org/x/tools/cmd/callgraph" - -// TODO(adonovan): -// -// Features: -// - restrict graph to a single package -// - output -// - functions reachable from root (use digraph tool?) -// - unreachable functions (use digraph tool?) -// - dynamic (runtime) types -// - indexed output (numbered nodes) -// - JSON output -// - additional template fields: -// callee file/line/col - -import ( - "bufio" - "bytes" - "flag" - "fmt" - "go/build" - "go/token" - "io" - "log" - "os" - "runtime" - "text/template" - - "golang.org/x/tools/go/buildutil" - "golang.org/x/tools/go/callgraph" - "golang.org/x/tools/go/callgraph/cha" - "golang.org/x/tools/go/callgraph/rta" - "golang.org/x/tools/go/callgraph/static" - "golang.org/x/tools/go/loader" - "golang.org/x/tools/go/pointer" - "golang.org/x/tools/go/ssa" - "golang.org/x/tools/go/ssa/ssautil" -) - -// flags -var ( - algoFlag = flag.String("algo", "rta", - `Call graph construction algorithm (static, cha, rta, pta)`) - - testFlag = flag.Bool("test", false, - "Loads test code (*_test.go) for imported packages") - - formatFlag = flag.String("format", - "{{.Caller}}\t--{{.Dynamic}}-{{.Line}}:{{.Column}}-->\t{{.Callee}}", - "A template expression specifying how to format an edge") - - ptalogFlag = flag.String("ptalog", "", - "Location of the points-to analysis log file, or empty to disable logging.") -) - -func init() { - flag.Var((*buildutil.TagsFlag)(&build.Default.BuildTags), "tags", buildutil.TagsFlagDoc) -} - -const Usage = `callgraph: display the the call graph of a Go program. - -Usage: - - callgraph [-algo=static|cha|rta|pta] [-test] [-format=...] ... - -Flags: - --algo Specifies the call-graph construction algorithm, one of: - - static static calls only (unsound) - cha Class Hierarchy Analysis - rta Rapid Type Analysis - pta inclusion-based Points-To Analysis - - The algorithms are ordered by increasing precision in their - treatment of dynamic calls (and thus also computational cost). - RTA and PTA require a whole program (main or test), and - include only functions reachable from main. - --test Include the package's tests in the analysis. - --format Specifies the format in which each call graph edge is displayed. - One of: - - digraph output suitable for input to - golang.org/x/tools/cmd/digraph. - graphviz output in AT&T GraphViz (.dot) format. - - All other values are interpreted using text/template syntax. - The default value is: - - {{.Caller}}\t--{{.Dynamic}}-{{.Line}}:{{.Column}}-->\t{{.Callee}} - - The structure passed to the template is (effectively): - - type Edge struct { - Caller *ssa.Function // calling function - Callee *ssa.Function // called function - - // Call site: - Filename string // containing file - Offset int // offset within file of '(' - Line int // line number - Column int // column number of call - Dynamic string // "static" or "dynamic" - Description string // e.g. "static method call" - } - - Caller and Callee are *ssa.Function values, which print as - "(*sync/atomic.Mutex).Lock", but other attributes may be - derived from them, e.g. Caller.Pkg.Pkg.Path yields the - import path of the enclosing package. Consult the go/ssa - API documentation for details. - -` + loader.FromArgsUsage + ` - -Examples: - - Show the call graph of the trivial web server application: - - callgraph -format digraph $GOROOT/src/net/http/triv.go - - Same, but show only the packages of each function: - - callgraph -format '{{.Caller.Pkg.Pkg.Path}} -> {{.Callee.Pkg.Pkg.Path}}' \ - $GOROOT/src/net/http/triv.go | sort | uniq - - Show functions that make dynamic calls into the 'fmt' test package, - using the pointer analysis algorithm: - - callgraph -format='{{.Caller}} -{{.Dynamic}}-> {{.Callee}}' -test -algo=pta fmt | - sed -ne 's/-dynamic-/--/p' | - sed -ne 's/-->.*fmt_test.*$//p' | sort | uniq - - Show all functions directly called by the callgraph tool's main function: - - callgraph -format=digraph golang.org/x/tools/cmd/callgraph | - digraph succs golang.org/x/tools/cmd/callgraph.main -` - -func init() { - // If $GOMAXPROCS isn't set, use the full capacity of the machine. - // For small machines, use at least 4 threads. - if os.Getenv("GOMAXPROCS") == "" { - n := runtime.NumCPU() - if n < 4 { - n = 4 - } - runtime.GOMAXPROCS(n) - } -} - -func main() { - flag.Parse() - if err := doCallgraph(&build.Default, *algoFlag, *formatFlag, *testFlag, flag.Args()); err != nil { - fmt.Fprintf(os.Stderr, "callgraph: %s\n", err) - os.Exit(1) - } -} - -var stdout io.Writer = os.Stdout - -func doCallgraph(ctxt *build.Context, algo, format string, tests bool, args []string) error { - conf := loader.Config{Build: ctxt} - - if len(args) == 0 { - fmt.Fprintln(os.Stderr, Usage) - return nil - } - - // Use the initial packages from the command line. - _, err := conf.FromArgs(args, tests) - if err != nil { - return err - } - - // Load, parse and type-check the whole program. - iprog, err := conf.Load() - if err != nil { - return err - } - - // Create and build SSA-form program representation. - prog := ssautil.CreateProgram(iprog, 0) - prog.Build() - - // -- call graph construction ------------------------------------------ - - var cg *callgraph.Graph - - switch algo { - case "static": - cg = static.CallGraph(prog) - - case "cha": - cg = cha.CallGraph(prog) - - case "pta": - // Set up points-to analysis log file. - var ptalog io.Writer - if *ptalogFlag != "" { - if f, err := os.Create(*ptalogFlag); err != nil { - log.Fatalf("Failed to create PTA log file: %s", err) - } else { - buf := bufio.NewWriter(f) - ptalog = buf - defer func() { - if err := buf.Flush(); err != nil { - log.Printf("flush: %s", err) - } - if err := f.Close(); err != nil { - log.Printf("close: %s", err) - } - }() - } - } - - mains, err := mainPackages(prog, tests) - if err != nil { - return err - } - config := &pointer.Config{ - Mains: mains, - BuildCallGraph: true, - Log: ptalog, - } - ptares, err := pointer.Analyze(config) - if err != nil { - return err // internal error in pointer analysis - } - cg = ptares.CallGraph - - case "rta": - mains, err := mainPackages(prog, tests) - if err != nil { - return err - } - var roots []*ssa.Function - for _, main := range mains { - roots = append(roots, main.Func("init"), main.Func("main")) - } - rtares := rta.Analyze(roots, true) - cg = rtares.CallGraph - - // NB: RTA gives us Reachable and RuntimeTypes too. - - default: - return fmt.Errorf("unknown algorithm: %s", algo) - } - - cg.DeleteSyntheticNodes() - - // -- output------------------------------------------------------------ - - var before, after string - - // Pre-canned formats. - switch format { - case "digraph": - format = `{{printf "%q %q" .Caller .Callee}}` - - case "graphviz": - before = "digraph callgraph {\n" - after = "}\n" - format = ` {{printf "%q" .Caller}} -> {{printf "%q" .Callee}}` - } - - tmpl, err := template.New("-format").Parse(format) - if err != nil { - return fmt.Errorf("invalid -format template: %v", err) - } - - // Allocate these once, outside the traversal. - var buf bytes.Buffer - data := Edge{fset: prog.Fset} - - fmt.Fprint(stdout, before) - if err := callgraph.GraphVisitEdges(cg, func(edge *callgraph.Edge) error { - data.position.Offset = -1 - data.edge = edge - data.Caller = edge.Caller.Func - data.Callee = edge.Callee.Func - - buf.Reset() - if err := tmpl.Execute(&buf, &data); err != nil { - return err - } - stdout.Write(buf.Bytes()) - if len := buf.Len(); len == 0 || buf.Bytes()[len-1] != '\n' { - fmt.Fprintln(stdout) - } - return nil - }); err != nil { - return err - } - fmt.Fprint(stdout, after) - return nil -} - -// mainPackages returns the main packages to analyze. -// Each resulting package is named "main" and has a main function. -func mainPackages(prog *ssa.Program, tests bool) ([]*ssa.Package, error) { - pkgs := prog.AllPackages() // TODO(adonovan): use only initial packages - - // If tests, create a "testmain" package for each test. - var mains []*ssa.Package - if tests { - for _, pkg := range pkgs { - if main := prog.CreateTestMainPackage(pkg); main != nil { - mains = append(mains, main) - } - } - if mains == nil { - return nil, fmt.Errorf("no tests") - } - return mains, nil - } - - // Otherwise, use the main packages. - mains = append(mains, ssautil.MainPackages(pkgs)...) - if len(mains) == 0 { - return nil, fmt.Errorf("no main packages") - } - return mains, nil -} - -type Edge struct { - Caller *ssa.Function - Callee *ssa.Function - - edge *callgraph.Edge - fset *token.FileSet - position token.Position // initialized lazily -} - -func (e *Edge) pos() *token.Position { - if e.position.Offset == -1 { - e.position = e.fset.Position(e.edge.Pos()) // called lazily - } - return &e.position -} - -func (e *Edge) Filename() string { return e.pos().Filename } -func (e *Edge) Column() int { return e.pos().Column } -func (e *Edge) Line() int { return e.pos().Line } -func (e *Edge) Offset() int { return e.pos().Offset } - -func (e *Edge) Dynamic() string { - if e.edge.Site != nil && e.edge.Site.Common().StaticCallee() == nil { - return "dynamic" - } - return "static" -} - -func (e *Edge) Description() string { return e.edge.Description() } diff --git a/vendor/golang.org/x/tools/cmd/callgraph/main_test.go b/vendor/golang.org/x/tools/cmd/callgraph/main_test.go deleted file mode 100644 index c42f56d..0000000 --- a/vendor/golang.org/x/tools/cmd/callgraph/main_test.go +++ /dev/null @@ -1,81 +0,0 @@ -// Copyright 2014 The Go Authors. All rights reserved. -// Use of this source code is governed by a BSD-style -// license that can be found in the LICENSE file. - -// No testdata on Android. - -// +build !android - -package main - -import ( - "bytes" - "fmt" - "go/build" - "reflect" - "sort" - "strings" - "testing" -) - -func TestCallgraph(t *testing.T) { - ctxt := build.Default // copy - ctxt.GOPATH = "testdata" - - const format = "{{.Caller}} --> {{.Callee}}" - - for _, test := range []struct { - algo, format string - tests bool - want []string - }{ - {"rta", format, false, []string{ - // rta imprecisely shows cross product of {main,main2} x {C,D} - `pkg.main --> (pkg.C).f`, - `pkg.main --> (pkg.D).f`, - `pkg.main --> pkg.main2`, - `pkg.main2 --> (pkg.C).f`, - `pkg.main2 --> (pkg.D).f`, - }}, - {"pta", format, false, []string{ - // pta distinguishes main->C, main2->D. Also has a root node. - ` --> pkg.init`, - ` --> pkg.main`, - `pkg.main --> (pkg.C).f`, - `pkg.main --> pkg.main2`, - `pkg.main2 --> (pkg.D).f`, - }}, - // tests: main is not called. - {"rta", format, true, []string{ - `pkg$testmain.init --> pkg.init`, - `pkg.Example --> (pkg.C).f`, - }}, - {"pta", format, true, []string{ - ` --> pkg$testmain.init`, - ` --> pkg.Example`, - `pkg$testmain.init --> pkg.init`, - `pkg.Example --> (pkg.C).f`, - }}, - } { - stdout = new(bytes.Buffer) - if err := doCallgraph(&ctxt, test.algo, test.format, test.tests, []string{"pkg"}); err != nil { - t.Error(err) - continue - } - - got := sortedLines(fmt.Sprint(stdout)) - if !reflect.DeepEqual(got, test.want) { - t.Errorf("callgraph(%q, %q, %t):\ngot:\n%s\nwant:\n%s", - test.algo, test.format, test.tests, - strings.Join(got, "\n"), - strings.Join(test.want, "\n")) - } - } -} - -func sortedLines(s string) []string { - s = strings.TrimSpace(s) - lines := strings.Split(s, "\n") - sort.Strings(lines) - return lines -} diff --git a/vendor/golang.org/x/tools/cmd/callgraph/testdata/src/pkg/pkg.go b/vendor/golang.org/x/tools/cmd/callgraph/testdata/src/pkg/pkg.go deleted file mode 100644 index b81c97f..0000000 --- a/vendor/golang.org/x/tools/cmd/callgraph/testdata/src/pkg/pkg.go +++ /dev/null @@ -1,25 +0,0 @@ -package main - -type I interface { - f() -} - -type C int - -func (C) f() {} - -type D int - -func (D) f() {} - -func main() { - var i I = C(0) - i.f() // dynamic call - - main2() -} - -func main2() { - var i I = D(0) - i.f() // dynamic call -} diff --git a/vendor/golang.org/x/tools/cmd/callgraph/testdata/src/pkg/pkg_test.go b/vendor/golang.org/x/tools/cmd/callgraph/testdata/src/pkg/pkg_test.go deleted file mode 100644 index d624757..0000000 --- a/vendor/golang.org/x/tools/cmd/callgraph/testdata/src/pkg/pkg_test.go +++ /dev/null @@ -1,7 +0,0 @@ -package main - -// Don't import "testing", it adds a lot of callgraph edges. - -func Example() { - C(0).f() -} diff --git a/vendor/golang.org/x/tools/cmd/compilebench/main.go b/vendor/golang.org/x/tools/cmd/compilebench/main.go deleted file mode 100644 index d2cd70b..0000000 --- a/vendor/golang.org/x/tools/cmd/compilebench/main.go +++ /dev/null @@ -1,360 +0,0 @@ -// Copyright 2015 The Go Authors. All rights reserved. -// Use of this source code is governed by a BSD-style -// license that can be found in the LICENSE file. - -// Compilebench benchmarks the speed of the Go compiler. -// -// Usage: -// -// compilebench [options] -// -// It times the compilation of various packages and prints results in -// the format used by package testing (and expected by golang.org/x/perf/cmd/benchstat). -// -// The options are: -// -// -alloc -// Report allocations. -// -// -compile exe -// Use exe as the path to the cmd/compile binary. -// -// -compileflags 'list' -// Pass the space-separated list of flags to the compilation. -// -// -count n -// Run each benchmark n times (default 1). -// -// -cpuprofile file -// Write a CPU profile of the compiler to file. -// -// -memprofile file -// Write a memory profile of the compiler to file. -// -// -memprofilerate rate -// Set runtime.MemProfileRate during compilation. -// -// -obj -// Report object file statistics. -// -// -pkg -// Benchmark compiling a single package. -// -// -run regexp -// Only run benchmarks with names matching regexp. -// -// Although -cpuprofile and -memprofile are intended to write a -// combined profile for all the executed benchmarks to file, -// today they write only the profile for the last benchmark executed. -// -// The default memory profiling rate is one profile sample per 512 kB -// allocated (see ``go doc runtime.MemProfileRate''). -// Lowering the rate (for example, -memprofilerate 64000) produces -// a more fine-grained and therefore accurate profile, but it also incurs -// execution cost. For benchmark comparisons, never use timings -// obtained with a low -memprofilerate option. -// -// Example -// -// Assuming the base version of the compiler has been saved with -// ``toolstash save,'' this sequence compares the old and new compiler: -// -// compilebench -count 10 -compile $(toolstash -n compile) >old.txt -// compilebench -count 10 >new.txt -// benchstat old.txt new.txt -// -package main - -import ( - "bytes" - "flag" - "fmt" - "go/build" - "io/ioutil" - "log" - "os" - "os/exec" - "path/filepath" - "regexp" - "strconv" - "strings" - "time" -) - -var ( - goroot string - compiler string - runRE *regexp.Regexp - is6g bool -) - -var ( - flagGoCmd = flag.String("go", "go", "path to \"go\" command") - flagAlloc = flag.Bool("alloc", false, "report allocations") - flagObj = flag.Bool("obj", false, "report object file stats") - flagCompiler = flag.String("compile", "", "use `exe` as the cmd/compile binary") - flagCompilerFlags = flag.String("compileflags", "", "additional `flags` to pass to compile") - flagRun = flag.String("run", "", "run benchmarks matching `regexp`") - flagCount = flag.Int("count", 1, "run benchmarks `n` times") - flagCpuprofile = flag.String("cpuprofile", "", "write CPU profile to `file`") - flagMemprofile = flag.String("memprofile", "", "write memory profile to `file`") - flagMemprofilerate = flag.Int64("memprofilerate", -1, "set memory profile `rate`") - flagPackage = flag.String("pkg", "", "if set, benchmark the package at path `pkg`") - flagShort = flag.Bool("short", false, "skip long-running benchmarks") -) - -var tests = []struct { - name string - dir string - long bool -}{ - {"BenchmarkTemplate", "html/template", false}, - {"BenchmarkUnicode", "unicode", false}, - {"BenchmarkGoTypes", "go/types", false}, - {"BenchmarkCompiler", "cmd/compile/internal/gc", false}, - {"BenchmarkSSA", "cmd/compile/internal/ssa", false}, - {"BenchmarkFlate", "compress/flate", false}, - {"BenchmarkGoParser", "go/parser", false}, - {"BenchmarkReflect", "reflect", false}, - {"BenchmarkTar", "archive/tar", false}, - {"BenchmarkXML", "encoding/xml", false}, - {"BenchmarkStdCmd", "", true}, - {"BenchmarkHelloSize", "", false}, - {"BenchmarkCmdGoSize", "", true}, -} - -func usage() { - fmt.Fprintf(os.Stderr, "usage: compilebench [options]\n") - fmt.Fprintf(os.Stderr, "options:\n") - flag.PrintDefaults() - os.Exit(2) -} - -func main() { - log.SetFlags(0) - log.SetPrefix("compilebench: ") - flag.Usage = usage - flag.Parse() - if flag.NArg() != 0 { - usage() - } - - s, err := exec.Command(*flagGoCmd, "env", "GOROOT").CombinedOutput() - if err != nil { - log.Fatalf("%s env GOROOT: %v", *flagGoCmd, err) - } - goroot = strings.TrimSpace(string(s)) - - compiler = *flagCompiler - if compiler == "" { - out, err := exec.Command(*flagGoCmd, "tool", "-n", "compile").CombinedOutput() - if err != nil { - out, err = exec.Command(*flagGoCmd, "tool", "-n", "6g").CombinedOutput() - is6g = true - if err != nil { - out, err = exec.Command(*flagGoCmd, "tool", "-n", "compile").CombinedOutput() - log.Fatalf("go tool -n compiler: %v\n%s", err, out) - } - } - compiler = strings.TrimSpace(string(out)) - } - - if *flagRun != "" { - r, err := regexp.Compile(*flagRun) - if err != nil { - log.Fatalf("invalid -run argument: %v", err) - } - runRE = r - } - - for i := 0; i < *flagCount; i++ { - if *flagPackage != "" { - runBuild("BenchmarkPkg", *flagPackage, i) - continue - } - for _, tt := range tests { - if tt.long && *flagShort { - continue - } - if runRE == nil || runRE.MatchString(tt.name) { - runBuild(tt.name, tt.dir, i) - } - } - } -} - -func runCmd(name string, cmd *exec.Cmd) { - start := time.Now() - out, err := cmd.CombinedOutput() - if err != nil { - log.Printf("%v: %v\n%s", name, err, out) - return - } - fmt.Printf("%s 1 %d ns/op\n", name, time.Since(start).Nanoseconds()) -} - -func runStdCmd() { - args := []string{"build", "-a"} - if *flagCompilerFlags != "" { - args = append(args, "-gcflags", *flagCompilerFlags) - } - args = append(args, "std", "cmd") - cmd := exec.Command(*flagGoCmd, args...) - cmd.Dir = filepath.Join(goroot, "src") - runCmd("BenchmarkStdCmd", cmd) -} - -// path is either a path to a file ("$GOROOT/test/helloworld.go") or a package path ("cmd/go"). -func runSize(name, path string) { - cmd := exec.Command(*flagGoCmd, "build", "-o", "_compilebenchout_", path) - cmd.Stdout = os.Stderr - cmd.Stderr = os.Stderr - if err := cmd.Run(); err != nil { - log.Print(err) - return - } - defer os.Remove("_compilebenchout_") - info, err := os.Stat("_compilebenchout_") - if err != nil { - log.Print(err) - return - } - out, err := exec.Command("size", "_compilebenchout_").CombinedOutput() - if err != nil { - log.Printf("size: %v\n%s", err, out) - return - } - lines := strings.Split(string(out), "\n") - if len(lines) < 2 { - log.Printf("not enough output from size: %s", out) - return - } - f := strings.Fields(lines[1]) - if strings.HasPrefix(lines[0], "__TEXT") && len(f) >= 2 { // OS X - fmt.Printf("%s 1 %s text-bytes %s data-bytes %v exe-bytes\n", name, f[0], f[1], info.Size()) - } else if strings.Contains(lines[0], "bss") && len(f) >= 3 { - fmt.Printf("%s 1 %s text-bytes %s data-bytes %s bss-bytes %v exe-bytes\n", name, f[0], f[1], f[2], info.Size()) - } -} - -func runBuild(name, dir string, count int) { - switch name { - case "BenchmarkStdCmd": - runStdCmd() - return - case "BenchmarkCmdGoSize": - runSize("BenchmarkCmdGoSize", "cmd/go") - return - case "BenchmarkHelloSize": - runSize("BenchmarkHelloSize", filepath.Join(goroot, "test/helloworld.go")) - return - } - - pkg, err := build.Import(dir, ".", 0) - if err != nil { - log.Print(err) - return - } - args := []string{"-o", "_compilebench_.o"} - if is6g { - *flagMemprofilerate = -1 - *flagAlloc = false - *flagCpuprofile = "" - *flagMemprofile = "" - } - if *flagMemprofilerate >= 0 { - args = append(args, "-memprofilerate", fmt.Sprint(*flagMemprofilerate)) - } - args = append(args, strings.Fields(*flagCompilerFlags)...) - if *flagAlloc || *flagCpuprofile != "" || *flagMemprofile != "" { - if *flagAlloc || *flagMemprofile != "" { - args = append(args, "-memprofile", "_compilebench_.memprof") - } - if *flagCpuprofile != "" { - args = append(args, "-cpuprofile", "_compilebench_.cpuprof") - } - } - args = append(args, pkg.GoFiles...) - cmd := exec.Command(compiler, args...) - cmd.Dir = pkg.Dir - cmd.Stdout = os.Stderr - cmd.Stderr = os.Stderr - start := time.Now() - err = cmd.Run() - if err != nil { - log.Printf("%v: %v", name, err) - return - } - end := time.Now() - - var allocs, allocbytes int64 - if *flagAlloc || *flagMemprofile != "" { - out, err := ioutil.ReadFile(pkg.Dir + "/_compilebench_.memprof") - if err != nil { - log.Print("cannot find memory profile after compilation") - } - for _, line := range strings.Split(string(out), "\n") { - f := strings.Fields(line) - if len(f) < 4 || f[0] != "#" || f[2] != "=" { - continue - } - val, err := strconv.ParseInt(f[3], 0, 64) - if err != nil { - continue - } - switch f[1] { - case "TotalAlloc": - allocbytes = val - case "Mallocs": - allocs = val - } - } - - if *flagMemprofile != "" { - if err := ioutil.WriteFile(*flagMemprofile, out, 0666); err != nil { - log.Print(err) - } - } - os.Remove(pkg.Dir + "/_compilebench_.memprof") - } - - if *flagCpuprofile != "" { - out, err := ioutil.ReadFile(pkg.Dir + "/_compilebench_.cpuprof") - if err != nil { - log.Print(err) - } - outpath := *flagCpuprofile - if *flagCount != 1 { - outpath = fmt.Sprintf("%s_%d", outpath, count) - } - if err := ioutil.WriteFile(outpath, out, 0666); err != nil { - log.Print(err) - } - os.Remove(pkg.Dir + "/_compilebench_.cpuprof") - } - - wallns := end.Sub(start).Nanoseconds() - userns := cmd.ProcessState.UserTime().Nanoseconds() - - fmt.Printf("%s 1 %d ns/op %d user-ns/op", name, wallns, userns) - if *flagAlloc { - fmt.Printf(" %d B/op %d allocs/op", allocbytes, allocs) - } - - opath := pkg.Dir + "/_compilebench_.o" - if *flagObj { - // TODO(josharian): object files are big; just read enough to find what we seek. - data, err := ioutil.ReadFile(opath) - if err != nil { - log.Print(err) - } - // Find start of export data. - i := bytes.Index(data, []byte("\n$$B\n")) + len("\n$$B\n") - // Count bytes to end of export data. - nexport := bytes.Index(data[i:], []byte("\n$$\n")) - fmt.Printf(" %d object-bytes %d export-bytes", len(data), nexport) - } - fmt.Println() - - os.Remove(opath) -} diff --git a/vendor/golang.org/x/tools/cmd/cover/README b/vendor/golang.org/x/tools/cmd/cover/README deleted file mode 100644 index ff9523d..0000000 --- a/vendor/golang.org/x/tools/cmd/cover/README +++ /dev/null @@ -1,2 +0,0 @@ -NOTE: For Go releases 1.5 and later, this tool lives in the -standard repository. The code here is not maintained. diff --git a/vendor/golang.org/x/tools/cmd/cover/cover.go b/vendor/golang.org/x/tools/cmd/cover/cover.go deleted file mode 100644 index e093364..0000000 --- a/vendor/golang.org/x/tools/cmd/cover/cover.go +++ /dev/null @@ -1,722 +0,0 @@ -// Copyright 2013 The Go Authors. All rights reserved. -// Use of this source code is governed by a BSD-style -// license that can be found in the LICENSE file. - -package main - -import ( - "bytes" - "flag" - "fmt" - "go/ast" - "go/parser" - "go/printer" - "go/token" - "io" - "io/ioutil" - "log" - "os" - "path/filepath" - "sort" - "strconv" - "strings" -) - -const usageMessage = "" + - `Usage of 'go tool cover': -Given a coverage profile produced by 'go test': - go test -coverprofile=c.out - -Open a web browser displaying annotated source code: - go tool cover -html=c.out - -Write out an HTML file instead of launching a web browser: - go tool cover -html=c.out -o coverage.html - -Display coverage percentages to stdout for each function: - go tool cover -func=c.out - -Finally, to generate modified source code with coverage annotations -(what go test -cover does): - go tool cover -mode=set -var=CoverageVariableName program.go -` - -func usage() { - fmt.Fprintln(os.Stderr, usageMessage) - fmt.Fprintln(os.Stderr, "Flags:") - flag.PrintDefaults() - fmt.Fprintln(os.Stderr, "\n Only one of -html, -func, or -mode may be set.") - os.Exit(2) -} - -var ( - mode = flag.String("mode", "", "coverage mode: set, count, atomic") - varVar = flag.String("var", "GoCover", "name of coverage variable to generate") - output = flag.String("o", "", "file for output; default: stdout") - htmlOut = flag.String("html", "", "generate HTML representation of coverage profile") - funcOut = flag.String("func", "", "output coverage profile information for each function") -) - -var profile string // The profile to read; the value of -html or -func - -var counterStmt func(*File, ast.Expr) ast.Stmt - -const ( - atomicPackagePath = "sync/atomic" - atomicPackageName = "_cover_atomic_" -) - -func main() { - flag.Usage = usage - flag.Parse() - - // Usage information when no arguments. - if flag.NFlag() == 0 && flag.NArg() == 0 { - flag.Usage() - } - - err := parseFlags() - if err != nil { - fmt.Fprintln(os.Stderr, err) - fmt.Fprintln(os.Stderr, `For usage information, run "go tool cover -help"`) - os.Exit(2) - } - - // Generate coverage-annotated source. - if *mode != "" { - annotate(flag.Arg(0)) - return - } - - // Output HTML or function coverage information. - if *htmlOut != "" { - err = htmlOutput(profile, *output) - } else { - err = funcOutput(profile, *output) - } - - if err != nil { - fmt.Fprintf(os.Stderr, "cover: %v\n", err) - os.Exit(2) - } -} - -// parseFlags sets the profile and counterStmt globals and performs validations. -func parseFlags() error { - profile = *htmlOut - if *funcOut != "" { - if profile != "" { - return fmt.Errorf("too many options") - } - profile = *funcOut - } - - // Must either display a profile or rewrite Go source. - if (profile == "") == (*mode == "") { - return fmt.Errorf("too many options") - } - - if *mode != "" { - switch *mode { - case "set": - counterStmt = setCounterStmt - case "count": - counterStmt = incCounterStmt - case "atomic": - counterStmt = atomicCounterStmt - default: - return fmt.Errorf("unknown -mode %v", *mode) - } - - if flag.NArg() == 0 { - return fmt.Errorf("missing source file") - } else if flag.NArg() == 1 { - return nil - } - } else if flag.NArg() == 0 { - return nil - } - return fmt.Errorf("too many arguments") -} - -// Block represents the information about a basic block to be recorded in the analysis. -// Note: Our definition of basic block is based on control structures; we don't break -// apart && and ||. We could but it doesn't seem important enough to bother. -type Block struct { - startByte token.Pos - endByte token.Pos - numStmt int -} - -// File is a wrapper for the state of a file used in the parser. -// The basic parse tree walker is a method of this type. -type File struct { - fset *token.FileSet - name string // Name of file. - astFile *ast.File - blocks []Block - atomicPkg string // Package name for "sync/atomic" in this file. -} - -// Visit implements the ast.Visitor interface. -func (f *File) Visit(node ast.Node) ast.Visitor { - switch n := node.(type) { - case *ast.BlockStmt: - // If it's a switch or select, the body is a list of case clauses; don't tag the block itself. - if len(n.List) > 0 { - switch n.List[0].(type) { - case *ast.CaseClause: // switch - for _, n := range n.List { - clause := n.(*ast.CaseClause) - clause.Body = f.addCounters(clause.Pos(), clause.End(), clause.Body, false) - } - return f - case *ast.CommClause: // select - for _, n := range n.List { - clause := n.(*ast.CommClause) - clause.Body = f.addCounters(clause.Pos(), clause.End(), clause.Body, false) - } - return f - } - } - n.List = f.addCounters(n.Lbrace, n.Rbrace+1, n.List, true) // +1 to step past closing brace. - case *ast.IfStmt: - ast.Walk(f, n.Body) - if n.Else == nil { - return nil - } - // The elses are special, because if we have - // if x { - // } else if y { - // } - // we want to cover the "if y". To do this, we need a place to drop the counter, - // so we add a hidden block: - // if x { - // } else { - // if y { - // } - // } - switch stmt := n.Else.(type) { - case *ast.IfStmt: - block := &ast.BlockStmt{ - Lbrace: n.Body.End(), // Start at end of the "if" block so the covered part looks like it starts at the "else". - List: []ast.Stmt{stmt}, - Rbrace: stmt.End(), - } - n.Else = block - case *ast.BlockStmt: - stmt.Lbrace = n.Body.End() // Start at end of the "if" block so the covered part looks like it starts at the "else". - default: - panic("unexpected node type in if") - } - ast.Walk(f, n.Else) - return nil - case *ast.SelectStmt: - // Don't annotate an empty select - creates a syntax error. - if n.Body == nil || len(n.Body.List) == 0 { - return nil - } - case *ast.SwitchStmt: - // Don't annotate an empty switch - creates a syntax error. - if n.Body == nil || len(n.Body.List) == 0 { - return nil - } - case *ast.TypeSwitchStmt: - // Don't annotate an empty type switch - creates a syntax error. - if n.Body == nil || len(n.Body.List) == 0 { - return nil - } - } - return f -} - -// unquote returns the unquoted string. -func unquote(s string) string { - t, err := strconv.Unquote(s) - if err != nil { - log.Fatalf("cover: improperly quoted string %q\n", s) - } - return t -} - -// addImport adds an import for the specified path, if one does not already exist, and returns -// the local package name. -func (f *File) addImport(path string) string { - // Does the package already import it? - for _, s := range f.astFile.Imports { - if unquote(s.Path.Value) == path { - if s.Name != nil { - return s.Name.Name - } - return filepath.Base(path) - } - } - newImport := &ast.ImportSpec{ - Name: ast.NewIdent(atomicPackageName), - Path: &ast.BasicLit{ - Kind: token.STRING, - Value: fmt.Sprintf("%q", path), - }, - } - impDecl := &ast.GenDecl{ - Tok: token.IMPORT, - Specs: []ast.Spec{ - newImport, - }, - } - // Make the new import the first Decl in the file. - astFile := f.astFile - astFile.Decls = append(astFile.Decls, nil) - copy(astFile.Decls[1:], astFile.Decls[0:]) - astFile.Decls[0] = impDecl - astFile.Imports = append(astFile.Imports, newImport) - - // Now refer to the package, just in case it ends up unused. - // That is, append to the end of the file the declaration - // var _ = _cover_atomic_.AddUint32 - reference := &ast.GenDecl{ - Tok: token.VAR, - Specs: []ast.Spec{ - &ast.ValueSpec{ - Names: []*ast.Ident{ - ast.NewIdent("_"), - }, - Values: []ast.Expr{ - &ast.SelectorExpr{ - X: ast.NewIdent(atomicPackageName), - Sel: ast.NewIdent("AddUint32"), - }, - }, - }, - }, - } - astFile.Decls = append(astFile.Decls, reference) - return atomicPackageName -} - -var slashslash = []byte("//") - -// initialComments returns the prefix of content containing only -// whitespace and line comments. Any +build directives must appear -// within this region. This approach is more reliable than using -// go/printer to print a modified AST containing comments. -// -func initialComments(content []byte) []byte { - // Derived from go/build.Context.shouldBuild. - end := 0 - p := content - for len(p) > 0 { - line := p - if i := bytes.IndexByte(line, '\n'); i >= 0 { - line, p = line[:i], p[i+1:] - } else { - p = p[len(p):] - } - line = bytes.TrimSpace(line) - if len(line) == 0 { // Blank line. - end = len(content) - len(p) - continue - } - if !bytes.HasPrefix(line, slashslash) { // Not comment line. - break - } - } - return content[:end] -} - -func annotate(name string) { - fset := token.NewFileSet() - content, err := ioutil.ReadFile(name) - if err != nil { - log.Fatalf("cover: %s: %s", name, err) - } - parsedFile, err := parser.ParseFile(fset, name, content, parser.ParseComments) - if err != nil { - log.Fatalf("cover: %s: %s", name, err) - } - parsedFile.Comments = trimComments(parsedFile, fset) - - file := &File{ - fset: fset, - name: name, - astFile: parsedFile, - } - if *mode == "atomic" { - file.atomicPkg = file.addImport(atomicPackagePath) - } - ast.Walk(file, file.astFile) - fd := os.Stdout - if *output != "" { - var err error - fd, err = os.Create(*output) - if err != nil { - log.Fatalf("cover: %s", err) - } - } - fd.Write(initialComments(content)) // Retain '// +build' directives. - file.print(fd) - // After printing the source tree, add some declarations for the counters etc. - // We could do this by adding to the tree, but it's easier just to print the text. - file.addVariables(fd) -} - -// trimComments drops all but the //go: comments, some of which are semantically important. -// We drop all others because they can appear in places that cause our counters -// to appear in syntactically incorrect places. //go: appears at the beginning of -// the line and is syntactically safe. -func trimComments(file *ast.File, fset *token.FileSet) []*ast.CommentGroup { - var comments []*ast.CommentGroup - for _, group := range file.Comments { - var list []*ast.Comment - for _, comment := range group.List { - if strings.HasPrefix(comment.Text, "//go:") && fset.Position(comment.Slash).Column == 1 { - list = append(list, comment) - } - } - if list != nil { - comments = append(comments, &ast.CommentGroup{List: list}) - } - } - return comments -} - -func (f *File) print(w io.Writer) { - printer.Fprint(w, f.fset, f.astFile) -} - -// intLiteral returns an ast.BasicLit representing the integer value. -func (f *File) intLiteral(i int) *ast.BasicLit { - node := &ast.BasicLit{ - Kind: token.INT, - Value: fmt.Sprint(i), - } - return node -} - -// index returns an ast.BasicLit representing the number of counters present. -func (f *File) index() *ast.BasicLit { - return f.intLiteral(len(f.blocks)) -} - -// setCounterStmt returns the expression: __count[23] = 1. -func setCounterStmt(f *File, counter ast.Expr) ast.Stmt { - return &ast.AssignStmt{ - Lhs: []ast.Expr{counter}, - Tok: token.ASSIGN, - Rhs: []ast.Expr{f.intLiteral(1)}, - } -} - -// incCounterStmt returns the expression: __count[23]++. -func incCounterStmt(f *File, counter ast.Expr) ast.Stmt { - return &ast.IncDecStmt{ - X: counter, - Tok: token.INC, - } -} - -// atomicCounterStmt returns the expression: atomic.AddUint32(&__count[23], 1) -func atomicCounterStmt(f *File, counter ast.Expr) ast.Stmt { - return &ast.ExprStmt{ - X: &ast.CallExpr{ - Fun: &ast.SelectorExpr{ - X: ast.NewIdent(f.atomicPkg), - Sel: ast.NewIdent("AddUint32"), - }, - Args: []ast.Expr{&ast.UnaryExpr{ - Op: token.AND, - X: counter, - }, - f.intLiteral(1), - }, - }, - } -} - -// newCounter creates a new counter expression of the appropriate form. -func (f *File) newCounter(start, end token.Pos, numStmt int) ast.Stmt { - counter := &ast.IndexExpr{ - X: &ast.SelectorExpr{ - X: ast.NewIdent(*varVar), - Sel: ast.NewIdent("Count"), - }, - Index: f.index(), - } - stmt := counterStmt(f, counter) - f.blocks = append(f.blocks, Block{start, end, numStmt}) - return stmt -} - -// addCounters takes a list of statements and adds counters to the beginning of -// each basic block at the top level of that list. For instance, given -// -// S1 -// if cond { -// S2 -// } -// S3 -// -// counters will be added before S1 and before S3. The block containing S2 -// will be visited in a separate call. -// TODO: Nested simple blocks get unnecessary (but correct) counters -func (f *File) addCounters(pos, blockEnd token.Pos, list []ast.Stmt, extendToClosingBrace bool) []ast.Stmt { - // Special case: make sure we add a counter to an empty block. Can't do this below - // or we will add a counter to an empty statement list after, say, a return statement. - if len(list) == 0 { - return []ast.Stmt{f.newCounter(pos, blockEnd, 0)} - } - // We have a block (statement list), but it may have several basic blocks due to the - // appearance of statements that affect the flow of control. - var newList []ast.Stmt - for { - // Find first statement that affects flow of control (break, continue, if, etc.). - // It will be the last statement of this basic block. - var last int - end := blockEnd - for last = 0; last < len(list); last++ { - end = f.statementBoundary(list[last]) - if f.endsBasicSourceBlock(list[last]) { - extendToClosingBrace = false // Block is broken up now. - last++ - break - } - } - if extendToClosingBrace { - end = blockEnd - } - if pos != end { // Can have no source to cover if e.g. blocks abut. - newList = append(newList, f.newCounter(pos, end, last)) - } - newList = append(newList, list[0:last]...) - list = list[last:] - if len(list) == 0 { - break - } - pos = list[0].Pos() - } - return newList -} - -// hasFuncLiteral reports the existence and position of the first func literal -// in the node, if any. If a func literal appears, it usually marks the termination -// of a basic block because the function body is itself a block. -// Therefore we draw a line at the start of the body of the first function literal we find. -// TODO: what if there's more than one? Probably doesn't matter much. -func hasFuncLiteral(n ast.Node) (bool, token.Pos) { - if n == nil { - return false, 0 - } - var literal funcLitFinder - ast.Walk(&literal, n) - return literal.found(), token.Pos(literal) -} - -// statementBoundary finds the location in s that terminates the current basic -// block in the source. -func (f *File) statementBoundary(s ast.Stmt) token.Pos { - // Control flow statements are easy. - switch s := s.(type) { - case *ast.BlockStmt: - // Treat blocks like basic blocks to avoid overlapping counters. - return s.Lbrace - case *ast.IfStmt: - found, pos := hasFuncLiteral(s.Init) - if found { - return pos - } - found, pos = hasFuncLiteral(s.Cond) - if found { - return pos - } - return s.Body.Lbrace - case *ast.ForStmt: - found, pos := hasFuncLiteral(s.Init) - if found { - return pos - } - found, pos = hasFuncLiteral(s.Cond) - if found { - return pos - } - found, pos = hasFuncLiteral(s.Post) - if found { - return pos - } - return s.Body.Lbrace - case *ast.LabeledStmt: - return f.statementBoundary(s.Stmt) - case *ast.RangeStmt: - found, pos := hasFuncLiteral(s.X) - if found { - return pos - } - return s.Body.Lbrace - case *ast.SwitchStmt: - found, pos := hasFuncLiteral(s.Init) - if found { - return pos - } - found, pos = hasFuncLiteral(s.Tag) - if found { - return pos - } - return s.Body.Lbrace - case *ast.SelectStmt: - return s.Body.Lbrace - case *ast.TypeSwitchStmt: - found, pos := hasFuncLiteral(s.Init) - if found { - return pos - } - return s.Body.Lbrace - } - // If not a control flow statement, it is a declaration, expression, call, etc. and it may have a function literal. - // If it does, that's tricky because we want to exclude the body of the function from this block. - // Draw a line at the start of the body of the first function literal we find. - // TODO: what if there's more than one? Probably doesn't matter much. - found, pos := hasFuncLiteral(s) - if found { - return pos - } - return s.End() -} - -// endsBasicSourceBlock reports whether s changes the flow of control: break, if, etc., -// or if it's just problematic, for instance contains a function literal, which will complicate -// accounting due to the block-within-an expression. -func (f *File) endsBasicSourceBlock(s ast.Stmt) bool { - switch s := s.(type) { - case *ast.BlockStmt: - // Treat blocks like basic blocks to avoid overlapping counters. - return true - case *ast.BranchStmt: - return true - case *ast.ForStmt: - return true - case *ast.IfStmt: - return true - case *ast.LabeledStmt: - return f.endsBasicSourceBlock(s.Stmt) - case *ast.RangeStmt: - return true - case *ast.SwitchStmt: - return true - case *ast.SelectStmt: - return true - case *ast.TypeSwitchStmt: - return true - case *ast.ExprStmt: - // Calls to panic change the flow. - // We really should verify that "panic" is the predefined function, - // but without type checking we can't and the likelihood of it being - // an actual problem is vanishingly small. - if call, ok := s.X.(*ast.CallExpr); ok { - if ident, ok := call.Fun.(*ast.Ident); ok && ident.Name == "panic" && len(call.Args) == 1 { - return true - } - } - } - found, _ := hasFuncLiteral(s) - return found -} - -// funcLitFinder implements the ast.Visitor pattern to find the location of any -// function literal in a subtree. -type funcLitFinder token.Pos - -func (f *funcLitFinder) Visit(node ast.Node) (w ast.Visitor) { - if f.found() { - return nil // Prune search. - } - switch n := node.(type) { - case *ast.FuncLit: - *f = funcLitFinder(n.Body.Lbrace) - return nil // Prune search. - } - return f -} - -func (f *funcLitFinder) found() bool { - return token.Pos(*f) != token.NoPos -} - -// Sort interface for []block1; used for self-check in addVariables. - -type block1 struct { - Block - index int -} - -type blockSlice []block1 - -func (b blockSlice) Len() int { return len(b) } -func (b blockSlice) Less(i, j int) bool { return b[i].startByte < b[j].startByte } -func (b blockSlice) Swap(i, j int) { b[i], b[j] = b[j], b[i] } - -// offset translates a token position into a 0-indexed byte offset. -func (f *File) offset(pos token.Pos) int { - return f.fset.Position(pos).Offset -} - -// addVariables adds to the end of the file the declarations to set up the counter and position variables. -func (f *File) addVariables(w io.Writer) { - // Self-check: Verify that the instrumented basic blocks are disjoint. - t := make([]block1, len(f.blocks)) - for i := range f.blocks { - t[i].Block = f.blocks[i] - t[i].index = i - } - sort.Sort(blockSlice(t)) - for i := 1; i < len(t); i++ { - if t[i-1].endByte > t[i].startByte { - fmt.Fprintf(os.Stderr, "cover: internal error: block %d overlaps block %d\n", t[i-1].index, t[i].index) - // Note: error message is in byte positions, not token positions. - fmt.Fprintf(os.Stderr, "\t%s:#%d,#%d %s:#%d,#%d\n", - f.name, f.offset(t[i-1].startByte), f.offset(t[i-1].endByte), - f.name, f.offset(t[i].startByte), f.offset(t[i].endByte)) - } - } - - // Declare the coverage struct as a package-level variable. - fmt.Fprintf(w, "\nvar %s = struct {\n", *varVar) - fmt.Fprintf(w, "\tCount [%d]uint32\n", len(f.blocks)) - fmt.Fprintf(w, "\tPos [3 * %d]uint32\n", len(f.blocks)) - fmt.Fprintf(w, "\tNumStmt [%d]uint16\n", len(f.blocks)) - fmt.Fprintf(w, "} {\n") - - // Initialize the position array field. - fmt.Fprintf(w, "\tPos: [3 * %d]uint32{\n", len(f.blocks)) - - // A nice long list of positions. Each position is encoded as follows to reduce size: - // - 32-bit starting line number - // - 32-bit ending line number - // - (16 bit ending column number << 16) | (16-bit starting column number). - for i, block := range f.blocks { - start := f.fset.Position(block.startByte) - end := f.fset.Position(block.endByte) - fmt.Fprintf(w, "\t\t%d, %d, %#x, // [%d]\n", start.Line, end.Line, (end.Column&0xFFFF)<<16|(start.Column&0xFFFF), i) - } - - // Close the position array. - fmt.Fprintf(w, "\t},\n") - - // Initialize the position array field. - fmt.Fprintf(w, "\tNumStmt: [%d]uint16{\n", len(f.blocks)) - - // A nice long list of statements-per-block, so we can give a conventional - // valuation of "percent covered". To save space, it's a 16-bit number, so we - // clamp it if it overflows - won't matter in practice. - for i, block := range f.blocks { - n := block.numStmt - if n > 1<<16-1 { - n = 1<<16 - 1 - } - fmt.Fprintf(w, "\t\t%d, // %d\n", n, i) - } - - // Close the statements-per-block array. - fmt.Fprintf(w, "\t},\n") - - // Close the struct initialization. - fmt.Fprintf(w, "}\n") -} diff --git a/vendor/golang.org/x/tools/cmd/cover/cover_test.go b/vendor/golang.org/x/tools/cmd/cover/cover_test.go deleted file mode 100644 index a18778b..0000000 --- a/vendor/golang.org/x/tools/cmd/cover/cover_test.go +++ /dev/null @@ -1,94 +0,0 @@ -// Copyright 2013 The Go Authors. All rights reserved. -// Use of this source code is governed by a BSD-style -// license that can be found in the LICENSE file. - -// No testdata on Android. - -// +build !android - -package main_test - -import ( - "bytes" - "fmt" - "io/ioutil" - "os" - "os/exec" - "path/filepath" - "testing" -) - -const ( - // Data directory, also the package directory for the test. - testdata = "testdata" - - // Binaries we compile. - testcover = "./testcover.exe" -) - -var ( - // Files we use. - testMain = filepath.Join(testdata, "main.go") - testTest = filepath.Join(testdata, "test.go") - coverInput = filepath.Join(testdata, "test_line.go") - coverOutput = filepath.Join(testdata, "test_cover.go") -) - -var debug = false // Keeps the rewritten files around if set. - -// Run this shell script, but do it in Go so it can be run by "go test". -// -// replace the word LINE with the line number < testdata/test.go > testdata/test_line.go -// go build -o ./testcover -// ./testcover -mode=count -var=CoverTest -o ./testdata/test_cover.go testdata/test_line.go -// go run ./testdata/main.go ./testdata/test.go -// -func TestCover(t *testing.T) { - // Read in the test file (testTest) and write it, with LINEs specified, to coverInput. - file, err := ioutil.ReadFile(testTest) - if err != nil { - t.Fatal(err) - } - lines := bytes.Split(file, []byte("\n")) - for i, line := range lines { - lines[i] = bytes.Replace(line, []byte("LINE"), []byte(fmt.Sprint(i+1)), -1) - } - err = ioutil.WriteFile(coverInput, bytes.Join(lines, []byte("\n")), 0666) - if err != nil { - t.Fatal(err) - } - - // defer removal of test_line.go - if !debug { - defer os.Remove(coverInput) - } - - // go build -o testcover - cmd := exec.Command("go", "build", "-o", testcover) - run(cmd, t) - - // defer removal of testcover - defer os.Remove(testcover) - - // ./testcover -mode=count -var=coverTest -o ./testdata/test_cover.go testdata/test_line.go - cmd = exec.Command(testcover, "-mode=count", "-var=coverTest", "-o", coverOutput, coverInput) - run(cmd, t) - - // defer removal of ./testdata/test_cover.go - if !debug { - defer os.Remove(coverOutput) - } - - // go run ./testdata/main.go ./testdata/test.go - cmd = exec.Command("go", "run", testMain, coverOutput) - run(cmd, t) -} - -func run(c *exec.Cmd, t *testing.T) { - c.Stdout = os.Stdout - c.Stderr = os.Stderr - err := c.Run() - if err != nil { - t.Fatal(err) - } -} diff --git a/vendor/golang.org/x/tools/cmd/cover/doc.go b/vendor/golang.org/x/tools/cmd/cover/doc.go deleted file mode 100644 index b74d5b3..0000000 --- a/vendor/golang.org/x/tools/cmd/cover/doc.go +++ /dev/null @@ -1,27 +0,0 @@ -// Copyright 2013 The Go Authors. All rights reserved. -// Use of this source code is governed by a BSD-style -// license that can be found in the LICENSE file. - -/* -Cover is a program for analyzing the coverage profiles generated by -'go test -coverprofile=cover.out'. - -Cover is also used by 'go test -cover' to rewrite the source code with -annotations to track which parts of each function are executed. -It operates on one Go source file at a time, computing approximate -basic block information by studying the source. It is thus more portable -than binary-rewriting coverage tools, but also a little less capable. -For instance, it does not probe inside && and || expressions, and can -be mildly confused by single statements with multiple function literals. - -For usage information, please see: - go help testflag - go tool cover -help - -No longer maintained: - -For Go releases 1.5 and later, this tool lives in the -standard repository. The code here is not maintained. - -*/ -package main // import "golang.org/x/tools/cmd/cover" diff --git a/vendor/golang.org/x/tools/cmd/cover/func.go b/vendor/golang.org/x/tools/cmd/cover/func.go deleted file mode 100644 index 41d9fce..0000000 --- a/vendor/golang.org/x/tools/cmd/cover/func.go +++ /dev/null @@ -1,166 +0,0 @@ -// Copyright 2013 The Go Authors. All rights reserved. -// Use of this source code is governed by a BSD-style -// license that can be found in the LICENSE file. - -// This file implements the visitor that computes the (line, column)-(line-column) range for each function. - -package main - -import ( - "bufio" - "fmt" - "go/ast" - "go/build" - "go/parser" - "go/token" - "os" - "path/filepath" - "text/tabwriter" - - "golang.org/x/tools/cover" -) - -// funcOutput takes two file names as arguments, a coverage profile to read as input and an output -// file to write ("" means to write to standard output). The function reads the profile and produces -// as output the coverage data broken down by function, like this: -// -// fmt/format.go:30: init 100.0% -// fmt/format.go:57: clearflags 100.0% -// ... -// fmt/scan.go:1046: doScan 100.0% -// fmt/scan.go:1075: advance 96.2% -// fmt/scan.go:1119: doScanf 96.8% -// total: (statements) 91.9% - -func funcOutput(profile, outputFile string) error { - profiles, err := cover.ParseProfiles(profile) - if err != nil { - return err - } - - var out *bufio.Writer - if outputFile == "" { - out = bufio.NewWriter(os.Stdout) - } else { - fd, err := os.Create(outputFile) - if err != nil { - return err - } - defer fd.Close() - out = bufio.NewWriter(fd) - } - defer out.Flush() - - tabber := tabwriter.NewWriter(out, 1, 8, 1, '\t', 0) - defer tabber.Flush() - - var total, covered int64 - for _, profile := range profiles { - fn := profile.FileName - file, err := findFile(fn) - if err != nil { - return err - } - funcs, err := findFuncs(file) - if err != nil { - return err - } - // Now match up functions and profile blocks. - for _, f := range funcs { - c, t := f.coverage(profile) - fmt.Fprintf(tabber, "%s:%d:\t%s\t%.1f%%\n", fn, f.startLine, f.name, 100.0*float64(c)/float64(t)) - total += t - covered += c - } - } - fmt.Fprintf(tabber, "total:\t(statements)\t%.1f%%\n", 100.0*float64(covered)/float64(total)) - - return nil -} - -// findFuncs parses the file and returns a slice of FuncExtent descriptors. -func findFuncs(name string) ([]*FuncExtent, error) { - fset := token.NewFileSet() - parsedFile, err := parser.ParseFile(fset, name, nil, 0) - if err != nil { - return nil, err - } - visitor := &FuncVisitor{ - fset: fset, - name: name, - astFile: parsedFile, - } - ast.Walk(visitor, visitor.astFile) - return visitor.funcs, nil -} - -// FuncExtent describes a function's extent in the source by file and position. -type FuncExtent struct { - name string - startLine int - startCol int - endLine int - endCol int -} - -// FuncVisitor implements the visitor that builds the function position list for a file. -type FuncVisitor struct { - fset *token.FileSet - name string // Name of file. - astFile *ast.File - funcs []*FuncExtent -} - -// Visit implements the ast.Visitor interface. -func (v *FuncVisitor) Visit(node ast.Node) ast.Visitor { - switch n := node.(type) { - case *ast.FuncDecl: - start := v.fset.Position(n.Pos()) - end := v.fset.Position(n.End()) - fe := &FuncExtent{ - name: n.Name.Name, - startLine: start.Line, - startCol: start.Column, - endLine: end.Line, - endCol: end.Column, - } - v.funcs = append(v.funcs, fe) - } - return v -} - -// coverage returns the fraction of the statements in the function that were covered, as a numerator and denominator. -func (f *FuncExtent) coverage(profile *cover.Profile) (num, den int64) { - // We could avoid making this n^2 overall by doing a single scan and annotating the functions, - // but the sizes of the data structures is never very large and the scan is almost instantaneous. - var covered, total int64 - // The blocks are sorted, so we can stop counting as soon as we reach the end of the relevant block. - for _, b := range profile.Blocks { - if b.StartLine > f.endLine || (b.StartLine == f.endLine && b.StartCol >= f.endCol) { - // Past the end of the function. - break - } - if b.EndLine < f.startLine || (b.EndLine == f.startLine && b.EndCol <= f.startCol) { - // Before the beginning of the function - continue - } - total += int64(b.NumStmt) - if b.Count > 0 { - covered += int64(b.NumStmt) - } - } - if total == 0 { - total = 1 // Avoid zero denominator. - } - return covered, total -} - -// findFile finds the location of the named file in GOROOT, GOPATH etc. -func findFile(file string) (string, error) { - dir, file := filepath.Split(file) - pkg, err := build.Import(dir, ".", build.FindOnly) - if err != nil { - return "", fmt.Errorf("can't find %q: %v", file, err) - } - return filepath.Join(pkg.Dir, file), nil -} diff --git a/vendor/golang.org/x/tools/cmd/cover/html.go b/vendor/golang.org/x/tools/cmd/cover/html.go deleted file mode 100644 index ef50e2b..0000000 --- a/vendor/golang.org/x/tools/cmd/cover/html.go +++ /dev/null @@ -1,284 +0,0 @@ -// Copyright 2013 The Go Authors. All rights reserved. -// Use of this source code is governed by a BSD-style -// license that can be found in the LICENSE file. - -package main - -import ( - "bufio" - "bytes" - "fmt" - "html/template" - "io" - "io/ioutil" - "math" - "os" - "os/exec" - "path/filepath" - "runtime" - - "golang.org/x/tools/cover" -) - -// htmlOutput reads the profile data from profile and generates an HTML -// coverage report, writing it to outfile. If outfile is empty, -// it writes the report to a temporary file and opens it in a web browser. -func htmlOutput(profile, outfile string) error { - profiles, err := cover.ParseProfiles(profile) - if err != nil { - return err - } - - var d templateData - - for _, profile := range profiles { - fn := profile.FileName - if profile.Mode == "set" { - d.Set = true - } - file, err := findFile(fn) - if err != nil { - return err - } - src, err := ioutil.ReadFile(file) - if err != nil { - return fmt.Errorf("can't read %q: %v", fn, err) - } - var buf bytes.Buffer - err = htmlGen(&buf, src, profile.Boundaries(src)) - if err != nil { - return err - } - d.Files = append(d.Files, &templateFile{ - Name: fn, - Body: template.HTML(buf.String()), - Coverage: percentCovered(profile), - }) - } - - var out *os.File - if outfile == "" { - var dir string - dir, err = ioutil.TempDir("", "cover") - if err != nil { - return err - } - out, err = os.Create(filepath.Join(dir, "coverage.html")) - } else { - out, err = os.Create(outfile) - } - if err != nil { - return err - } - err = htmlTemplate.Execute(out, d) - if err == nil { - err = out.Close() - } - if err != nil { - return err - } - - if outfile == "" { - if !startBrowser("file://" + out.Name()) { - fmt.Fprintf(os.Stderr, "HTML output written to %s\n", out.Name()) - } - } - - return nil -} - -// percentCovered returns, as a percentage, the fraction of the statements in -// the profile covered by the test run. -// In effect, it reports the coverage of a given source file. -func percentCovered(p *cover.Profile) float64 { - var total, covered int64 - for _, b := range p.Blocks { - total += int64(b.NumStmt) - if b.Count > 0 { - covered += int64(b.NumStmt) - } - } - if total == 0 { - return 0 - } - return float64(covered) / float64(total) * 100 -} - -// htmlGen generates an HTML coverage report with the provided filename, -// source code, and tokens, and writes it to the given Writer. -func htmlGen(w io.Writer, src []byte, boundaries []cover.Boundary) error { - dst := bufio.NewWriter(w) - for i := range src { - for len(boundaries) > 0 && boundaries[0].Offset == i { - b := boundaries[0] - if b.Start { - n := 0 - if b.Count > 0 { - n = int(math.Floor(b.Norm*9)) + 1 - } - fmt.Fprintf(dst, ``, n, b.Count) - } else { - dst.WriteString("") - } - boundaries = boundaries[1:] - } - switch b := src[i]; b { - case '>': - dst.WriteString(">") - case '<': - dst.WriteString("<") - case '&': - dst.WriteString("&") - case '\t': - dst.WriteString(" ") - default: - dst.WriteByte(b) - } - } - return dst.Flush() -} - -// startBrowser tries to open the URL in a browser -// and reports whether it succeeds. -func startBrowser(url string) bool { - // try to start the browser - var args []string - switch runtime.GOOS { - case "darwin": - args = []string{"open"} - case "windows": - args = []string{"cmd", "/c", "start"} - default: - args = []string{"xdg-open"} - } - cmd := exec.Command(args[0], append(args[1:], url)...) - return cmd.Start() == nil -} - -// rgb returns an rgb value for the specified coverage value -// between 0 (no coverage) and 10 (max coverage). -func rgb(n int) string { - if n == 0 { - return "rgb(192, 0, 0)" // Red - } - // Gradient from gray to green. - r := 128 - 12*(n-1) - g := 128 + 12*(n-1) - b := 128 + 3*(n-1) - return fmt.Sprintf("rgb(%v, %v, %v)", r, g, b) -} - -// colors generates the CSS rules for coverage colors. -func colors() template.CSS { - var buf bytes.Buffer - for i := 0; i < 11; i++ { - fmt.Fprintf(&buf, ".cov%v { color: %v }\n", i, rgb(i)) - } - return template.CSS(buf.String()) -} - -var htmlTemplate = template.Must(template.New("html").Funcs(template.FuncMap{ - "colors": colors, -}).Parse(tmplHTML)) - -type templateData struct { - Files []*templateFile - Set bool -} - -type templateFile struct { - Name string - Body template.HTML - Coverage float64 -} - -const tmplHTML = ` - - - - - - - -
- -
- not tracked - {{if .Set}} - not covered - covered - {{else}} - no coverage - low coverage - * - * - * - * - * - * - * - * - high coverage - {{end}} -
-
-
- {{range $i, $f := .Files}} -
{{$f.Body}}
- {{end}} -
- - - -` diff --git a/vendor/golang.org/x/tools/cmd/cover/testdata/main.go b/vendor/golang.org/x/tools/cmd/cover/testdata/main.go deleted file mode 100644 index 6ed39c4..0000000 --- a/vendor/golang.org/x/tools/cmd/cover/testdata/main.go +++ /dev/null @@ -1,112 +0,0 @@ -// Copyright 2013 The Go Authors. All rights reserved. -// Use of this source code is governed by a BSD-style -// license that can be found in the LICENSE file. - -// Test runner for coverage test. This file is not coverage-annotated; test.go is. -// It knows the coverage counter is called "coverTest". - -package main - -import ( - "fmt" - "os" -) - -func main() { - testAll() - verify() -} - -type block struct { - count uint32 - line uint32 -} - -var counters = make(map[block]bool) - -// check records the location and expected value for a counter. -func check(line, count uint32) { - b := block{ - count, - line, - } - counters[b] = true -} - -// checkVal is a version of check that returns its extra argument, -// so it can be used in conditionals. -func checkVal(line, count uint32, val int) int { - b := block{ - count, - line, - } - counters[b] = true - return val -} - -var PASS = true - -// verify checks the expected counts against the actual. It runs after the test has completed. -func verify() { - for b := range counters { - got, index := count(b.line) - if b.count == anything && got != 0 { - got = anything - } - if got != b.count { - fmt.Fprintf(os.Stderr, "test_go:%d expected count %d got %d [counter %d]\n", b.line, b.count, got, index) - PASS = false - } - } - verifyPanic() - if !PASS { - fmt.Fprintf(os.Stderr, "FAIL\n") - os.Exit(2) - } -} - -// verifyPanic is a special check for the known counter that should be -// after the panic call in testPanic. -func verifyPanic() { - if coverTest.Count[panicIndex-1] != 1 { - // Sanity check for test before panic. - fmt.Fprintf(os.Stderr, "bad before panic") - PASS = false - } - if coverTest.Count[panicIndex] != 0 { - fmt.Fprintf(os.Stderr, "bad at panic: %d should be 0\n", coverTest.Count[panicIndex]) - PASS = false - } - if coverTest.Count[panicIndex+1] != 1 { - fmt.Fprintf(os.Stderr, "bad after panic") - PASS = false - } -} - -// count returns the count and index for the counter at the specified line. -func count(line uint32) (uint32, int) { - // Linear search is fine. Choose perfect fit over approximate. - // We can have a closing brace for a range on the same line as a condition for an "else if" - // and we don't want that brace to steal the count for the condition on the "if". - // Therefore we test for a perfect (lo==line && hi==line) match, but if we can't - // find that we take the first imperfect match. - index := -1 - indexLo := uint32(1e9) - for i := range coverTest.Count { - lo, hi := coverTest.Pos[3*i], coverTest.Pos[3*i+1] - if lo == line && line == hi { - return coverTest.Count[i], i - } - // Choose the earliest match (the counters are in unpredictable order). - if lo <= line && line <= hi && indexLo > lo { - index = i - indexLo = lo - } - } - if index == -1 { - fmt.Fprintln(os.Stderr, "cover_test: no counter for line", line) - PASS = false - return 0, 0 - } - return coverTest.Count[index], index -} diff --git a/vendor/golang.org/x/tools/cmd/cover/testdata/test.go b/vendor/golang.org/x/tools/cmd/cover/testdata/test.go deleted file mode 100644 index 9013950..0000000 --- a/vendor/golang.org/x/tools/cmd/cover/testdata/test.go +++ /dev/null @@ -1,218 +0,0 @@ -// Copyright 2013 The Go Authors. All rights reserved. -// Use of this source code is governed by a BSD-style -// license that can be found in the LICENSE file. - -// This program is processed by the cover command, and then testAll is called. -// The test driver in main.go can then compare the coverage statistics with expectation. - -// The word LINE is replaced by the line number in this file. When the file is executed, -// the coverage processing has changed the line numbers, so we can't use runtime.Caller. - -package main - -const anything = 1e9 // Just some unlikely value that means "we got here, don't care how often" - -func testAll() { - testSimple() - testBlockRun() - testIf() - testFor() - testRange() - testSwitch() - testTypeSwitch() - testSelect1() - testSelect2() - testPanic() - testEmptySwitches() -} - -// The indexes of the counters in testPanic are known to main.go -const panicIndex = 3 - -// This test appears first because the index of its counters is known to main.go -func testPanic() { - defer func() { - recover() - }() - check(LINE, 1) - panic("should not get next line") - check(LINE, 0) // this is GoCover.Count[panicIndex] - // The next counter is in testSimple and it will be non-zero. - // If the panic above does not trigger a counter, the test will fail - // because GoCover.Count[panicIndex] will be the one in testSimple. -} - -func testSimple() { - check(LINE, 1) -} - -func testIf() { - if true { - check(LINE, 1) - } else { - check(LINE, 0) - } - if false { - check(LINE, 0) - } else { - check(LINE, 1) - } - for i := 0; i < 3; i++ { - if checkVal(LINE, 3, i) <= 2 { - check(LINE, 3) - } - if checkVal(LINE, 3, i) <= 1 { - check(LINE, 2) - } - if checkVal(LINE, 3, i) <= 0 { - check(LINE, 1) - } - } - for i := 0; i < 3; i++ { - if checkVal(LINE, 3, i) <= 1 { - check(LINE, 2) - } else { - check(LINE, 1) - } - } - for i := 0; i < 3; i++ { - if checkVal(LINE, 3, i) <= 0 { - check(LINE, 1) - } else if checkVal(LINE, 2, i) <= 1 { - check(LINE, 1) - } else if checkVal(LINE, 1, i) <= 2 { - check(LINE, 1) - } else if checkVal(LINE, 0, i) <= 3 { - check(LINE, 0) - } - } - if func(a, b int) bool { return a < b }(3, 4) { - check(LINE, 1) - } -} - -func testFor() { - for i := 0; i < 10; func() { i++; check(LINE, 10) }() { - check(LINE, 10) - } -} - -func testRange() { - for _, f := range []func(){ - func() { check(LINE, 1) }, - } { - f() - check(LINE, 1) - } -} - -func testBlockRun() { - check(LINE, 1) - { - check(LINE, 1) - } - { - check(LINE, 1) - } - check(LINE, 1) - { - check(LINE, 1) - } - { - check(LINE, 1) - } - check(LINE, 1) -} - -func testSwitch() { - for i := 0; i < 5; func() { i++; check(LINE, 5) }() { - switch i { - case 0: - check(LINE, 1) - case 1: - check(LINE, 1) - case 2: - check(LINE, 1) - default: - check(LINE, 2) - } - } -} - -func testTypeSwitch() { - var x = []interface{}{1, 2.0, "hi"} - for _, v := range x { - switch func() { check(LINE, 3) }(); v.(type) { - case int: - check(LINE, 1) - case float64: - check(LINE, 1) - case string: - check(LINE, 1) - case complex128: - check(LINE, 0) - default: - check(LINE, 0) - } - } -} - -func testSelect1() { - c := make(chan int) - go func() { - for i := 0; i < 1000; i++ { - c <- i - } - }() - for { - select { - case <-c: - check(LINE, anything) - case <-c: - check(LINE, anything) - default: - check(LINE, 1) - return - } - } -} - -func testSelect2() { - c1 := make(chan int, 1000) - c2 := make(chan int, 1000) - for i := 0; i < 1000; i++ { - c1 <- i - c2 <- i - } - for { - select { - case <-c1: - check(LINE, 1000) - case <-c2: - check(LINE, 1000) - default: - check(LINE, 1) - return - } - } -} - -// Empty control statements created syntax errors. This function -// is here just to be sure that those are handled correctly now. -func testEmptySwitches() { - check(LINE, 1) - switch 3 { - } - check(LINE, 1) - switch i := (interface{})(3).(int); i { - } - check(LINE, 1) - c := make(chan int) - go func() { - check(LINE, 1) - c <- 1 - select {} - }() - <-c - check(LINE, 1) -} diff --git a/vendor/golang.org/x/tools/cmd/digraph/digraph.go b/vendor/golang.org/x/tools/cmd/digraph/digraph.go deleted file mode 100644 index 3ad2950..0000000 --- a/vendor/golang.org/x/tools/cmd/digraph/digraph.go +++ /dev/null @@ -1,540 +0,0 @@ -// The digraph command performs queries over unlabelled directed graphs -// represented in text form. It is intended to integrate nicely with -// typical UNIX command pipelines. -// -// Since directed graphs (import graphs, reference graphs, call graphs, -// etc) often arise during software tool development and debugging, this -// command is included in the go.tools repository. -// -// TODO(adonovan): -// - support input files other than stdin -// - suport alternative formats (AT&T GraphViz, CSV, etc), -// a comment syntax, etc. -// - allow queries to nest, like Blaze query language. -// -package main // import "golang.org/x/tools/cmd/digraph" - -import ( - "bufio" - "bytes" - "errors" - "flag" - "fmt" - "io" - "os" - "sort" - "strconv" - "unicode" - "unicode/utf8" -) - -const Usage = `digraph: queries over directed graphs in text form. - -Graph format: - - Each line contains zero or more words. Words are separated by - unquoted whitespace; words may contain Go-style double-quoted portions, - allowing spaces and other characters to be expressed. - - Each field declares a node, and if there are more than one, - an edge from the first to each subsequent one. - The graph is provided on the standard input. - - For instance, the following (acyclic) graph specifies a partial order - among the subtasks of getting dressed: - - % cat clothes.txt - socks shoes - "boxer shorts" pants - pants belt shoes - shirt tie sweater - sweater jacket - hat - - The line "shirt tie sweater" indicates the two edges shirt -> tie and - shirt -> sweater, not shirt -> tie -> sweater. - -Supported queries: - - nodes - the set of all nodes - degree - the in-degree and out-degree of each node. - preds

VzFW9I9rvRb7{36Zm>!Y`z#Jct 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